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