前端前線 2026 年 5 月 24 日

2026-05-24 — Node.js 24.16.0 LTS 新增 UUID v7 與 AbortSignal、C# 引入 union 關鍵字

primary=https://nodejs.org/en/blog/release/v24.16.0 primary=https://andrewlock.net/exploring-the-dotnet-11-preview-2-dotnet-gets-union-types/

Node.js 24.16.0(LTS)正式釋出:UUID v7、AbortSignal 擴展與 QUIC 改進

Node.js Blog · 2026-05-21

Node.js v24.16.0(codename Krypton)於 2026 年 5 月 21 日釋出,這是 24.x LTS 系列的最新版本,Release Manager 為 Antoine du Hamel(@aduh95)。此版本包含多項 SEMVER-MINOR 新功能,涵蓋 crypto、fs、http 與 test runner 模組,以及大量依賴更新。

核心改動

crypto.randomUUIDv7() 正式加入(PR #62553),讓 Node.js 原生支援 UUID v7 的生成;與 v4 的純隨機不同,v7 以時間戳為前綴,使 UUID 具備按時間排序的特性。實作說明指出其內部使用非單調時鐘,需注意同毫秒內的排序行為。

fs 模組在 fs.stat() 新增 signal 選項(PR #57775),允許透過 AbortSignal 取消掛起的 stat 呼叫。同時 statfs 回傳結構新增 frsize 欄位,暴露底層檔案系統的 fragment size。HTTP 層則在 IncomingMessage 加入 req.signal(PR #62541),統一了請求取消的 API 模式。

Test Runner 與 SQLite 增強

Test runner 新增測試順序隨機化(PR #61747),有助於發現隱藏的測試間依賴問題;Mock Timeout API 也對齊 Web 標準,讓 AbortSignal.timeout 可透過 mock-timers 控制。内建 SQLite 模組新增 serialize()/deserialize() 方法,並加入 Percentile 聚合延伸函式。

實驗性 QUIC(HTTP/3)模組取得多項進展:支援多 ALPN 協商、SNI 與 TLS context 改善,以及 Rapidhash 實作。util.styleText() 開始支援 16 進位色彩碼,讓終端輸出更精確。

依賴版本更新

  • npm: 11.13.0
  • OpenSSL: 3.5.6
  • undici: 7.25.0(Node.js 內建 fetch 底層)
  • libuv: 1.52.1
  • SQLite: 3.53.0
  • ICU: 78.3
  • simdjson: 4.6.1

安全相關修正包含 CryptoKey usage 正規化、RSA publicExponent 無符號轉換修正,以及 HTTP OutgoingMessage drain 事件的時序修正(PR #62936)。

原始來源:Node.js Blog


.NET 11 Preview 2:C# 引入 union 關鍵字,原生支援聯合型別

Andrew Lock 的 .NET Escapades · 2026-05-24

.NET 11 Preview 2 在 C# 中首次引入 union 關鍵字,讓開發者可以宣告一個型別只能持有數個指定型別之一的值。這個功能在社群中被討論多年,如今以語言原生形式落地,並計畫搭配 .NET 12 進行完整生產釋出。

語法與型別機制

最基本的宣告形式為:

public union SupportedOS(Windows, Linux, MacOS);

建立實例時可使用隱式轉換:

SupportedOS os = new MacOS("Tahoe", 25);

配合 switch 表達式解構時,編譯器強制窮舉所有 case,遺漏任何一個型別都會造成編譯錯誤,類似 Rust 的 match 語意。

實作細節

編譯器生成的聯合型別為 struct,實作 IUnion 介面,內部以 object? Value 存放當前值。為避免 value type 裝箱,開發者可以自行提供 TryGetValue<T>() 的客製實作,讓 switch 表達式直接操作底層欄位而不觸發 heap 分配。

啟用方式需在專案檔設定 <LangVersion>preview</LangVersion>。若要同時支援更早期的 .NET 版本,尚需額外安裝提供 UnionAttributeIUnion helper 的 NuGet 套件。

與 Rust、Swift 的比較

C# union 在語意上接近 Rust 的 enum(含資料),但採用獨立 union 關鍵字而非擴充既有 enum。與 Swift 的 enum with associated values 相比,C# 更強調 struct 佈局的可預測性與 unsafe 邊界的明確性。此功能目前仍為 preview,完整行為(特別是 generic union 的支援)預計在正式版後持續演化。

原始來源:Andrew Lock Blog


End of article
0
Would love your thoughts, please comment.x
()
x