小马队

印第安纳波利斯小马队

Versale 实验室推出 ScriptC,这是一个 TypeScript 到本机的编译器,留下了 JavaScript 引擎

Versale 实验室推出 ScriptC,这是一个 TypeScript 到本机的编译器,留下了 JavaScript 引擎


Vercel Labs 发布了 scriptc,这是一个实验性的 Apache 2.0 许可编译器,可以将常规 TypeScript 转换为小型本机可执行文件,而无需 Node、V8 和二进制 JavaScript 引擎。

该存储库于 2026 年 7 月 22 日创建,自那时起已收集了约 4,900 颗星。 scriptc 使用真正的 TypeScript 编译器进行解析和类型检查,将程序简化为类型化 IR,然后通过 WASI Preview 1 发出可读的 C、LLVM IR、程序集、对象、本机可执行文件或 WebAssembly。

每个构建都位于三层之一:默认静态编译,在大约 620KB 的嵌入式 QuickJS-ng 引擎上动态运行 --dynamic 接受 npm 包和 any 代码在编译时用 SC 代码和重写指令输入或拒绝。

ScriptC 0.0.16 与 Bun 1.3.12 和 Node 24.18.0 的基准测试记录了 Bun 的 CLI 启动中位数为 1.78 毫秒,Bun 为 21.29 毫秒,Node 为 61.78 毫秒,Framework Free 的空闲内存为 1.9MiB node:http 服务器。同样的测试发现Hono需要 --dynamic将 62% 的服务器推送到 QuickJS 中,每秒减少 18.4k 请求,而 Bunn 为 70.5k。

在 Hacker News 上,一位开发人员报告称,他们的运行速度比 Node 24 慢 7.5 倍:

查看字节范围结果(最佳情况):scriptc 比节点 24 慢 7.5 倍,即使在 claud 尝试进行一些特定于脚本的优化之后也是如此。但可执行文件的启动速度提高了 12 倍(1.5 毫秒 vs 18.6 毫秒),使用的内存减少了 72 倍(2.5 MiB vs 181 MiB),并且是一个 370 KB 的可执行文件,没有运行时依赖性。

Philip Pizzlo 认为,对所有数字使用浮点数并延迟整数推理可以绕过“快速 JS 的一半问题”,并且依赖 QuickJS 并不适合性能项目。 any 真正的节目在岛上是很常见的。

Simon Willison 指出,Coding Agents 在一周内完成了 918,000 行代码,并补充说,在不编写 C 或 Rust 的情况下构建小型、快速的二进制文件“似乎是一种宝贵的能力”。

一位开发人员发现,覆盖范围在每个本地项目中都会产生数百个错误:

尽管它越来越令人讨厌,但我想我至少应该尝试一下,并在我本地的任何项目上尝试一下。对它们中的每一个进行覆盖都会产生数百个错误,并且基本上是无用的。我知道我可以从头开始编写一个项目,不使用任何第三方库,它会编译为二进制文件,但为什么我不能使用 Rust、Go、Jig、D、C、V、Ada、C++、Nim、Swift、Kotlin Native、Haskell…任何旨在编译和编译良好的东西?

寿命是一个反复出现的问题,评论者指出了 Versel 的 Zerolong,它在发布几周后就停止接受提交。 Remo Jansen 尝试编译 TypeScript 6 编译器因内部编译器错误而失败,尽管他测量到冷启动时间为 3.6 毫秒,而 Node 的冷启动时间为 48.9 毫秒,计算速度慢得多,为 2.33 秒。

编译器需要 Node.js 24 或更高版本才能安装 npm install -g scriptc限制页面记录了值得首先阅读的差异:字符串存储为 UTF-8,内存被计为引用而不是垃圾收集, Object.keys 报告令声明,以及 process.argv[0] 有 "scriptc"。 npm 依赖项指南中介绍了依赖项行为,包括实验性 --npm-static 在岛外编译命名包的标志。

scriptc 面向 macOS、Linux、Windows 和 WASI Preview 1 它通过比较 stdout、stderr 和退出代码字节与节点的差异测试来运行,并且显然是实验性的。文档位于 scriptc.dev 中。





Source link

Leave a Reply

Your email address will not be published. Required fields are marked *