TypeScript 编译器 Go 重写版提速 10 倍:微软团队深度揭秘幕后工程细节

💡 原文中文,约5700字,阅读约需14分钟。
📝

内容提要

微软将TypeScript编译器重写为Go版本,性能提升10倍,解决了JavaScript的多核利用和内存限制问题,采用并发设计,显著缩短编译时间。尽管放弃了一些特性,团队认为这一转变是值得的。TypeScript 7.0预计将于未来发布。

🎯

关键要点

  • 微软将TypeScript编译器重写为Go版本,性能提升10倍。
  • 新编译器解决了JavaScript的多核利用和内存限制问题。
  • TypeScript自2012年发布以来一直采用自举方式编写编译器。
  • JavaScript无法高效利用多核CPU,导致大型项目编译时频繁OOM。
  • 新编译器必须编译为原生机器码,支持多线程共享内存。
  • Go语言因其内存管理、结构相似性和跨平台支持被选为新语言。
  • 团队通过手写原型验证了Go的性能,初步代码解析速度达到原版的5倍。
  • 使用自动化工具ts-to-go加速TypeScript代码向Go代码的迁移。
  • Go版本编译器实现了高度的并行化,编译时间从80秒缩短到7秒。
  • 移植过程中遇到影子变量、方法值分配和字符串拼接等问题。
  • 团队放弃了一些TypeScript特性以换取性能提升。
  • TypeScript 7.0预计将于未来发布,已通过10万个测试用例。
➡️

继续阅读