Deno 2.5发布:权限集与测试API钩子全面升级

Deno 2.5版本正式发布,引入权限集配置、测试生命周期钩子、WebSocket头定制等核心功能。升级V8引擎与TypeScript支持,优化内存使用与编译缓存,显著提升运行时性能与开发体验。

Deno 2.5 带来了对权限集和测试 API 钩子的支持

由 Ryan Dahl 构建的 JavaScript 运行时 Deno 发布了 2.5 版本,通过引入权限集、新的测试钩子以及 WebSocket 的改进带来了多项增强。此版本还包括一系列性能优化。

Deno 2.5 将运行时环境升级至 V8 14.0 和 TypeScript 5.9.2,从而解锁了更新的 JavaScript 语言特性、性能改进和更好的 TypeScript 支持。该版本还对用于日期和时间管理的 Temporal API 进行了更改,目标是使 –unstable-temporal 标志在未来的版本中不再必要。

其中一个重要的变化是在配置文件中支持权限集,为开发者提供了更细粒度和声明式的运行时权限控制。通过能够在 deno.json 配置文件中定义权限规范,可以根据运行的命令在运行时应用不同的预定义权限。权限集可以使用新的 permission-set 标志来应用,例如:

1
deno run --permission-set=process-data main.ts

此外,Deno 通过添加设置和拆卸钩子增强了其测试 API,使测试作者能够直接在 Deno.test 中进行生命周期控制。现在有四个新的钩子:Deno.test.beforeAll、Deno.test.beforeEach、Deno.test.afterAll 和 Deno.test.afterEach。

Reddit 上的一位用户对测试 API 中可用的新钩子表示兴奋,然而 YouTube 上的一条评论认为 beforeAll 的加入为时已晚,并指出它应该更早地实现与 Node.js 的功能对等。

运行时捆绑 API 也已发布,支持在运行时对模块进行程序化捆绑。此功能增强了在 2.4 版本中发布的 deno bundle 命令。该捆绑 API 目前是实验性的,必须使用 –unstable-bundle 标志。

WebSocket 头信息也得到了改进,允许在发起新的 WebSocket 连接时使用自定义头信息,这对于身份验证或传递自定义元数据和状态非常有益。发布博客中提到,此新功能并非在所有浏览器中都有效。

Deno 2.5 还包括性能优化。除非底层的 deno_ast 版本发生变化,否则发射缓存现在会在更新之间持久保存,减少了不必要的重新编译。CommonJS 模块包装器的内存使用量已降低,改善了 Node.js 的互操作性,而条件性 JSX 转译在 JSX 禁用时会完全跳过处理。核心 API 也进行了类似的改进:structuredClone 现在使用了更快的内部实现,并且 Buffer.subarray 和 Buffer.prototype.utf8Slice 已针对二进制数据处理进行了优化。Deno 的 Node-API 层进行了性能调优,以最小化加载原生 Node 模块时的开销。

Deno 是一个开源的、安全的 JavaScript 运行时,设计上提供一流的 TypeScript 支持、集成工具和 purposeful 默认安全。它在 GitHub 上拥有超过 10 万颗星,40 万以上的活跃社区用户和 200 万以上的社区模块。Deno v2.5 带来了许多改进和功能,您可以在 Deno 网站上的发布文章中查看完整的变更列表。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计