新的 Deno 1.39 已推出 WebGPU 支持、新的覆盖报告器、更好的 Node.js 兼容性和TypeScript 5.3 ,不过该团队警告说 TypeScript 装饰器即将发生重大变化。
全新的WebGPU
实际上,WebGPU 之前曾在 Deno 中出现过,它在 2021 年 3 月作为“实验性支持”。
当时Deno这样表示:
“我们相信 JavaScript如果有适当的基础设施,则可以代替 Python 成为表达数学思想的理想语言”.
当时的版本推广就是用于通用 GPU 计算和 GPU 渲染的 API。
在过去一年后,在 Deno 1.32 中,WebGPU 旋即被删除,原因是“支持 WebGPU 带来了成本,导致 deno 二进制文件更大,且启动速度更慢,并不适合所有用户,即使他们没有使用它。”
现在这些问题现在似乎已得到解决,尽管该功能仍然被指定为“不稳定”,但可以使用 –unstable-webgpu 标志。Deno 团队表示,该规范是稳定的,并且 API 是“开发人员构建的坚实基础”。
WebGPU 是一个 W3C API,Deno 实现了基于与 Firefox 相同的内核。自 2023 年 5 月版本 113 起,Google Chrome 就已经支持该 API。WebGPU 是 WebGL 的后继者,后者不能很好地处理通用 GPU 编码,被广大开发者诟病。
静态支持与TypeScript
Deno Coverage 是一个报告测试覆盖率的工具。此版本的新增功能是能够将报告输出为汇总表或 HTML。输出可以托管在静态文件服务器上,例如 GitHub Pages。
此版本中改进了 Node.js 兼容性,支持在 deno 任务中运行 node_modules/.bin 目录中的可执行文件、支持 node_modules 中的 CommonJS 入口点、其他 Node.js API 等等。
TypeScript 5.3 随此版本一起发布,因为 Deno 声称 TypeScript 优先。不过,关于 TypeScript 装饰器、附加到类、方法、访问器、属性或参数的声明,存在一个复杂性。TypeScript 长期以来一直将装饰器置于实验性的旗帜下,称为第 2 阶段装饰器。TypeScript 5.0 引入了不兼容的 ECMAScript 标准装饰器(称为第 3 阶段装饰器),但在使用实验标志时保留了其旧行为。Deno 默认实现了实验性装饰器,这可能是一个错误。该团队警告说,下一个 Deno 版本 1.40 会将默认值更改为第 3 阶段装饰器,这是一项重大更改 - 尽管可以通过将 ExperimentalDecorators 标志添加到项目的 deno.json 配置文件中来避免这一更改。
另外,Deno 竞争对手 Bun 并没有停滞不前,在四天内发布了三个版本(1.0.16、1.0.17 和 1.0.18),主要是错误修复和性能改进,尽管 1.0.17 版本 将前 500 个 npm 软件包添加到允许列表中,以便预安装、安装和安装后脚本无需特定权限即可运行,从而大大提高了兼容性。
小结
关于 Deno 1.39,最受前端开发者关注的是 WebGPU。
一个开发者这样说道:
“作为一个讨厌 Python 的人,我希望能够推出一些更优秀的 TS WebGPU 库”。