这段 YouTube 视频(具有出色的制作价值 – “保守地说,这个 7 分钟视频投入了 200 个小时”)描述了一个极其荒谬的项目:Dimitri Mitropoulos 花了整整一年的时间让《DOOM》完全通过 TypeScript 编译器 (TSC) 运行。
在此过程中,他在类型系统中实现了完整的 WASM 虚拟机,包括实现 DOOM 所需的 116 个 WebAssembly 指令,从整数算术开始,并结合内存管理、动态调度等,所有这些都在存储为字符串文字的二进制补码数字之上运行。
最终结果是 177TB 的数据,代表 3.5 万亿行类型定义。以每秒 2000 万个类型实例化的速度运行了 12 天,渲染《DOOM》的第一帧。
这是 WASM 运行时的源代码。 Add 、 Divide和ShiftLeft/ShiftRight的代码提供了一个简洁的示例,说明了该项目涉及的复杂性。
这个项目最让我高兴的是你需要充分吸收各种主题才能完成它 – 不仅是 TypeScript,还有 WebAssembly、虚拟机实现、TSC 内部结构和 DOOM 本身的架构。
原文: https://simonwillison.net/2025/Feb/27/typescript-types-can-run-doom/#atom-everything