Deno 2.8:import defer、六支新子命令、npm 冷啟動加速 3.66 倍
deno.com · 2026-05-22
Deno 2.8 於 2026 年 5 月 22 日發佈,帶來 TC39 Stage 3 的 import defer 提案支援、六支全新子命令,以及一批 Node.js 相容性改善,使 Node.js 官方測試套件通過率從 42% 跳至 76.4%,大幅超越 Bun 1.3.14 的 40.6%。
六支新子命令
deno transpile 把 TypeScript/JSX 剝離型別後輸出純 JavaScript,支援 source map 與 .d.ts 生成,不重寫模組路徑。deno pack 則將 Deno/JSR 專案打包成可上傳 npm 的 tarball,自動將 jsr:@std/path 重寫為 @jsr/std__path 並生成 package.json 與型別宣告。
deno ci 強制要求 deno.lock 存在且完全吻合(等同 --frozen),專為 CI 環境設計。deno audit fix 自動把有漏洞的 npm 套件升級至修補版本,需要主要版本升級者另行標記。deno bump-version 根據 Conventional Commits 計算各工作空間成員的語意化版本增量;deno why 追蹤 npm 與 JSR 套件在依賴樹中的所有路徑。
import defer 與模組評估延遲
import defer * as heavy from './heavy.ts' 讓模組解析(parsing)發生在靜態分析階段,但實際程式碼執行(evaluation)推遲到首次存取匯出成員時才觸發。對啟動時不一定會用到的昂貴模組而言,可顯著縮短冷啟動時間,尤其有利於 CLI 工具和 Serverless functions。Deno 同時升級至 TypeScript 6.0.3,V8 引擎升至 14.9。
效能數字
| 項目 | Deno 2.7 | Deno 2.8 | 倍率 |
|---|---|---|---|
| npm 冷啟動安裝 | 3,319 ms | 906 ms | 3.66× |
| node:http 吞吐量 | 基準 | — | 2.21× |
| node:buffer base64 | 基準 | — | 3.07× |
| node:crypto scrypt | 基準 | — | 2.12× |
npm 安裝加速來自縮簡版 packument、並行解析、離線事件迴圈解壓縮,以及 simdutf base64 編碼。deno upgrade 增量更新機制可將典型補丁下載量壓縮 87–93%。
破壞性變更
setTimeout/setInterval現在回傳 Node.js 的Timeout物件而非數字,與node:timers行為一致- 測試 sanitizer(
sanitizeOps、sanitizeResources)預設值從true改為false lib.node型別預設包含;no-process-global與no-node-globalslint 規則預設關閉
原始來源:Deno Blog · v2.8
Safari 26.5::open 偽類別、CSS random() element-scoped 與 Origin API
webkit.org · 2026-05-22
Safari 26.5 隨 macOS 和 iOS 一同推出,WebKit 部落格列出 63 項修復與新功能,涵蓋 CSS、Web API、SVG 與無障礙改善。最重要的新增是 :open 偽類別與 CSS random() 的 element-scoped 關鍵字,兩者均已進入 W3C CSS Working Group 草稿。
:open 偽類別
:open 可選中處於展開狀態的元素,適用範圍包括 <details>、<dialog>、<select> 與 <input>(如日期選擇器彈出視窗)。此前開發者必須透過 JavaScript 手動切換 CSS class 才能為「開啟狀態」加樣式;:open 讓這整個模式在純 CSS 中即可實現,且不需要 :is(details[open], dialog[open]) 這類繁瑣選擇器組合。
CSS random() element-scoped
random() 函數允許在 CSS 中產生隨機值,element-scoped 關鍵字讓每個元素獨立取得一個隨機值,適合用於錯落排版、隨機動畫延遲或生成式設計。同時移除了語意不明確的 element-shared 關鍵字。
/* 每個 .card 元素獨立取得隨機延遲 */
.card {
animation-delay: random(element-scoped, 0s, 1s);
}ToggleEvent.source 與 Origin API
Popover API 新增 ToggleEvent.source 屬性,直接指向觸發 popover 切換的元素,省去手動追蹤觸發者的邏輯。Origin API 提供結構化的 Origin 物件,允許在不解析字串的情況下比對來源,且支援不透明來源(opaque origin)的比較,解決了 window.origin 回傳字串時的歧義問題。
Anchor Positioning 與 SVG 改善
Anchor Positioning 修正了多個錯誤:媒體查詢重新評估、多層錨定鏈、fallback 值,以及 sticky positioning 的互動問題。SVG 新增 color-interpolation 屬性,支援 linearRGB 色彩空間用於漸層,讓顏色過渡在感知上更均勻。