为 JavaScript 和 TypeScript 开发 Deno 运行时的团队最近发布了 Deno 1.5。新版本通过使用基于 Rust 的 JavaScript/TypeScript 编译器swc来提高打包性能,并通过摇树优化进一步减少包的大小。Deno 1.5 实现了 alert、confirm 和 prompt 等 Web 平台 API,开发人员可以在终端编写简单的交互式应用程序。
Deno 团队重构了 Deno 的 TypeScript 编译器基础架构,开始使用 swc。swc 是用 Rust 编写的 JavaScript/TypeScript 编译器和打包器。swc 声称单线程速度比 Babel 快 20 倍,在一次四核基准测试中快 70 倍。Deno 1.5 的发布说明提到了 swc 对 Deno 编译性能的影响:
当我们启用类型检查时,性能提升了 3 倍,如果开启--no-check 选项,则提升 15 倍。
新的摇树优化能力进一步降低包的大小。发布说明给出了一个源码示例,在使用 v1.5 而不是 v1.4 进行编译时,代码大小减少了 35%。
Deno 1.5 打好的包可以作为标准的 ES 模块发布。发布说明写道:
动态导入现在可以正常工作,import.meta.url 也可以正确设置。如果你使用 Deno 为浏览器打包代码,请确保将包作为 ES 模块加载(在<script>标签加上 type="module")。
新版本的 Deno 实现了 alert、confirm 和 prompt 等 Web 平台 API,语义与浏览器中的 API 类似。例如,在浏览器中,window.prompt 将显示一个带有可选消息的对话框,提示用户输入一些文本。在 Deno 终端中,prompt 函数同样会提示用户,并同步阻塞,直到接收到输入。
上述的 API 允许开发人员在终端中实现简单的交互。发布说明提供了一个简单的例子:
在 Node.js 中,要提示用户输入,可能需要开发人员直接操作I/O流(例如 process.stdin)或通过库来操作。
新版本 Deno 还为 REPL 添加了一些新特性。在 REPL 中,对象属性和方法可以通过按 TAB 键来自动完成。如果终端支持颜色,还可以高亮显示代码语法。REPL 现在还支持顶级await指令。
发布说明还介绍了其他一起发布的次要特性。有兴趣的开发人员可以在网上查看发布说明。
Deno 采用了 MIT 开源软件。开发者可以通过Deno项目参与贡献,并遵循Deno贡献指南。
原文链接:
Deno 1.5 Sees 3x Bundling Performance Improvement Due to Rust-Based JavaScript/TypeScript Compiler
评论