Deno 作者 Ryan Dahl 和另一名核心开发者 Bartek Iwańczuk 发表博客回顾了 Deno 的 2020,其中主要的事件包括:API 稳定、对多项大型基础设施进行重构以及发布 1.0 正式版等。
Deno 是作者 Ryan Dahl 在 Node 之后的又一大作,它是基于 V8 引擎的运行时,用于在 Web 浏览器之外执行 JavaScript 和 TypeScript,其采用 Rust 编写而成(最初用的是 Golang)。
Deno 从诞生到发布 1.0 正式版刚好经历了两年,下面是对它在 2020 的主要回顾。
支持 V8 调试器
Ryan 表示 Deno 团队花了很大的精力来添加对 V8 调试器的支持,以及实现使用 Chrome Devtools 连接到 Deno 进程的功能。与此同时,CLI 也增加了两个子命令:
deno doc
deno upgrade
在此期间,构建过程也有了巨大的改进。Ryan 表示,到目前为止,Deno 每次都是从源码构建 V8。V8 是一个非常庞大的项目,Deno 团队能做到将构建时间控制在 30 分钟。
稳定 API
为了给发布 1.0 做准备,Deno 团队对全局的 API 进行了审查,因此出现了许多破坏性变化。出于保守考虑,所有未稳定的 API 都被加上了--unstable
flag。同时团队承诺标记了稳定状态的 Deno API 在 2.0 发布前都不会发生破坏性变化。
与此同时,Deno 发布了最后一个 0.x.y 版本。
Deno 1.0 发布
在 Ryan 发表“我为 Node.js 感到后悔的十件事”演讲的两年后,2020年5月13日 Deno 1.0 正式版终于发布了。
Deno 试图提供一个独立的 工具 来快速编写复杂功能的脚本,它将始终是单个可执行文件。就像 Web 浏览器一样,它知道如何获取外部代码。在 Deno 中,单个文件可以定义任意复杂的行为,而无需任何其它工具。
将内部运行时 (runtime) 代码从 TypeScript 改为使用 JavaScript 重写
在此过程中,Deno 团队决定将内部运行时的编程语言从 TypeScript 转换为JavaScript。Ryan 表示这是一个艰难的决定,但为了优化复杂而又缓慢的构建过程,他最后还是同意了此方案。
WebSocket API、控制台的 CSS 样式、文件浏览器、测试覆盖率
Deno 宣称发布包含上述特性的新版本时,这是自 1.0 以来最大的功能版本。自此,Deno 发布计划从每月的次要版本更改为每六周发布一次新的次要版本,与 Rust 和 Chrome 项目的节奏一致。
独立的二级制文件和语言服务器 (LSP)
2020年最后一个月,Deno 发布的 1.6 增加了两项具有里程碑意义的功能:独立的二进制文件和语言服务器,并实现了deno compile
这是用户最需要的一项功能。
Deno 提供内置的语言服务器可以为所有能够使用 LSP 协议的编辑器提供良好的开发体验。VS Code 也因此进行了第三次改造,目前仍在进行中。
2021
Deno 团队目前暂定的计划如下:
- Q1 Roadmap
- 添加新的语言服务器功能来优化对 IDE 的支持
- 使用 Web Platform Test suite 确保 Web 兼容性