Bun 1.4 ತನ್ನಲ್ಲೇ ಅಂತರ್ಗತವಾಗಿರುವ WebView API ನೊಂದಿಗೆ ಬಿಡುಗಡೆಯಾಗಿದ್ದು, ಇದು Playwright ಅಥವಾ Puppeteer ಬಳಸುವ ಸಾಮಾನ್ಯ RAM ಪ್ರಮಾಣಕ್ಕಿಂತ ಸುಮಾರು ಮೂರನೇ ಒಂದು ಭಾಗದಷ್ಟು ಕಡಿಮೆ ಬಳಕೆಯಲ್ಲಿ headless Chromium ಅಥವಾ WebKit ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಇದು AI-ಚಾಲಿತ ಸ್ಕ್ರೇಪಿಂಗ್ (scraping) ಮತ್ತು ಬ್ರೌಸರ್ ಆಟೊಮೇಷನ್ಗಾಗಿ (automation) ಡೆವಲಪರ್ಗಳಿಗೆ ಒಂದು ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯನ್ನು ನೀಡುತ್ತದೆ.
Bun 1.4 ಏನನ್ನು ಸೇರಿಸುತ್ತದೆ
ಈ ಬಿಡುಗಡೆಯ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ Bun.WebView. ಇದು Bun runtime ನಿಂದ ನೇರವಾಗಿ Chrome DevTools Protocol ಅನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಡೆವಲಪರ್ಗಳು ಯಾವುದೇ ಬಾಹ್ಯ npm ಪ್ಯಾಕೇಜ್ಗಳು ಅಥವಾ ಡ್ರೈವರ್ ಬೈನರಿಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡದೆ headless ಬ್ರೌಸರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಈ API macOS ನಲ್ಲಿ WebKit backend ಅನ್ನು ಸಹ ನೀಡುತ್ತದೆ, ಇದು ಬಳಕೆದಾರರು ತಮ್ಮ ಕೆಲಸದ ಅಗತ್ಯಕ್ಕೆ ತಕ್ಕಂತೆ ಇಂಜಿನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಮೆಮೊರಿ ಉಳಿತಾಯ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ
Playwright ಅಥವಾ Puppeteer ಮೂಲಕ ಪ್ರಾರಂಭಿಸಲಾದ ಪೂರ್ಣ Chromium ಇನ್ಸ್ಟೆನ್ಸ್, ಸಾಮಾನ್ಯ ಪೇಜ್ಗಳಿಗೂ ಸಹ ನಿಯಮಿತವಾಗಿ 500 MB ಗಿಂತ ಹೆಚ್ಚು resident memory ಅನ್ನು ಬಳಸುತ್ತದೆ. ಆದರೆ Bun.WebView 'ಸಂಕೀರ್ಣ ಪೇಜ್ಗಳಿಗೂ' (complex pages) ಕೇವಲ 192 MB-256 MB ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಬಳಕೆಯನ್ನು ವರದಿ ಮಾಡುತ್ತದೆ. ಈ ಕಡಿತವು runtime ನೊಂದಿಗೆ ಹೊಂದಿರುವ ಗಟ್ಟಿಯಾದ ಏಕೀಕರಣ (integration) ಮತ್ತು ಸಾಮಾನ್ಯ ಆಟೊಮೇಷನ್ ಪರಿಕರಗಳು ಲೋಡ್ ಮಾಡುವ ಅನೇಕ ಭಾರೀ ಘಟಕಗಳನ್ನು (heavyweight components) ಬಿಟ್ಟುಕೊಡುವ headless mode ನಲ್ಲಿ ಬ್ರೌಸರ್ ಅನ್ನು ರನ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯದಿಂದಾಗಿ ಸಾಧ್ಯವಾಗಿದೆ.
ನೈಜ-ಪ್ರಪಂಚದ ಪರೀಕ್ಷೆ: Claude Code ಗಾಗಿ ಒಂದು ಸಣ್ಣ JSON API
Simon Willison ಅವರು ಒಂದು proof-of-concept ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದಾರೆ, ಇದು Claude Code—ಕೋಡ್ ಅನ್ನು ರಚಿಸಬಲ್ಲ ಆದರೆ ಕ್ಲಿಕ್ ಮಾಡಲು ಅಥವಾ JavaScript ಅನ್ನು ರನ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಒಂದು LLM—ಪೇಜ್ ಅನ್ನು ಸ್ಕ್ರೇಪ್ ಮಾಡಲು ಮತ್ತು ಯಾವುದೇ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಸೆಟಪ್ನಲ್ಲಿ ಒಂದು ಕನಿಷ್ಠ TypeScript ಸರ್ವರ್ ಇರುತ್ತದೆ, ಅದು:
- ಟಾರ್ಗೆಟ್ URL ಮತ್ತು ಐಚ್ಛಿಕ JavaScript ನೊಂದಿಗೆ ವಿನಂತಿಯನ್ನು (request) ಸ್ವೀಕರಿಸುತ್ತದೆ.
new WebView({ url })ಅನ್ನು ಇನ್ಸ್ಟಾಂಟಿಯೇಟ್ ಮಾಡುತ್ತದೆ.- ಪೇಜ್ ಒಳಗಿನ ಕೋಡ್ ಅನ್ನು ರನ್ ಮಾಡಲು
evaluate(script)ಅನ್ನು ಕರೆಯುತ್ತದೆ. - ಫಲಿತಾಂಶವನ್ನು JSON ಆಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
ಈ ಸಂಪೂರ್ಣ ಸೇವೆಯು ಒಂದು ಸಣ್ಣ ಕಂಟೇನರ್ನಲ್ಲಿ ರನ್ ಆಗುತ್ತದೆ, ಇದು ಸರಳ ಸ್ಕ್ರೇಪಿಂಗ್ ಕಾರ್ಯಗಳಿಗಾಗಿ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ 1 GB ಕಂಟೇನರ್ಗಳಿಗಿಂತ ಬಹಳ ಕಡಿಮೆ ಗಾತ್ರದ್ದಾಗಿದೆ. ಕೆಳಗಿನ ಕೋಡ್ ಸ್ನಿಪ್ಪೆಟ್ ಅದರ ಮುಖ್ಯ ತರ್ಕವನ್ನು (core logic) ತೋರಿಸುತ್ತದೆ:
import { WebView } from "bun";
const server = Bun.serve({
port: 3000,
async fetch(req) {
const url = new URL(req.url);
if (url.pathname === "/scrape") {
const target = url.searchParams.get("url");
const script = url.searchParams.get("script") || "return document.title";
const wv = new WebView({ url: target });
const result = await wv.evaluate(script);
return Response.json({ result });
}
return new Response("Not found", { status: 404 });
},
});
Claude Code ಈಗ /scrape?url=…&script=… ಎಂದು ವಿನಂತಿಸಬಹುದು ಮತ್ತು ರೆಂಡರ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಪಡೆಯಬಹುದು, ಇದು ಪೂರ್ಣ ಬ್ರೌಸರ್ ಸ್ಟ್ಯಾಕ್ನ ಹೊರೆಯಿಲ್ಲದೆ ಅದರ ಸಾಮರ್ಥ್ಯವನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ವಿಸ್ತರಿಸುತ್ತದೆ.
Bun.WebView ಯಾವಾಗ ಸೂಕ್ತವಾಗುತ್ತದೆ
- ಕಡಿಮೆ ಮೆಮೊರಿ ಪರಿಸರಗಳು (Low-memory environments) – RAM ಅತ್ಯಗತ್ಯವಾಗಿರುವ edge ಅಥವಾ serverless ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗೆ ಇದು ಸೂಕ್ತವಾಗಿದೆ.
- ವೆಚ್ಚ-ಸೂಕ್ಷ್ಮ ಪೈಪ್ಲೈನ್ಗಳು (Cost-sensitive pipelines) – LLM ಏಜೆಂಟ್ ಪಕ್ಕದಲ್ಲಿ ಲಘು ತೂಕದ (lightweight) ಕಂಟೇನರ್ ಅನ್ನು ರನ್ ಮಾಡುವುದರಿಂದ ಮೂಲಸೌಕರ್ಯ ವೆಚ್ಚಗಳು ಕಡಿಮೆಯಾಗುತ್ತವೆ.
- ಸರಳ ಆಟೊಮೇಷನ್ (Simple automation) – ಶೀರ್ಷಿಕೆ ಹೊರತೆಗೆಯುವಿಕೆ (title extraction), ಸ್ಕ್ರೀನ್ಶಾಟ್ ತೆಗೆಯುವುದು ಅಥವಾ ಸಿಂಗಲ್-ಪೇಜ್ ಫಾರ್ಮ್ ಸಬ್ಮಿಷನ್ನಂತಹ ಕಾರ್ಯಗಳು ತಕ್ಷಣವೇ ಕೆಲಸ ಮಾಡುತ್ತವೆ.
ಈ API ದೃಶ್ಯ ಪರೀಕ್ಷೆಯನ್ನು (visual testing - ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳನ್ನು ಕ್ಯಾಪ್ಚರ್ ಮಾಡುವುದು ಮತ್ತು ವ್ಯತ್ಯಾಸಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು) ಮತ್ತು ಮಲ್ಟಿ-ಸ್ಟೆಪ್ ಫಾರ್ಮ್ ಫಿಲ್ಲಿಂಗ್ ಅನ್ನು ಸಹ ಬೆಂಬಲಿಸುತ್ತದೆ, ಇದು ಭಾರೀ ಫ್ರೇಮ್ವರ್ಕ್ಗಳನ್ನು ಬಳಸದೆ ಕೇವಲ ಅಗತ್ಯವಿರುವ ಬ್ರೌಸರ್ ಶಕ್ತಿಯನ್ನು ಬಯಸುವ ಡೆವಲಪರ್ಗಳಿಗೆ ಒಂದು ಬಹುಮುಖಿ ಸಾಧನವಾಗಿದೆ.
ಗಮನಿಸಬೇಕಾದ ಮಿತಿಗಳು (Caveats)
Bun.WebView ಒಂದು ಹೊಸ ಸೇರ್ಪಡೆಯಾಗಿದ್ದು, ಆದ್ದರಿಂದ ಇದರ ವೈಶಿಷ್ಟ್ಯಗಳು Playwright ಮತ್ತು Puppeteer ನ ಪರಿಪೂರ್ಣ ಪರಿಸರ ವ್ಯವಸ್ಥೆಗಳಿಗಿಂತ ಸ್ವಲ್ಪ ಹಿಂದೆ ಇರಬಹುದು. ಅಡ್ವಾನ್ಸ್ಡ್ ಬಳಕೆಗಳು—ನೆಟ್ವರ್ಕ್ ಇಂಟರ್ಸೆಪ್ಶನ್, ಮಲ್ಟಿ-ಬ್ರೌಸರ್ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ಅಥವಾ ವ್ಯಾಪಕವಾದ ಪ್ಲಗಿನ್ ಬೆಂಬಲ—ಇನ್ನೂ ಹಳೆಯ ಪರಿಕರಗಳ ಅಗತ್ಯವನ್ನು ಹೊಂದಿರಬಹುದು. ಡಿಬಗ್ ಮಾಡುವುದು ಕೂಡ ಹೆಚ್ಚು ಮ್ಯಾನುಯಲ್ ಆಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಬಿಲ್ಟ್-ಇನ್ API ಇನ್ನೂ ದೊಡ್ಡ ಫ್ರೇಮ್ವರ್ಕ್ಗಳಲ್ಲಿರುವಂತೆ ಸಮೃದ್ಧ ಇನ್ಸ್ಪೆಕ್ಟರ್ UI ಅನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.
ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು
Bun.WebView ತನ್ನ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಎಷ್ಟು ವೇಗವಾಗಿ ವಿಸ್ತರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಸಮುದಾಯದ ಪ್ರತಿಕ್ರಿಯೆಯೇ ನಿರ್ಧರಿಸುತ್ತದೆ. ಆರಂಭಿಕ ಬಳಕೆದಾರರು ವ್ರ್ಯಾಪರ್ಗಳು (wrappers), ಟೆಸ್ಟಿಂಗ್ ಯುಟಿಲಿಟಿಗಳು ಮತ್ತು ಇಂಟಿಗ್ರೇಷನ್ ಗೈಡ್ಗಳನ್ನು ಪ್ರಕಟಿಸುವ ಸಾಧ್ಯತೆಯಿದೆ, ಇದು ಸ್ಥಾಪಿತ ಆಟೊಮೇಷನ್ ಸೂಟ್ಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು. ಕಾರ್ಯಕ್ಷಮತೆಯ ಸುಧಾರಣೆಗಳು, ಹೆಚ್ಚುವರಿ ಬ್ರೌಸರ್ ಇಂಜಿನ್ ಆಯ್ಕೆಗಳು ಮತ್ತು API ವ್ಯಾಪಕವಾಗಿ ಬಳಕೆಯಾದಂತೆ ಅಗತ್ಯವಾಗುವ ಯಾವುದೇ ಭದ್ರತಾ ಸುಧಾರಣೆಗಳಿಗಾಗಿ Bun ಬಿಡುಗಡೆಯ ಟಿಪ್ಪಣಿಗಳನ್ನು (release notes) ಗಮನಿಸುತ್ತಿರಿ.
ಸಾರಾಂಶ (Bottom line): Bun 1.4 ರ WebView ಡೆವಲಪರ್ಗಳಿಗೆ ಹೆಡ್ಲೆಸ್ ಬ್ರೌಸಿಂಗ್ಗಾಗಿ ಲಘು ಮತ್ತು ಕಡಿಮೆ ಮೆಮೊರಿ ಬಳಸುವ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ, ಇದು ಕೆಲಸದ ಹೊರೆ ಅದರ ಪ್ರಸ್ತುತ ವೈಶಿಷ್ಟ್ಯಗಳ ವ್ಯಾಪ್ತಿಗೆ ಹೊಂದಿಕೆಯಾಗುವಲ್ಲಿ, ಅಗ್ಗದ ಮತ್ತು ಕಂಟೇನರ್-ಸ್ನೇಹಿ AI-ಚಾಲಿತ ಸ್ಕ್ರೇಪಿಂಗ್ ಮತ್ತು ಆಟೊಮೇಷನ್ಗೆ ದಾರಿ ಮಾಡಿಕೊಡುತ್ತದೆ.
