Bun 1.4 完成 Rust 重寫,內建無頭瀏覽器自動化與影像處理
bun.sh · 2026-08-20
Bun 1.4 於 2026-08-20 發布,是 Bun 執行環境從 Zig 全面改寫成 Rust 之後的第一個正式版本;官方數字顯示 Node.js 相容測試新增 1,517 項通過,累計修掉超過 2,900 個相容性問題。
核心改動
這個版本把過去仰賴外部套件的功能收進 runtime 內建 API。Bun.WebView 提供無頭瀏覽器自動化:macOS 用系統 WebKit,其餘平台可透過 CDP 驅動 Chrome、Chromium 或 Edge,用來取代部分 Puppeteer、Playwright 的使用場景。Bun.Image 內建 JPEG、PNG、WebP、HEIC、AVIF 等格式的解碼、縮放與編碼,官方測試較 sharp 快 1.38 倍且不需要額外安裝。搭配新的 Bun.markdown、Bun.JSON5、Bun.JSONL、內建 pseudo-terminal 的 Bun.Terminal(取代 node-pty),以及可註冊到 crontab、launchd、Task Scheduler 的 Bun.cron()。
await using view = new Bun.WebView({ width: 800, height: 600 });
await view.navigate("https://bun.sh");
await view.click("a[href='/docs']");
await Bun.write("page.png", await view.screenshot());影響範圍
效能面上,Linux 啟動時間降到 5.1ms(原本 10.9ms),HTTP server 記憶體用量最多減少 35%。共 15 個原本需要另外安裝的套件(sharp、puppeteer、node-pty、npm-run-all 等)被收進 runtime 內建功能,對前端工具鏈來說意味著更小的 node_modules 與更少的跨套件版本衝突。這些 API 從 1.3.x 系列陸續 land,1.4 版是第一次同時穩定發布。
HTML 規格新增 <template for>,伺服器可宣告式亂序串流內容
whatwg/html · 2026-08-20
whatwg/html 規格在 commit 2ff023f(2026-08-20,作者 Philip Jägenstedt 與 Anne van Kesteren)新增 <template for> 元素,解決 issue #11542 提出的「亂序串流」(out-of-order streaming)問題。
背景
目前框架要做串流 SSR,通常得先送出佔位內容,等資料就緒後再用內嵌 <script> 操作 DOM 把內容換掉。這種做法需要 JavaScript 才能完成初次渲染的替換,也讓輸出的 HTML 難以單純用 語意表達完整結構。
核心改動
新語法讓文件先放一個 <?marker name="x"> processing instruction 當佔位,之後串流送出 <template for="x"> 時,瀏覽器會直接把 template 內容接到對應 marker 的位置,完全不需要 JS。規格也定義了 <?start>/<?end> 一組 marker,可以先顯示暫時內容、之後整段替換。基於安全性考量, 只能更新同一個 parent element 底下的 marker,除非直接掛在 <body> 下才能存取整份文件。
<div><?marker name="placeholder"></div>
<template for="placeholder">
Here is some <em>HTML content</em>!
</template>影響範圍
對應的 WPT 測試在 web-platform-tests/wpt#61156,Chrome 團隊已在 blink-dev 提出 Intent to Ship。對前端框架而言,這代表串流 SSR 的「換內容」步驟未來有機會不再依賴框架自帶的 hydration script,改由瀏覽器原生處理 marker 替換。
Svelte 5.56.10 修正 CSS 逃逸字元與 SSR 衍生值重複計算
github.com (sveltejs/svelte) · 2026-08-20
Svelte 在 2026-08-20(commit 56a036f)發布 patch 版本 svelte@5.56.10,一口氣收錄 21 項修正,集中在 CSS 選擇器輸出與伺服器端編譯兩塊。
核心改動
CSS 方面,編譯器現在會保留選擇器裡的跳脫字元(#18667),修正 :nth-child(2n of.foo) 這種 of 後面沒有空白時的解析錯誤(#18611),同時維持 CSS type selector 的 namespace(#18678)。伺服器端編譯則修掉一個會讓 $derived 值重複計算的 bug:解構另一個 $derived 產生的值時,衍生參照原本會在 SSR 被呼叫兩次(#18668),另外也修正了 labeled statement 內表達式在 server compilation 沒被正確轉換的問題(#18617)。
- 保留 CSS 跳脫序列(#18667)與 type selector namespace(#18678)
- 修正
:nth-child(2n of.foo)解析(#18611) - 避免 SSR 重複呼叫巢狀
$derived(#18668) - 修正 legacy
bind:retry loop 造成的 renderer type 損壞(#18616)
影響範圍
這批修正主要影響動態 class 名稱含特殊字元或大量巢狀 $derived 的專案,尤其是走 SSR 路徑的應用;純 client-side 渲染受影響較小。所有變更都是 patch-level 修正,不涉及既有 API 行為變更。