Bun 1.3.12
Bun 1.3.12 がリリースされた。ネイティブのヘッドレスブラウザ自動化として Bun.WebView が追加され、WebKit(macOS の WKWebView)と Chrome/Chromium(DevTools Protocol)の2つのバックエンドを同じ API で扱える。加えて、bun ./file.md で Markdown を ANSI 文字装飾として標準出力に描画できるようになり、Bun.markdown.ansi() によりプログラムからも利用できる。
Bun.WebView は次のように利用する。
ts
await using view = new Bun.WebView({ width: 800, height: 600 });
await view.navigate("https://bun.sh");
await view.click("a[href='/docs']");
await view.scroll(0, 400);
await view.scrollTo("#install");
const title = await view.evaluate("document.title");
const jpeg = await view.screenshot({ format: "jpeg", quality: 90 });
await Bun.write("page.jpg", jpeg);ts
const out = Bun.markdown.ansi("# Hello\n\n**bold** and *italic*\n", {
hyperlinks: true,
});
process.stdout.write(out);主な変更点は次のとおり。
Bun.WebViewの追加。クリックやスクロールなどを OS レベルの入力イベントとして送出し、セレクタ指定の操作は actionability を待機するbun ./file.mdの追加とBun.markdown.ansi()の提供。色付けの無効化、ハイパーリンク、折り返し幅、Kitty Graphics Protocol によるインライン画像などをオプションで制御できるBun.cron()の in-process コールバックが追加され、プロセス内で状態を共有しながら cron スケジュール実行できる(非重複実行、UTC 基準などの挙動)- unix domain socket の挙動を Node.js/libuv に合わせ、既存ソケットへの bind は
EADDRINUSE、close でソケットファイルを自動削除する URLPattern、Bun.stripANSI/Bun.stringWidth、bun build、Bun.Glob.scan()などの性能改善と、多数の互換性修正・バグ修正