JavaScript 平台 Node.js 22.0.0 可用

Node.js 22.0 發布,這是一個用 JavaScript 運行網頁應用程式的平台。 Node.js 22.0 被歸類為長期支援分支,但只有在穩定後的 22 月才會分配此狀態。 Node.js 30.x 將支援到 2027 年 20 月 2026 日。 Node.js 18.x 之前的 LTS 分支的維護將持續到 2025 年 21 月,前年的 LTS 分支 1.x 的維護將持續到 2024 年 XNUMX 月。 Node.js XNUMX.x 的暫存分支將於 XNUMX 年 XNUMX 月 XNUMX 日停止。

主要改進:

  • V8 引擎已更新至版本 12.4,在 Chromium 124 中使用。
    • 支援 WasmGC 擴展,簡化了將使用垃圾收集器的程式語言(Kotlin、PHP、Java 等)編寫的程式移植到 WebAssembly。 WasmGC 增加了可以使用非線性記憶體分配的新型結構和陣列。
    • 支援 Array.fromAsync() 方法,該方法非同步傳回從類別數組、可迭代或非同步可迭代物件複製的 Array 物件的新實例。
    • 支援迭代器方法,例如 .map、.filter、.find、.take、.drop、.forEach 和 .reduce。
    • 支援 Set 對象,該物件定義值的集合並提供實現常見集合運算的方法,例如交集、並集、差集和加法。
  • Maglev 最佳化 JIT 編譯器預設啟用,旨在為頻繁使用的 JavaScript 程式碼快速產生高效能機器碼。啟用 Maglev 可以顯著加快不執行長期操作的短期 CLI 應用程式的速度,例如,完成 Jetstrea 測試的時間減少了 7.5%,Speedometer 測試的時間減少了 5%。
  • 透過將 highWaterMark 選項的值從 16 KB 增加到 65 KB(定義緩衝記錄的上限),流的處理速度得到了加快。此變更會導致記憶體消耗增加,因此設計為在有限 RAM 上執行的應用程式可能需要透過呼叫 setDefaultHighWaterMark() 恢復到舊值。
  • 透過提高 AbortSignal 實例化的效率,提高了 fetch() 和測試運行器 API 的效能。與檔案系統同步工作相關的 API 的效能已得到改進。
  • 提供了一項實驗性功能,可使用「require()」呼叫以同步模式載入 JavaScript ESM 模組(ECMAScript 模組)。 ESM 模組在瀏覽器中使用,並取代特定於 Node.js 的 CommonJS 模組。要透過「require()」加載,ESM 模組必須以同步模式執行(頂層沒有等待)。透過“--experimental-require-module”標誌啟用支援。
  • 新增了使用「--run」命令執行 package.json 檔案中定義的腳本的實驗功能」
  • “node –watch”命令已移至穩定類別,並實現了監視模式,確保在導入的檔案發生更改時重新啟動進程(例如,如果執行“node –watch index.js”,則當index.js發生變化時,進程將自動重新啟動)。
  • WebSocket API 的本機實作已經穩定,允許在客戶端模式下使用 WebSocket,而無需安裝額外的依賴項。
  • 新增了對 Navigator API 的部分支援。
  • Webstreams API 新增了對 deflate-raw 壓縮格式的支援。
  • 向 node:fsmodule 新增了 glob 和 globSync 函數,用於檔案路徑的模式匹配。
  • 改進了對錯誤配置的 IPv6 堆疊的處理。實作 Happy Eyeballs 演算法,以便在 IPv6 操作出現問題時快速回溯。
  • util API 已被棄用。
  • 更新的依賴項版本:npm 10.5.1、libuv 1.48.0、simdutf 5.2.3、c-ares 1.28.1、zlib 1.3.0.1-motley-24c07df、simdjson 至3.8.0、ada 2.7.7 和 6.6.0. .XNUMX 。

Node.js 平台既可用於 Web 應用程序的服務器維護,也可用於創建常規客戶端和服務器網絡程序。 為了擴展Node.js應用程序的功能,已經準備了一個大的模塊集合,您可以在其中找到實現HTTP、SMTP、XMPP、DNS、FTP、IMAP、POP3服務器和客戶端的模塊、用於集成的模塊具有各種 Web 框架、WebSocket 和 Ajax 處理程序、DBMS 連接器(MySQL、PostgreSQL、SQLite、MongoDB)、模板引擎、CSS 引擎、加密算法和授權系統(OAuth)的實現、XML 解析器。

為了處理大量並行請求,Node.js 使用基於非阻塞事件處理和定義回呼處理程序的非同步程式碼執行模型。支援的多路復用連接方法包括 epoll、kqueue、/dev/poll 和 select。對於連線重複使用,使用 libuv 函式庫,它是 Unix 系統上 libev 和 Windows 上 IOCP 的附加元件。 libeio庫用於建立線程池,並整合c-ares以非阻塞模式執行DNS查詢。所有導致阻塞的系統呼叫都在執行緒池中執行,然後像訊號處理程序一樣,透過無名管道將其工作結果傳回。

JavaScript 程式碼的執行是透過使用 Google 開發的 V8 引擎來確保的(此外,微軟正在開發具有 Chakra-Core 引擎的 Node.js 版本)。從本質上講,Node.js 類似於Perl AnyEvent、Ruby Event Machine、Python Twisted 框架以及Tcl 中的事件實現,但Node.js 中的事件循環對開發人員是隱藏的,類似於Web 應用程式中的事件處理在瀏覽器中運行。

來源: opennet.ru

添加評論