Rubyの作者がネイティブコンパイラSpinelを開発

原題: Spinel: Ruby AOT Native Compiler

なぜ重要か

Ruby言語の高速化とネイティブコンパイル技術の発展において、言語作者自らが開発する本格的なAOTコンパイラとして注目される

Ruby言語の作者Matzが、RubyソースコードをネイティブバイナリにAOTコンパイルするSpinelをGitHubで公開した。全プログラム型推論を実行してC言語コードを生成し、CRubyより大幅な高速化を実現する。コンパイラバックエンドはRuby自体で書かれたセルフホスティング設計となっている。

Ruby言語の作者として知られるMatz(松本行弘)氏が、新しいRuby AOT(Ahead-of-Time)ネイティブコンパイラ「Spinel」をGitHubで公開した。このプロジェクトは920スターを獲得している。Spinelは、RubyソースコードをランタイムCRubyを必要としないスタンドアロンのネイティブ実行ファイルにコンパイルする。コンパイラは全プログラム型推論を実行し、最適化されたC言語コードを生成することでCRubyと比較して大幅な性能向上を実現する。特筆すべき点として、コンパイラバックエンドがRuby言語自体で記述されており、自身をネイティブバイナリにコンパイルできるセルフホスティング設計となっている。動作プロセスは、まずPrismパーサーでRubyコードを解析してAST(抽象構文木)を生成し、次にspinel_codegenが型推論とC言語コード生成を実行、最後に標準的なCコンパイラがランタイムヘッダーと組み合わせてネイティブバイナリを出力する仕組みとなっている。

出典

github.com — 元記事を読む →