近日,Deno 官网博客对其我的项目在刚刚过来的 2021 年所产生的重大事件和新变动做了回顾。

作为 Deno 第一笔资金投入的一年,该公司在 2021 里在 10 个方面有了弱小妻妾继续的倒退:公布了 44 个版本(11 个主要,33 个补丁),landing 要害特色,有数 bug 的修复以及在性能方面的显著优化。

在该博客文章里,Deno 对以下几个次要方面的倒退做了探讨:

Deno Deploy

2021年夏天,Deno 官网公布了 Deno Deploy 的第一个测试版 —— 一款由 Deno 工程团队从头开始构建的古代 serverless 云,容许用户疾速地将 JavaScript、TypeScript 和 WASM 服务部署到世界各地的数据中心。

目前,Deno 正在踊跃开发和投资 Deno Deploy,该我的项目被认为是继构建 Node.js 和 Deno CLI 之后该公司的第三个 JavaScript runtime。

优化 Deno 内核

Deno 的内核提供了“opcalls”(相似于syscalls),容许 JavaScript 调用 runtime 提供的函数(fs/net/url-parsing/…)。

在 v1.9 版本公布之前,Deno 公司通过 JSON 和二进制缓冲区的混合来对opcall 值进行整顿。

op-layer 的效率是决定 runtime 整体性能的要害指标。相比此前每次调用 Opcalls 破费约 4000ns,当初每次调用破费仅为约 40ns,缩小了近 100 倍。这些效率进步的次要起因是 serde_v8 —— 开发团队在 v1.9 版本中设计并交付的 Rust 和 V8 值之间的最大化 efficient bijection。

仅此一项就将 URL 解析等常见操作的老本升高了 3 倍以上,并使 Deno 成为一个疾速的 JS runtime。

原生 HTTP

在 Deno v1.9 版本中开发团队提供了原生 HTTP 服务器绑定,这些绑定起初在 Deno v1.13 中失去了稳固施展,只需几行代码即可创立由 hyper 反对的高性能HTTP 服务器:

import { serve } from "https://deno.land/std@0.121.0/http/server.ts";
serve((_req) => new Response("Hello, world"), { port: 3000 });
console.log("Listening on http://localhost:3000");

MDN 兼容性表格

2021 年 8 月,Deno 被增加到了 MDN 兼容性表格中。

Deno 非常重视网络兼容性,开发团队依据 WPT(或 Web 平台测试)测试 Deno,所有次要浏览器都应用该测试套件来确保符合规范。(测试套件后果可在 wpt.fyi 上找到)。

内部函数接口(FFI )

Deno v1.13 版本中,开发团队用一个新的内部函数接口 API 替换了不稳固的插件零碎。只管该 FFI 仍被认为不稳固,但团队认为这是一个显著的提高。

1.13 版本之前的原生插件零碎容许公布用 Rust 编写的动静库,因为不稳固的Rust ABI,以及将 API 作者限度为繁多语言,团队决定用通用 FFI API 替换该零碎。此 API 容许开发人员以任何应用 C 调用约定的语言为 Deno runtime 编写“扩大”。

目前,曾经看到了一些应用 FFI API 展现 FFI API 弱小性能的乏味我的项目:

Desktop app framework
Python interpreter bindings
SDL2 bindings
SerialPort bindings
SQLite bindings
Slack & 下一代平台

2021 年 11 月,SLACK 发表了其基于 Deno 的下一代开发平台。除 SLACK 外,Deno 公司还与其余合作伙伴单干生产和运输了优质的 Deno-powered 产品。Deno 方面置信,Deno Deploy 的“Isolates as a Service(隔离即服务)”为以下方面提供了松软的根底:

Modern edge-hosting
User-extendable platforms (bots, plugins, apps, 等...)
Low-code solutions

Node.js 兼容性

在 2021 年的 Q4 季度里,Deno 团队开始致力提供一流的 Node.js 兼容性,容许 Deno 间接在 Deno 中运行为 Node.js 开发的应用程序和库(NPM 包)。

在 Deno v1.15 版本里,开发团队公布了“compat mode”的第一个预览版。只管该性能仍不稳固,但可应用 compat flag 启用(大部分工作波及在 std/node 中提供 polyfills)。

目前,一些要害模块如 tls 和 zlib 仍不残缺,但仍可运行 non-trivial 类型的应用程序。团队示意,接下来的指标是在将来几个月内推出适宜所有用户的第一个迭代版本。

Deno 2 路线

2021 年 9 月份,开发团队开始探讨 Deno 2 发行后将会是什么样子。尽管还有许多显著的小 API 变更须要解决,但团队也在排查根本性的变动,以改良 Deno 工作流程。

团队示意,置信 Deno 2 的路线图很快就会公布,也心愿尽量在往年上半年公布。Deno 2 将专一于更好的 NPM 生态系统兼容性、更好的通用工作流 DX,以及更好的摸索代替包治理解决方案。