Deno 1.0 發布
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 性能的計劃,詳情查看: