Node 之后又一大作,TypeScript 运行时 Deno 1.0 正式发布
Deno 1.0 發(fā)布了。Deno 是作者Ryan Dahl 在 Node 之后的又一大作,它是一個(gè)新的運(yùn)行時(shí),用于在 Web 瀏覽器之外執(zhí)行 JavaScript 和 TypeScript,其采用 Rust 編寫而成(最初用的是 Golang)。
Deno 試圖提供一個(gè)獨(dú)立的工具來(lái)快速編寫復(fù)雜功能的腳本,它將始終是單個(gè)可執(zhí)行文件。就像 Web 瀏覽器一樣,它知道如何獲取外部代碼。在 Deno 中,單個(gè)文件可以定義任意復(fù)雜的行為,而無(wú)需任何其它工具。
Ryan Dahl 認(rèn)為過(guò)去他在設(shè)計(jì) Node 時(shí)犯了一些錯(cuò)誤,包括安全性、構(gòu)建系統(tǒng)、package.json、node_modules、index.js 等等,并表示Node 存在的種種不足導(dǎo)致有許多嚴(yán)重 bug 問(wèn)題且不可回避,當(dāng)前JavaScript 和周圍的軟件基礎(chǔ)架構(gòu)已經(jīng)發(fā)生了巨大的變化,值得進(jìn)行簡(jiǎn)化,于是他重新設(shè)計(jì)了 Deno 這門腳本語(yǔ)言。
Rust API
今天正式發(fā)布的 1.0 版本帶來(lái)了命令行界面 CLI 1.0。Deno 本身并不是一個(gè)單體的程序,而是設(shè)計(jì)為 Rust crate 的集合,以允許在不同的層進(jìn)行集成。Deno 中的 Rustcrate deno_core 不依賴于 TypeScript 或 Tokio,它只是提供了操作和資源基礎(chǔ)架構(gòu)。也就是說(shuō),它提供了一種將 Rust 特性綁定到 JavaScript promise 的有組織方式。CLI 則完全建立在 deno_core 之上。
rusty_v8crate 提供高質(zhì)量的 V8 C++ API 的 Rust 綁定。該 API 嘗試盡可能與原始 C++ API 匹配,它是零成本的綁定,因?yàn)?Rust 中暴露的對(duì)象與在 C++ 中操作的對(duì)象完全相同。
HTTP 服務(wù)器性能
Deno 的 HTTP 服務(wù)器是采用 TypeScript 在原生 TCP socket 的頂層實(shí)現(xiàn)的,Node 的 HTTP 服務(wù)器使用 C 語(yǔ)言編寫,并作為對(duì) JavaScript 的高級(jí)綁定暴露。一直以來(lái) Deno 拒絕將原生 HTTP 服務(wù)器綁定添加進(jìn)來(lái),因?yàn)檫@還需要優(yōu)化 TCP socket 層,更常見(jiàn)的是優(yōu)化 op 接口。
Deno 是一個(gè)合適的異步服務(wù)器,每秒 25k 請(qǐng)求足以滿足大多數(shù)目的,此外,由于普遍使用 Promise,Deno 需要有更好的尾部延遲。目前 Deno HTTP 服務(wù)器每秒處理約 25 000 個(gè)請(qǐng)求,最大延遲為 1.3 毫秒,與之相比,Node 程序每秒處理 34 000 個(gè)請(qǐng)求,最大延遲介于 2 到 300 毫秒之間。
這樣看來(lái),作者認(rèn)為 Deno 的 HTTP 服務(wù)器還有更多的性能優(yōu)勢(shì),并表示希望在將來(lái)的版本中實(shí)現(xiàn)這一目標(biāo)。
具體關(guān)于 HTTP 服務(wù)器性能,可以查看:
https://deno.land/benchmarks
插件/擴(kuò)展
Deno 1.0 還帶來(lái)了一個(gè)新生的插件系統(tǒng),用于通過(guò)自定義操作擴(kuò)展 Deno 運(yùn)行時(shí)。但是,此接口仍在開(kāi)發(fā)中,并已標(biāo)記為不穩(wěn)定。
此外,發(fā)布公告中還提及 Deno 穩(wěn)定性與兼容性等內(nèi)容,還介紹了接下來(lái)將會(huì)把 TSC 移植到 Rust,最終加速類型檢查,提高從 TS 解析到 JS 性能的計(jì)劃,詳情查看:
https://deno.land/v1
總結(jié)
以上是生活随笔為你收集整理的Node 之后又一大作,TypeScript 运行时 Deno 1.0 正式发布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 孜然豆腐怎么做好吃呢?
- 下一篇: qours许愿瓶官网(qours)