0

TypeScript 团队解释为何选择使用 Go 语言进行重构

昨天,微软宣布对 TypeScript 编译器及工具链进行 Go 语言重构,这次重构能让 TypeScript 的编译性能提高十倍。TypeScript 团队也分享选择 Go 语言的原因,具体如下:

TypeScript 团队在对多种编程语言进行深入评估后,最终选择了 Go 作为 TypeScript 代码库迁移的目标语言。这个决定的核心原因在于,Go 语言在保持代码结构相似性、优化内存管理以及简化图处理任务方面表现出色,同时能够有效降低迁移的复杂度。相比从零开始重写,团队更倾向于一种平稳过渡的方式,使新旧代码库可以长期并存,并确保未来的代码变更能够轻松在两者之间同步迁移。

具体而言,Go 语言的代码风格与 TypeScript 代码库高度相似,使得迁移更加可行。它不仅提供了精细的内存布局和分配控制,还通过自动垃圾回收(GC)减少了开发者对内存管理的关注,而这对于当前的代码库而言几乎没有额外的性能损耗。在批量编译的场景下,进程在完成后便会终止,GC 的影响可以忽略不计。而在非批量编译的情况下,由于许多数据结构(如 AST)在整个程序生命周期内都保持有效,团队可以基于领域知识在合适的时机触发 GC,从而进一步降低运行时的开销。此外,Go 在处理多态树结构遍历时的优越表现,使其在保证可读性和可维护性的同时,能够更高效地执行关键任务。

当然,团队也认识到 Go 语言在 JavaScript 互操作方面存在一定的局限性。为了弥补这一不足,他们计划优化 API 设计,使其既能保持高性能,又能提供更好的可用性。当前的 API 允许用户自由访问和修改内部数据,虽然提供了极大的灵活性,但也限制了底层实现的优化空间。新代码库将采用更有意图的 API 设计,既能确保未来的灵活优化,又不会破坏现有 API 用户的使用体验。这一迁移不仅能够带来巨大的性能提升,还将为 TypeScript 生态系统的未来发展奠定坚实的基础。

via GitHub

0 评论
内联反馈
查看所有评论
订阅
X

您正在使用 IE 6 浏览器访问本博客。简单几步,您就可以升级:Internet Explorer

X
0
希望看到您的想法,请您发表评论x