21CTO导读:Cloudflare正在开发Rust版本的TypeScript编译器,内存较Go版本减少70%,速度超过Go版本8倍左右,并与Go版本兼容。
Cloudflare正在投入开发Rust版TypeScript编译器tsrs。
初步测试中显示内存占用量较Go版减少约70%,并提供Wasm版本,可直接在浏览器检查代码并产生JavaScript。
Cloudflare旗下VoidZero团队,正与Owner.com工程师合作开发Rust版TypeScript编译器tsrs。初步测试显示,与微软的Go版TypeScript 7.0使用相同数量的型别检查工作执行时,tsrs最高快8倍,内存用量约减少70%。
目前已对外提供实验版本,也能通过WebAssembly(Wasm)在浏览器执行类型检查。
TypeScript是以JavaScript为基础的程序设计语言,开发者可通过类型检查提前查到错误。项目规模越大,需要检查的文件越多,所花时间和内存用量也将增加。
微软先前已将TypeScript编译器改以Go语言运行,大幅改善检查速度,而tsrs则将Go版再次移植成Rust,希望在维持相同检查结果的情况下,进一步减少资源消耗。
Rust对Wasm的支持,是tsrs的一项优势,能够让编译器能在浏览器等环境执行。这样能够在浏览器里、嵌入式设备上、IoT 应用里,运行一个完整的开发环境。Go程序转成Wasm时,还需包含负责自动管理内存的垃圾回收组件,而Rust则不必加入相同机制,有助于减少内存负担,而tsrs已提供Wasm套件,可直接在浏览器检查TypeScript代码,并产生JavaScript与类型声明的文件。 tsrs的浏览器版本目前仅支持单线程执行,尚未支持供编辑器使用的语言服务。
Cloudflare强调,tsrs不是fork,会严格遵循微软TypeScript团队的设计决策,避免与官方版本出现不兼容问题。团队也已与微软确认效率测试采用相同设定,部分tsrs的效能改进已纳入Go版编译器。现有实验版本仍与微软版本有部分差异,例如错误信息的显示顺序尚未完全一致,开发团队接下来计划将tsrs与另一个Rust移植专案tsc-rs整合成单一组件,支持语言服务等新功能。
Cloudflare 明确表态道:“我们相信 TypeScript 团队应保持对语言设计和方向的完全控制,不希望改变这一点。”Rust 移植必须严格跟随原实现,否则迟早会分叉失配。这也说明了做 Rust 移植的人都在强调“忠实”:TypeScript 团队对某些特性花了多年探索原型才定出方案,移植版跟不上就会朽坏。
也有其他团队推出TypeScript相关工具。
比如Bun在10月发布了1.4.3版,新增移植自Go版TypeScript的类型检查器bun check,可在执行程序前找出类型错误,但不负责输出JavaScript。 Vercel Labs则推出tsc-ts,将Go版编译器重新以TypeScript实践,再通过自家工具scriptc转换成可直接执行的原生代码,支持类型检查及JavaScript输出。
作者:场长
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。