Ruby3 さみっと online - connpass を見ていました。 Ractorの発表を見て使ってみたくなったので環境を整えてみます。
ビルドする
https://github.com/ko1/ruby/tree/ractor のソースコードをビルドします。
git clone git@github.com:ko1/ruby.git ractor
cd ractor
git checkout ractor
autconf
./configure
make
ractor.c:1105:13: error: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Werror,-Wshorten-64-to-32] r->id = ractor_next_id();
が出ます。
Mac で ruby-1.9.3-p385 がビルドできない問題を素早く解決する - Qiita を参考にして環境変数でCFLAGS=-Wno-error=shorten-64-to-32
を指定します。
CFLAGS=-Wno-error=shorten-64-to-32 ./configure make
コンパイルは成功しました。
rubyコマンドを実行するとrubygems.rb
が見つからずにエラーになります。
~ ./ruby Traceback (most recent call last): 1: from <internal:gem_prelude>:one:in `<internal:gem_prelude>' <internal:gem_prelude>:one:in `require': cannot load such file -- rubygems.rb (LoadError)
make install
も実行する必要があるようです。
PCの環境が壊れるかもと考えると億劫です。
Dockerイメージを使う
id:wakaba260yen さんがDockerイメージを用意していてくれました。 使ってみます。
~ docker run --rm wakaba260/ruby-ractor-dev ruby -e 'r = Ractor.new(42) { p _1 }; r.take' 42
たとえば ring.rb
を実行するには次のように実行します。
~ docker run --rm -v (pwd):/ractor wakaba260/ruby-ractor-dev ruby ractor/ring.rb :setup_ok 1 :fin