AI News HubLIVE
站内改写

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提示來優化代碼。此外,這些代碼還經過了數百個測試和基準測試的驗證。