Deno 1.9 发布:新增原生 HTTP/2 Web 服务器、优化 Rust 调用效率

来源: OSCHINA
编辑: 局长
2021-04-16

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!

详细内容查看发布公告

展开阅读全文
7 收藏
分享
加载中
13 评论
7 收藏
分享
返回顶部
顶部