Project Corsa:TypeScript 7 的未被讲述的故事(Git 法医惊悚)

发布: (2025年12月27日 GMT+8 19:09)
5 min read
原文: Dev.to

Source: Dev.to

演员阵容

  • Jake Bailey (The Anchor) – 基础设施负责人 & “The Fixer”
  • Anders Hejlsberg (The Architect) – 创造者 & “The Wizard”
  • Gabriela Araujo Britto (The Verifier) – 测试负责人 & “The QA Spec Ops”
  • Nathan Shively‑Sanders (The Specialist) – 解析器守护 & “The Academic”
  • Sheetal Nandi (The Scaler) – 企业 LSP & “The City Planner”
  • Mateusz Burzyński (The Sync) – 功能搬运工 & “The Bridge Runner”
  • Ron Buckton (The Transformer) – 发射器 & “The Industrialist”
  • Daniel Rosenwasser (The Bridge) – 项目经理 & “The Evangelist”

基于真实故事(以及 git 日志)。用于模拟这些开发者的完整“Persona Prompts”可在 GitHub 仓库中获取。

序章:静态噪声

年份是 2024 年。TypeScript 主宰着网络,但它的引擎——“Strada”代码库(旧版 JS)——在自身成功的重量下已经开始嘎吱作响。构建缓慢,内存占用高,社区也变得焦躁不安。在微软内部,一个秘密项目获得了批准:Project Corsa
任务: 用 Go 重写整个编译器,使其速度提升 10 倍,并且不破坏任何功能。

第一幕:下落

场景 1 – “上帝对象”

日期: 2024年10月19日,上午09:21
地点: 代码仓库

Commit: 6e692937a
Message: Initial port of compiler
Stats: +25,474 insertions

Anders Hejlsberg 提交了一个单一且巨大的提交,将核心——类型检查器、绑定器、解析器——迁移到全新的 Go 代码库中。“Genesis” 区块被挖出。

场景 2 – “哎呀”

日期: 2024年10月16日
角色: Jake Bailey(锚点)

Commit: 06103e3fc
Message: Add forgotten isFile change

在设置 CI、代码检查工具和构建脚本时,Jake 漏掉了一个文件。这是一次在整体史诗般重写中出现的小小人为失误。

第二幕:恐慌

场景 3 – 糟糕的合并

日期: 2024年11月21日,下午 02:18
提交: 9a82b808c

Message: Revert "Add basic reference/module resolution to program.go"

一次仓促的合并将复杂的模块解析逻辑引入,导致灾难性失败。Jake 紧急制动;缺乏正确的解析,编译器只能沦为普通的语法高亮器。

场景 4 – 转向

日期: 2025年2月10日
提交: 8c4573af8

Message: Hack in configDir fix for now

团队选择了务实的临时修复,以止血。“Hack” 成为一个绷带,让开发得以继续前进。

第三幕:苦差事

蒙太奇 – “测试之墙”

日期: 2025年上半年至中期
主演: Gabriela Araujo Britto(验证者)

在新引擎雏形逐步成形的同时,Gabriela 正在进行等价性测试:必须让 20 000 条测试用例的行为与旧的 JS 编译器完全一致。以下是一系列迁移测试的提交记录:

  • 3fae7ba01 – “Port document symbol tests”
  • e34615c82 – “Port workspace symbols tests”
  • 08bc24d5b – “Port baseline diagnostics tests”

她手动核对数千个输出,确保错误信息保持完全一致。

场景5 – 同步大师

角色: Mateusz Burzyński

Commit: d9178cc1f
Message: Port "Fixed crash when adding unreachable code..."

Mateusz 在旧的 “Strada” 仓库与新引擎之间搭建桥梁,迁移关键的安全修复。

第四幕:润色

场景 6 – 专家

日期: October 31 2024 (Halloween)
角色: Nathan Shively‑Sanders (语法纳粹)

Commit: c028facc6
Message: Add AsteriskAsteriskEqualsToken scanning for **=

Nathan 为很少使用的 **= 运算符添加了支持,进一步收紧了语法。

场景 7 – 最后一块

日期: November 2025
角色: Sheetal Nandi (标度器)

Commit: 66ab80db1
Message: Multiproject requests like find all refs, rename

Sheetal 实现了重型 LSP 功能,使编译器能够处理拥有 500 多个包的单体仓库。Project Corsa 从科学实验升级为企业级工具。

尾声:揭示

日期: 2025年12月
状态: 公开 Alpha (@typescript/native-preview)

Scene 4 中的 “Hack” 大部分已被移除。Jake 继续修复模块输出错误(8d8850a6a)。Gabriela 完成了测试基线。Anders 则转向下一个不可能的架构。

你,作为开发者,运行 npm install,看到构建在 200 ms 内完成,而不是 2 s,于是继续编码——对让这一切成为可能的传奇毫不知情。

Directed by Antigravity

Data provided by git log.

No actual developers were harmed in the making of this narrative (we assume).

Back to Blog

相关文章

阅读更多 »

介绍 graphql-complexity-validation

✨ 特性 - 零运行时依赖 - 完全类型化的 TypeScript - 支持 fragments 与 inline fragments - 默认忽略 Introspection 适用于: - Apollo…