Rust で Ruby の拡張を書くことができるらしい

私は Windows 使いなので Windows を使って Rust で Ruby を拡張したい。 最近(といっても半年前)rubygem が Rustで書けるようになったらしいので書いていきたい。

Ruby をインストール

rubyinstaller.org

ここから +DevKit のインストーラーを使ってインストール

RubyInstaller2でMinGWも入れます。

MinGW版Rustをインストール

qiita.com

こちらを参考に MinGW版Rustをインストール

PATH / PKG_CONFIG_PATH / XDG_DATA_DIRS は DevKit内のMInGWのパスを指定します

pacman のインストールは clang のパッケージまでやりました。

pacman -Syuu
pacman -S mingw-w64-x86_64-toolchain base-devel msys2-devel
pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-llvm mingw-w64-x86_64-clang-tools-extra

Ruby拡張を書く

blog.katsyoshi.org

上記を参考に作成します。

gem は rb_sys と rake-compiler をインストールしておきましょう

gem install rb_sys
gem install rake-compiler

bundle gem の行は 写経すると動かないので bundle gem rust_uuid --mit --ext としましょう。

まとめ

Ruby は YJIT も Rust で書き直されていて、 Rust と Rust の親和性はどんどん高まっていますね。 Matz は コアはずっとC言語だろうと言われていますが、 エコシステム(特にC拡張部分) は Rust でどんどん置き換わっていくかもしれませんね。