Deno 1-9 發佈,新增原生 HTTP-2 Web 服務器

Deno 1.9 已正式發佈,此版本包含許多新功能、性能優化以及錯誤修復。

如果已經安裝了 Deno,運行deno upgrade命令即可升級到 1.9 版本。如果是首次安裝,可以參考下面的方法:

# Using Shell (macOS and Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh

# Using PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex

# Using Homebrew (macOS):
brew install deno

# Using Scoop (Windows):
scoop install deno

# Using Chocolatey (Windows):
choco install deno

新增原生 HTTP/2 Web 服務器

Deno 當前的 HTTP 服務器爲 std/http,這是一個使用純 TypeScript 開發,基於 TCP Socket 之上的實現。儘管它是一個腳本式的 HTTP 服務器,但在尾延遲 (Tail Latency) 上的表現卻十分良好,唯一的缺點就是隻支持 HTTP/1.1,並且難以升級成爲 HTTP/2。

而開發團隊也不想花費精力開發 HTTP 服務器,因此便聘用了 Hyper 團隊替 Deno 構建了一個全新的 HTTP/2 服務器 API,與純 TypeScript 實現的 HTTP 服務器 std/http 相比,他們測試發現新服務器提升了 48% 的吞吐量。目前新 HTTP/2 服務器 API 仍處於測試階段,開發者需要在 API 使用--unstable標籤方可試用,Deno 開發團隊表示他們會盡量讓 API 進入穩定階段。

使用 serde_v8 優化 Rust 調用

Deno 1.9 中,調用 Rust 的性能也獲得大幅度的改進。Deno 開發團隊刪除了 1500 多行核心代碼,並且改進了 baseline binding (AKA ops or opcalls) 的開銷,以及建立更乾淨的操作基礎,對未來發展有一定幫助(插件、優化等)。

支持 Blob URL 和改進 fetch

Deno 在此版本引入了對blob:(也稱爲對象 URL)的支持。用於創建和撤消 Blob URL 的 API 與瀏覽器中的 API 相同:

const blob = new Blob(["Hello World!"]);
const url = URL.createObjectURL(blob);
console.log(url); // blob:null/7b09af21-03d5-461e-90a3-af329667d0ac

const resp = await fetch(url);
console.log(await resp.text()); // Hello World!

URL.revokeObjectURL(url);

fetch支持 Blob URL,以及data URL:

const resp = await fetch("data:text/plain;base64,SGVsbG8gV29ybGQh");
console.log(await resp.text()); // Hello World!

詳細內容查看發佈公告:https://deno.com/blog/v1.9

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Egd2kpzZUQJoHghpeqvACA