前端前線 2026 年 7 月 25 日

2026-07-25 — Node.js 換新文件站,TC39 兩項 Stage 2 提案補上 Error code 與 FMA 運算

primary=https://nodejs.org/en/blog/announcements/new-api-docs-beta primary=https://github.com/tc39/proposal-error-code-property primary=https://github.com/tc39/proposal-fma

Node.js 推出新版 API 文件預覽站,導入內建搜尋與 llms.txt

Node.js Blog · 2026-07-24

核心改動

Node.js 官方於 2026-07-24 由 Guilherme Araújo 發文,宣布新版 API 文件預覽站上線,網址為 beta.docs.nodejs.org。這是文件產生工具鏈的整體替換,底層改用新開發的 doc-kit 產生器取代舊有的產生流程,但文件內容本身沒有變動,仍然由 nodejs/node repo 內的 Markdown 原始檔產生。新站與 nodejs.org 官網共用同一套設計系統,包含常駐側邊欄模組列表、每頁固定顯示的目錄(TOC)、以及響應式版面。

新站首次提供內建全文搜尋,並支援鍵盤快捷鍵操作,使用者不需再依賴外部搜尋引擎查 API。頁面同時加入預估閱讀時間與公告列,並保留既有功能,例如 ESM/CJS 語法切換、程式碼複製按鈕、穩定度標籤(stability badges)與版本歷史對照。文件在停用 JavaScript 或離線狀態下仍可完整瀏覽。

影響範圍

新站額外提供 nodejs.org/llms.txt 作為給 AI 工具讀取的結構化入口,方便 LLM 類工具解析 API 文件內容。doc-kit 被設計成獨立可重用的工具,官方表示其他專案也能採用同一套產生器建立自己的文件站。目前站台狀態為預覽(beta),問題回報與意見反饋導向 nodejs/doc-kit repo 的 issue 頁面,尚未取代正式文件站。

原始來源:Node.js Blog 公告nodejs/doc-kit


TC39 新提案將 Error 物件的 code 屬性正式標準化,已進入 Stage 2

TC39 Proposals · 2026-07-22

背景

JavaScript 的 Error 物件長期缺乏標準化的機器可讀識別欄位,各家 runtime 與函式庫各自為政:Node.js 自 v8 起累積超過 200 個 ERR_* 代碼,Deno、Bun 與 axios、Firebase、Stripe、Prisma 等函式庫也各自定義 .code,但寫法互不相容。這份由 James M Snell 主導、Jordan Harband 擔任 reviewer 的提案,目的是把這個實務上早已存在的模式收斂成語言層級規範。

核心改動

提案在 Error 建構子的 options bag 中新增 code 欄位,寫法與現有的 cause 一致:

new Error("something went wrong", { code: "ERR_SOMETHING" })
new TypeError("expected string", {
  code: "ERR_INVALID_ARG_TYPE",
  cause: original
})

code 屬性定義在實例上而非原型鏈,值可為任意型別(不限字串),未提供時預設不存在;屬性本身為不可列舉(non-enumerable),但可寫入、可設定(writable、configurable),行為對齊既有的 cause 屬性設計。

影響範圍

提案明確排除兩件事:不定義 TC39 專屬的錯誤代碼命名空間,也不會回頭替規格內建的錯誤補上 code 值,這些留給未來獨立提案處理。由於 Web 平台過去已經捨棄數字型的 DOMException.code、改用字串 .name,此提案選擇字串優先的識別方式與這個趨勢一致。目前狀態為 Stage 2,尚未進入規格文字凍結階段。

原始來源:tc39/proposal-error-code-property


TC39 提案為 JavaScript 補上 IEEE 754 的 Fused Multiply-Add 運算

TC39 Proposals · 2026-07-24

背景

IEEE 754 標準定義六種基本浮點運算:加、減、乘、除、平方根,以及 fused multiply-add(FMA)。前五種 ECMAScript 從一開始就支援,唯獨 2008 年隨 IEEE 754-2008 加入的 FMA 從未被納入語言規範。這份由 Waldemar Horwat 主導的提案要補上這個缺口,目前狀態為 Stage 2,並已有草案規格文字

核心改動

提案新增 Math.fma(x, y, z),語意為計算 x × y + z只在最終結果做一次捨入,中間乘積不捨入,這與一般寫法 x * y + z(會對乘積先捨入一次、加法再捨入一次)在數值上有實質差異。提案文件示範一種典型用法,用來取得兩數精確乘積的高低位元:

let high = a * b
let err = Math.fma(a, b, -high)

執行後(在不溢位/不下溢的前提下),higherr 合起來即為 a × b 的完整精確值,high 保留高位有效位元,err 保留低位有效位元。

影響範圍

提案指出用純 JS 函式庫模擬 FMA 不切實際,需要數百行緩慢且技巧性極高的程式碼才能達到等效精度,因此只能靠語言或硬體層級支援。常見應用場景包含內積運算、矩陣乘法、多項式求值與神經網路計算。C/C++、Java、C#、Python、Rust、Swift 等主流語言都已提供對應的 IEEE 754 語意 FMA 函式(如 Python 的 math.fma、Rust 的 mul_add),JavaScript 目前仍需仰賴此提案補齊。

原始來源:tc39/proposal-fma


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