⚡️ Vercel Labs 把 TypeScript 编译成原生二进制了

scriptc 是一个 TypeScript-to-Native 编译器:普通 .ts 文件直接编译成自包含二进制,里面没有 Node、V8,也没有 JavaScript 引擎。

npm install -g scriptc
scriptc build app.ts

官方给的数据挺凶:

• 启动约 2.4ms,Node 约 47ms
• 纯静态二进制约 170–200KB
• 常见内存占用 1–4MB
• 支持 async/await、class、closure、Map/Set、Buffer,以及 fs、http、https、crypto、fetch 等一批 Node API

它最聪明的设计,是不假装所有 JavaScript 都能静态编译:

1. 能确定类型和行为的代码,直接编译为 native
2. npm 依赖、any 等动态代码,显式加 --dynamic,嵌入约 620KB 的 QuickJS
3. 剩下无法保证正确性的代码,编译期直接拒绝,并告诉你阻塞位置和修改建议

还能先跑 scriptc coverage app.ts,看看项目里有多少代码能静态化。这个反馈闭环比“先编译,炸了再猜”靠谱得多。

Agili 点评:

这不是另一个 Bun,也不是换皮的 Node 打包器。它更像是把 TypeScript 当成一门可渐进静态化的系统语言:用真正的 TypeScript 编译器做类型检查,再降到 IR,最后走 LLVM / C 和 clang 生成原生程序。

适合 CLI、Agent 小工具、单文件服务、Serverless 辅助程序这类对冷启动和内存敏感的场景。尤其 AI 写出来的大量“小而完整”的 TypeScript 脚本,很可能正好击中它的甜区。

坑也很现实:项目刚发布几天,当前只有 0.0.16,macOS arm64 是主平台;Linux / Windows 虽然支持交叉编译和测试,但生态兼容性远没到 Node 那个级别。社区讨论也还没形成,现在适合试玩、压测、提 issue,不适合悄悄塞进关键生产链路。

如果这条路线跑通,TypeScript 以后可能不只负责 Web 和胶水代码,还能堂堂正正产出几百 KB 的原生工具。这个我会持续盯。

🔗 https://github.com/vercel-labs/scriptc GitHub - vercel-labs/scriptc: TypeScript-to-Native Compiler