Ruby发明者Matz借助AI开发原生编译器
Ruby创建者Yukihiro Matsumoto(Matz)正在Anthropic的Claude协助下构建Spinel,一个实验性的Ruby提前编译(AOT)编译器。Spinel将Ruby代码转换为C语言,性能提升显著,但存在诸多限制,包括不支持eval、线程等特性。
文章情报
要点
- Matz使用Anthropic的Claude Code开发Ruby的AOT编译器Spinel。
- Spinel将Ruby AST转换为C代码,执行速度比MiniRuby快11.6倍。
- Spinel有局限:不支持eval、线程、元编程等,且与大多数现有Ruby代码(如Rails)不兼容。
- 该项目是实验性的,已使用AI生成的代码重建三次。
为什么重要
这条新闻值得关注,因为Matz使用Anthropic的Claude Code开发Ruby的AOT编译器Spinel。
技术影响
可能影响模型选型、推理成本、产品能力和评测基准。
Ruby的发明者Yukihiro Matsumoto(更广为人知的名字是Matz)正在利用Anthropic的Claude Code构建一个名为Spinel的实验性原生编译器。Spinel是一个提前编译(AOT)编译器,旨在将Ruby代码直接编译为原生可执行文件,从而大幅提升性能。
Spinel的工作原理是将Ruby代码解析为抽象语法树(AST)文件,然后将其转换为C代码,最后通过标准的C编译器(如Linux或Windows上的gcc,或macOS上的LLVM Clang)编译成原生可执行文件。据Matz的测试,使用Spinel编译的代码在Roby 4.1.0上运行速度比MiniRuby(一个精简版Ruby构建)快约11.6倍。
Ruby传统上是一种解释型语言,依赖运行时引擎解析和执行代码。为了提高性能,Ruby社区开发了多种即时编译(JIT)技术,如MJIT、YJIT和ZJIT,其中后两者由Ruby的重度用户Shopify开发。Spinel与这些JIT编译器不同,它生成独立的原生代码可执行文件,无需任何额外运行时即可部署。
然而,Spinel目前仅支持Ruby的一个子集。不支持的特性包括:eval语句(运行时评估和执行Ruby代码)、线程、除UTF-8之外的文本编码、元编程(如运行时定义方法)以及深度嵌套的lambda函数。由于Ruby变量无类型化而对象强类型化,Spinel通过类型推断来生成C代码。它使用了成熟且成熟的Ruby解析器Prism,并实施了多种优化,如方法内联和死代码消除。生成的C代码在默认警告级别下编译无误。Spinel还包含一个垃圾收集器以自动回收内存,并支持外部函数接口(FFI),可与libc或SQLite等原生代码库集成。
目前Spinel仍处于实验阶段,无法与大多数现有Ruby代码(包括流行的Web框架Ruby on Rails)配合使用。不过,Ruby开发者可以针对Spinel编写代码,例如编写辅助函数,然后从其他Ruby代码中调用,以此作为优化手段。
Matz在上个月于日本函馆举行的RubyKaigi 2026大会上介绍了Spinel。据与会者透露,Matz表示Spinel的想法三年前就已形成,但借助AI仅在几周内就实现了。Spinel仓库中的大部分代码都带有注释“co-authored by: Claude Open 4.7 (1M context)”。此外,该项目已经在一系列实验中重建了三次。
Matz可能是AI生成代码的理想用户。他理解代码,能够从开发速度的提升中获益,同时不会失去对代码功能的掌控,并能够利用他现有的技能以及进一步的AI提示来优化代码。此外,这些代码还经过了数百个测试和基准测试的验证。