導讀 | Deno 1.0 發佈了。Deno 是作者 Ryan Dahl 在 Node 之後的又一大作,它是一個新的運行時,用於在 Web 瀏覽器之外執行 JavaScript 和 TypeScript,其採用 Rust 編寫而成(最初用的是 Golang)。 |
Deno 試圖提供一個獨立的工具來快速編寫複雜功能的腳本,它將始終是單個可執行文件。就像 Web 瀏覽器一樣,它知道如何獲取外部代碼。在 Deno 中,單個文件可以定義任意複雜的行爲,而無需任何其它工具。
Ryan Dahl 認爲過去他在設計 Node 時犯了一些錯誤,包括安全性、構建系統、package.json、node_modules、index.js 等等,並表示 Node 存在的種種不足導致有許多嚴重 bug 問題且不可迴避,當前 JavaScript 和周圍的軟件基礎架構已經發生了巨大的變化,值得進行簡化,於是他重新設計了 Deno 這門腳本語言。
Rust API
今天正式發佈的 1.0 版本帶來了命令行界面 CLI 1.0。Deno 本身並不是一個單體的程序,而是設計爲 Rust crate 的集合,以允許在不同的層進行集成。Deno 中的 Rust crate deno_core 不依賴於 TypeScript 或 Tokio,它只是提供了操作和資源基礎架構。也就是說,它提供了一種將 Rust 特性綁定到 JavaScript promise 的有組織方式。CLI 則完全建立在 deno_core 之上。
rusty_v8 crate 提供高質量的 V8 C++ API 的 Rust 綁定。該 API 嘗試儘可能與原始 C++ API 匹配,它是零成本的綁定,因爲 Rust 中暴露的對象與在 C++ 中操作的對象完全相同。
HTTP 服務器性能
Deno 的 HTTP 服務器是採用 TypeScript 在原生 TCP socket 的頂層實現的,Node 的 HTTP 服務器使用 C 語言編寫,並作爲對 JavaScript 的高級綁定暴露。一直以來 Deno 拒絕將原生 HTTP 服務器綁定添加進來,因爲這還需要優化 TCP socket 層,更常見的是優化 op 接口。
Deno 是一個合適的異步服務器,每秒 25k 請求足以滿足大多數目的,此外,由於普遍使用 Promise,Deno 需要有更好的尾部延遲。目前 Deno HTTP 服務器每秒處理約 25 000 個請求,最大延遲爲 1.3 毫秒,與之相比,Node 程序每秒處理 34 000 個請求,最大延遲介於 2 到 300 毫秒之間。
這樣看來,作者認爲 Deno 的 HTTP 服務器還有更多的性能優勢,並表示希望在將來的版本中實現這一目標。
具體關於 HTTP 服務器性能,可以查看:
插件/擴展
Deno 1.0 還帶來了一個新生的插件系統,用於通過自定義操作擴展 Deno 運行時。但是,此接口仍在開發中,並已標記爲不穩定。
此外,發佈公告中還提及 Deno 穩定性與兼容性等內容,還介紹了接下來將會把 TSC 移植到 Rust,最終加速類型檢查,提高從 TS 解析到 JS 性能的計劃,詳情查看:https://deno.land/v1 更多Linux資訊請查看:https://www.linuxprobe.com