TypeScript 宣布重写,达到10倍加速

80次阅读
没有评论

共计 1224 个字符,预计需要花费 4 分钟才能阅读完成。

TypeScript、C#、Delphi 语言之父 Anders Hejlsberg 今日在 Microsoft 开发者博客宣布重大消息:TypeScript 编译器以及工具链将移植到 Go 语言。

这一举动旨在解决 TypeScript 在大型代码库中性能瓶颈的问题,为开发者带来更流畅、更高效的开发体验。

在基准测试中,在一些大型的 TypeScript 项目中使用 tsc 进行编译能得到 10 倍左右的速度提升,更有一些其他项目能有 15 倍左右的提升。

根据官方公布的数据,新的原生实现将带来以下惊人的改进:
– 编辑器启动的项目加载速度提升 8 倍
– 大多数构建时间缩短 10 倍
– 内存使用量大幅减少

实测数据说话,性能提升肉眼可见!

代码库 代码行数 (LOC) 当前版本耗时 (秒) 原生版本耗时 (秒) 性能提升
VS Code1,505,00077.87.510.4x
Playwright356,00011.11.110.1x
TypeORM270,00017.51.313.5x
date-fns104,0006.50.79.5x
tRPC (server + client)18,0005.50.69.1x
rxjs (observable)2,1001.10.111.0x

为什么选择 Go 开发?

Anders Hejlsberg 和 TypeScript 团队在 GitHub 仓库的讨论区解释了为何采用 Go,主要原因有以下几点:
– 代码结构相似性:TypeScript 现有代码库采用函数式编程风格,很少使用类。而 Go 语言也以函数和数据结构为中心,与现有代码结构高度相似,这使得移植工作更加容易。
– 内存管理:Go 语言提供自动垃圾回收(GC),无需开发者手动管理内存,这大大简化了移植过程,降低了代码复杂度。同时,Go 的 GC 对 TypeScript 编译器这类批处理任务影响很小。
– 内存布局控制:Go 语言允许对内存布局和分配进行精细控制,这对于优化性能至关重要。
– 图处理能力:TypeScript 编译器涉及大量的树遍历和多态节点处理,Go 语言在这方面表现出色。

版本路线图

当前版本为 TypeScript 5.8,即将发布 TypeScript 5.9。

基于 JavaScript 的代码库将继续开发到 6.x 系列,TypeScript 6.0 将引入一些弃用和破坏性更改,为原生代码库做准备。

当原生代码库达到与当前 TypeScript 相当的功能时,将发布 TypeScript 7.0。

为了保持清晰,TypeScript 团队将分别称之为 TypeScript 6 (JS) 和 TypeScript 7 (native)。

TypeScript 6 (JS) 将持续维护,直到 TypeScript 7+ 达到足够的成熟度和采用率。

内部讨论或代码注释中可能会出现“Strada”(TypeScript 原始代号) 和“Corsa”(此次工作的代号)。

TypeScript 团队预计在 2025 年中期发布一个能够进行命令行类型检查的原生 tsc 实现,并在年底发布一个功能完整的项目构建和语言服务解决方案。

正文完
 0
评论(没有评论)
验证码