优快云 公众号发文《微软弃用C#、Rust,选Go拯救TypeScript编译器“中年危机”!C#之父亲自操刀,150万行代码编译现仅需7.5秒》
先说个人读后感,这篇文章主观性太强,有故意抹黑 C# 的倾向,掐头去尾,直接给出微软弃用 C# 这样的话术。
推荐看这篇文章《Anders Hejlsberg亲自操刀向Go语言移植!TypeScript编译器性能狂飙10倍!》
以下是原文转载内容:
TypeScript、C#语言、Delphi语言之父Anders Hejlsberg[1]今日在Microsoft开发者博客宣布重大消息,TypeScript编译器以及工具链将移植到Go语言[2],性能提升高达10倍!这究竟是怎么回事?为什么要用Go?对开发者有什么影响?本文将为你深度解读。
TypeScript迎来史诗级更新,性能提升10倍!
就在今天,TypeScript
社区迎来了一颗重磅炸弹!微软技术院士、TypeScript
首席架构师、C#
、Delphi
和 Turbo Pascal
的最初设计者——Anders Hejlsberg
,亲自在微软开发者博客上宣布,TypeScript团队正在进行一项激动人心的计划:将TypeScript编译器和相关工具链移植到Go语言!
这一举动旨在解决TypeScript在大型代码库中性能瓶颈的问题,为开发者带来更流畅、更高效的开发体验。根据官方公布的数据,新的原生实现将带来以下惊人的改进:
- 编辑器启动的项目加载速度提升8倍!
- 大多数构建时间缩短10倍!
- 内存使用量大幅减少!
这意味着,开发者将告别漫长的加载和等待,享受“秒开”项目的快感,获得更流畅的代码编辑、智能提示、代码导航等体验。
实测数据说话,性能提升肉眼可见!
为了证明新版编译器的强大性能,TypeScript
团队选取了 GitHub
上多个不同规模的热门 TypeScript
项目进行测试,以下是测试结果:
从数据中我们可以清晰地看到,无论是大型项目如 VS Code
,还是小型库如 rxjs
,新版编译器都实现了 10 倍左右的性能提升!
Anders Hejlsberg
表示,这仅仅是开始,随着开发的深入,性能还将进一步优化。
为什么要移植到Go?
面对这一重大变革,很多开发者可能会疑惑:为什么选择 Go
语言?C#
或者Rust
不香吗?对此,Anders Hejlsberg
和 TypeScript
团队在 TypeScript GitHub仓库的讨论区[9]
进行了解释,主要原因有以下几点:
- 代码结构相似性:
TypeScript
现有代码库采用函数式编程风格,很少使用类。而Go
语言也以函数和数据结构为中心,与现有代码结构高度相似,这使得移植工作更加容易。 - 内存管理:
Go
语言提供自动垃圾回收(GC
),无需开发者手动管理内存,这大大简化了移植过程,降低了代码复杂度。同时,Go
的GC
对TypeScript
编译器这类批处理任务影响很小。 - 内存布局控制:
Go
语言允许对内存布局和分配进行精细控制,这对于优化性能至关重要。 - 图处理能力:
TypeScript
编译器涉及大量的树遍历和多态节点处理,Go
语言在这方面表现出色。
Anders Hejlsberg
强调,这是一次 “移植”
而非 “重写”
,目标是尽可能保留现有代码库的结构和语义,确保兼容性。Go
语言的特性与 TypeScript
现有代码库的契合度最高,是 “阻力最小”
的路径。
针对社区关心的为什么不选择C#,Anders Hejlsberg也做了专门回应:
Go
是能同时做到原生性和自动垃圾收集的最低层级语言。C#
是字节码优先的,虽然也有AOT
编译,但有平台限制,且没有像Go
一样经过长时间的生产环境验证。C#
是重OOP
范式的,TypeScript
的JS
代码库是高度函数式的。
版本路线图
TypeScript
团队公布了明确的版本路线图:
- 当前版本为
TypeScript 5.8
,即将发布TypeScript 5.9
。 - 基于
JavaScript
的代码库将继续开发到6.x
系列,TypeScript 6.0
将引入一些弃用和破坏性更改,为原生代码库做准备。 - 当原生代码库达到与当前
TypeScript
相当的功能时,将发布TypeScript 7.0
。 - 为了保持清晰,TS团队将分别称之为
TypeScript 6 (JS)
和TypeScript 7 (native)
。 TypeScript 6 (JS)
将持续维护,直到TypeScript 7+
达到足够的成熟度和采用率。- 内部讨论或代码注释中可能会出现
“Strada” (TypeScript 原始代号)
和“Corsa” (此次工作的代号)
。
TypeScript
团队预计在 2025
年中期发布一个能够进行命令行类型检查的原生 tsc
实现,并在年底发布一个功能完整的项目构建和语言服务解决方案。
开发者可以做什么?
- 尝鲜体验: 你现在就可以从
typescript-go仓库[10]
构建和运行Go
语言编写的代码,体验新版编译器的强大性能。 - 关注动态: 关注
TypeScript
团队的博客和GitHub
仓库,获取最新进展。 - 参与讨论: 参与
TypeScript Community Discord[11]
的AMA
活动(太平洋时间 3 月 13 日上午 10 点 | UTC 时间下午 5 点),与TypeScript
团队交流。
展望未来
10
倍的性能提升,将为 TypeScript
和 JavaScript
开发体验带来巨大飞跃。曾经遥不可及的功能,如今触手可及。这不仅意味着更快的编译速度和更流畅的开发体验,还将为AI驱动的新一代开发工具奠定基础。
TypeScript
的这次重大变革,再次证明了微软对开发者社区的承诺,以及对技术创新的不懈追求。让我们一起期待 TypeScript
的未来,迎接更高效、更智能的开发时代!
参考资料
- [1]
Anders Hejlsberg
: https://github.com/ahejlsberg - [2]
TypeScript
编译器以及工具链将移植到Go
语言: https://devblogs.microsoft.com/typescript/typescript-native-port/ - [3]
VS Code
: https://github.com/microsoft/vscode - [4]
Playwright
: https://github.com/microsoft/playwright - [5]
TypeORM
: https://github.com/typeorm/typeorm - [6]
date-fns
: https://github.com/date-fns/date-fns - [7]
tRPC
: https://github.com/trpc/trpc - [8]
rxjs
: https://github.com/ReactiveX/rxjs - [9]
TypeScript GitHub
仓库的讨论区: https://github.com/microsoft/typescript-go/discussions/411 - [10]
typescript-go
仓库: https://github.com/microsoft/typescript-go - [11]
TypeScript Community Discord
: https://discord.gg/typescript - [12]
A 10x Faster TypeScript
: https://devblogs.microsoft.com/typescript/typescript-native-port/ - [13]
discussions: Why Go?
: https://github.com/microsoft/typescript-go/discussions/411 - [14]
TypeScript is being ported to Go | interview with Anders Hejlsberg
: https://www.youtube.com/watch?v=10qowKUW82U