Deno 2.5发布:支持权限集与测试API钩子

Source: InfoQ - Backend

Deno",是由Ryan Dahl构建的JavaScript运行时,最近发布了2.5版本",带来了包括增加权限集(Permission Sets)、新的测试钩子和对WebSockets的改进等特性。作为发布的一部分,还有许多性能方面的改进。

Deno 2.5将运行时环境升级到V8 14.0和TypeScript 5.9.2",以便于支持更新的JavaScript语言特性和性能改进,以及对TypeScript更好的支持。发布还包括对日期和时间管理的Temporal API"的更改,目标是在未来版本中不必再使用--unstable-temporal标志。

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

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功能对齐。

捆绑包运行时(bundle runtime)API也已交付,使得在运行时可以对模块进行程序化打包。这个功能增强了在2.4版本中交付的deno bundle命令。捆绑包API目前是实验性的,必须使用-unstable-bundle标记。

WebSocket头信息"进行了改进,允许在发起新的WebSocket连接时使用自定义的头信息,这对于认证或传递自定义元数据和状态可能会有所助益。发布博客文章中有一个说明,这个新功能无法在所有浏览器中运行。

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

Deno是一个开源、安全的JavaScript运行时,目标是提供一流的TypeScript支持、集成工具和默认安全性。它在GitHub上有超过100k+星标,有400k+活跃社区用户和2M+社区模块。Deno v2.5带来了许多改进和功能,你可以在Deno网站上的发布文章"中找到完整的变更列表。

查看英文原文: Deno 2.5 Brings Support for Permission Sets and Test API Hooks"