作者 | Aaron O'Mullan 等人
譯者 | Sambodhi
策劃 | 闫園園
2021 年是 Deno 獲得資助發展的第一個整年。我們的公司 有 10 個員工,而且還在不斷增加。
Deno CLI 自 從 2020 年 5 月釋出 1.0 版本 之後就已經在穩定地發展了。2021 年,我們推出了 44 個版本(11 個小版本,33 個更新檔),上新了關鍵特性,修複了大量錯誤,并進行了重大性能優化。關于每個版本的細節,請參閱相應的博文:v1.7、v1.8、v1.9、v1.10、v1.11、v1.12、v1.13、v1.14、v1.15、v1.16、v1.17。
讓我們來讨論一些重要的發展。
Deno Deploy
我們在去年夏天推出了 Deno Deploy 的首個測試版本。這是一款由我們的工程師團隊從頭開始建構的現代無伺服器雲,允許使用者非常快速地将 JavaScript、TypeScript 和 WASM 服務部署到世界各地的資料中心。
我們正在積極開發和投資 Deno Deploy。我們将其視為建構 Node.js 和 Deno CLI 之後的第三個 JavaScript 運作時。我們非常高興能有機會使用雲優先原語來建構現代運作時,而這些原語可以塑造團隊建構和釋出軟體的方式。我們想在接下來的數個月中與大家分享更多有關新一代系統的資訊。
優化的核心
Deno 的核心提供了“opcalls”(類似于 syscalls),它可以讓 JavaScript 調用運作時提供的 Rust 函數(fs/net/url-parsing/……)。
在 v1.9 版本之前,我們通過 JSON 和二進制緩沖區的混合來整理 opcall 值。
op-layer 的效率是決定運作時整體性能的關鍵因素。Opcall 以前每次調用有 4000 納秒的開銷,而現在減少了近 100 倍,每次調用有 40 納秒。
這些效率提升的主要歸功于 serde_v8,這是我們在 v1.9 版本中設計并傳遞的 Rust 和 V8 值之間的最大效率的雙射。僅此一項,就将 URL 解析等常見操作的成本降低了 3 倍以上,并使 Deno 成為成熟的快速 JS 運作時。
原生 HTTP
在 Deno v1.9 中,我們提供了原生的 HTTP 伺服器綁定,之後在 Deno v1.13 中得到穩定。通過這些綁定,你可以隻用幾行代碼就能建立由 支援的高性能 HTTP 伺服器。
因為這些綁定是建立在 上的,它們提供了巨大的吞吐量和延遲。
MDN 相容性表
2021 年 8 月,Deno 被添加到 MDN 相容性表 中。
Deno 非常重視 Web 相容性;我們用 WPT(,Web 平台測試)對 Deno 進行了測試,WPT 是所有主要浏覽器使用的測試套件,以確定符合規範。測試套件的結果可以在 wpt.fyi 上找到。
外部功能接口
在 Deno v1.13 中,我們用一個新的外部功能接口(Foreign Function Interface,FFI)API 取代了不穩定的插件系統。FFI 仍然被認為是不穩定的,但我們認為這是一個重大的改進。
在 1.13 版之前,原生插件系統允許使用 Rust 編寫的動态庫。由于 Rust ABI 的不穩定,以及将 API 作者限制在一種語言中,我們決定用一個通用的 FFI API 來取代這個系統。這個 API 允許開發者用任何使用 C 語言調用約定的語言來編寫 Deno 運作時的“擴充”。
我們已經看到一些使用 FFI API 的有趣項目,展示了 FFI API 的強大功能:
桌面應用架構
Python 解釋器綁定
SDL2 綁定
SerialPort 綁定
SQLite 綁定
Slack 與下一代平台
2021 年 11 月,Slack 宣布其基于 Deno 的 下一代開發平台。除了 Slack,我們一直在與其他合作夥伴合作,以開發和傳遞偉大的 Deno 賦能産品。我們相信 Deno Deploy 的“隔離即服務”為以下方面提供了堅實的基礎:
現代邊緣托管
使用者可擴充的平台(機器人、插件、應用程式等。)
低代碼解決方案
Node.js 相容性
在 2021 年第四季度,我們開始努力提供一流的 Node.js 相容性。允許 Deno 直接在 Deno 中運作為 Node.js 開發的應用程式和庫(NPM 包),沒有任何變化。
在 Deno v1.15 中,我們提供了“相容模式”的第一個預覽。該特性仍然不穩定,但可以使用 标志啟用。大部分的工作涉及在 std/node 中提供 polyfills。
一些關鍵的子產品如 和 仍然不完整,但在目前的形式下,你仍然可以運作重要的應用程式。我們的目标是在未來幾個月内推出适合所有使用者的第一個疊代版本。
通往 Deno 2 的道路
2021 年 9 月,我們開始讨論 Deno 2 版本可能是什麼樣子的。API 中有很多細微的改變需要處理,但是我們也在調查基本的變化,以改善 Deno 的工作流。預計不久之後,我們将釋出 Deno 2 的路線圖,并希望在今年上半年就能傳遞。它将專注于更好的 NPM 生态系統的相容性,為常見的工作流程提供更好的 DX,并探索替代的包管了解決方案。
作者介紹:
Aaron O'Mullan,Deno 首席工程師;Bartek Iwańczuk,Deno 工程師;Ryan Dahl,Deno 首席執行官。
https://deno.com/blog/deno-in-2021