Deno 1.39:WebGPU 回归

Deno的1.39版本发布标志着该平台的一个重要更新,其中包含多项引人注目的改进和新特性。

WebGPU的回归

Deno 1.39重新引入了WebGPU API的支持,这一决定标志着对于高性能、跨架构的GPU编程在JavaScript中的重要进展。WebGPU API,被视为WebGL的有效继承者,为开发者提供了一种低级别、高性能的方式来直接编程GPU硬件。此规范已被最终确定,并且已经在Chrome浏览器中提供。Firefox和Safari也正在进行相关支持的开发工作。

Deno最初在2021年初引入了WebGPU的支持,但由于性能问题,这一特性在今年早些时候被移除。现在,这些性能问题已经得到解决,重新引入了WebGPU。GPU在执行某些数值运算方面,相比于CPU,能够提供极高的并行处理能力。这一点不仅在渲染和游戏中非常有用,也在诸如机器学习算法这样的应用中展现出极高的效率,因为这些算法通常可以被表达为一系列矩阵运算,而这些运算可以在GPU上高效执行。

Deno中的WebGPU实现基于即将在Firefox中推出的WebGPU实现的同一底层系统,因此,开发者可以有信心地在这一基础上构建应用。

以下是一个使用WebGPU获取GPU信息的基本示例代码:

更多示例可以在他们的webgpu-examples仓库中查看。

尽管规范已稳定,但在Deno中,WebGPU仍然被视为不稳定。要在Deno中使用WebGPU,需要使用–unstable-webgpu标志。Deno团队计划在从社区获得更多反馈,并有更多时间对实现与规范测试套件进行验证后,很快将其稳定下来。

为了提供更多的WebGPU功能,Deno还添加了std/webgpu。

更灵活的动态导入支持

在此版本中,deno compile现在支持更多动态导入模式。由于Deno需要在编译过程中静态包含所有可能在运行时被导入的模块,因此动态导入曾是一个挑战。现在,Deno能够处理更复杂的动态导入模式,例如使用模板字符串的导入语句。

Deno语言服务器(LSP)的增强

为了提升Deno语言服务器的性能,1.39版本引入了显著的性能改进。这包括优化了快速打字期间大量请求的处理,使在IDE中的编辑体验更为流畅。此外,新增了一个关机超时机制,以及最新版本的Deno更新通知功能。

Node.js兼容性改进

1.39版本为了方便将现有的TypeScript代码库迁移到Deno,引入了对不规范导入的支持。例如,它允许在没有文件扩展名的情况下解析导入,或者使用不正确的文件扩展名导入TypeScript文件。此外,还增加了对node_modules/.bin/目录中可执行文件在deno task中的运行支持。

Deno API的变更

新版本中也包括了对Deno API的若干更改。例如,对于Unix套接字的Deno.serve()支持已稳定化,以及Deno.HttpServer.shutdown()的稳定化。此外,引入了Deno.HttpClient的使用关键字支持,以及对变更通知的Deno.Kv.watch() API。

其他特性和修复

1.39版本还包括了其他许多新特性和修复,如TypeScript 5.3的支持,对Jupyter笔记本中代码块的格式化支持,以及多项对Node.js API的更新和错误修复。

这些更新和改进共同提升了Deno的性能、灵活性和兼容性,使其成为开发现代JavaScript和TypeScript应用程序的一个更加强大和多功能的平台。