chenglou/handwired
机器学习把普通 JavaScript 的控制流编译成可微的矩阵乘加 ReLU 计算图,让程序无需训练即可在 GPU 上并行执行。
解决什么问题
真实的代码大多是控制流:分支、循环、可变状态。GPU kernel 和神经网络运行时是为稠密算术设计的,想把普通程序搬上 GPU,通常得用 kernel 语言或张量 DSL 重写。Handwired 走的是反方向:把 JavaScript 的 if-else、循环和状态下降成 float 上的矩阵乘法加 ReLU,再在 JS 或 WebGPU 上执行。README 自己的例子很能说明问题:一个对常量的三元表达式被改写成两个 ReLU 构成的指示函数,两个分支都计算,再用算术结果挑一个。
有什么不同
和 PyTorch 这类数组式张量框架相比,Handwired 不是拿来写模型的库,而是对程序结构做变换。和手写 WebGPU compute shader 相比,你保留普通单线程 JavaScript,由编译器去找并行度。真正有特点的只有两点:因为输出只剩 matmul 和 ReLU,整个程序是可微的,所以冻结的权重可以解冻训练,也可以把一个冻结程序接到通用网络上端到端训练;也因为原语集合极小,fusion、稀疏化、重排这类 GPU 优化有了很好的下手对象。
适合谁
适合研究者和对编译器好奇的工程师,用来玩一些奇怪的问题:训练程序里的常量到底会发生什么,或者怎样用普通 JS 在 GPU 上对 10 万份文档做带分支的搜索。README 里那个毫秒级的 JSON 搜索 demo 是最具体的卖点。它不适合现在就要上生产推理的团队:README 没有给出 API 稳定性、错误处理或真实 JS 语义覆盖的承诺,"无需训练、精确"的说法只在展示的玩具例子上成立,并不保证任意代码。如果你需要成熟的 GPU 张量库或模型服务栈,应该另找工具。
上手成本
README 坦诚地表明项目处于早期:clone 之后 bun install,再 bun start,然后去读 docs/、src/ 和 template/。这意味着需要 Bun 运行时,并且愿意读源码而不是文档。项目是 MIT 协议, licensing 不是障碍。主要风险在成熟度和语义覆盖:README 是概念宣讲加 demo,lab/ 被明说是一堆旧实验,看或不看都行。浮点数的数值行为、无界循环怎么处理、到底支持多少 JavaScript 特性,在提供的材料里都没有说明,所以这些说法应当当作方向而非保证。
点评
Handwired 是一个真正少见的想法:把程序编译成可微计算图,而且原语集合小到让 GPU 优化变得可行。但 HotRepo 的信号说明这是全新项目:只有 9 天,约 1,984 star,在新 TypeScript 榜上起步很快,并没有长期跟踪的历史;外面唯一的讨论是一条安静的 Hacker News 帖子。这个形态说明它是一波爆发,而不是成熟工具。如果你喜欢编译器和自动微分实验,或者想验证"训练冻结程序"这条思路,值得花一个下午;在语义和 API 有文档之前,不值得依赖。
Hacker News 讨论
本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。