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万个测试用例。
➡️