3.2.0 と YJIT を有効にしたらパフォーマンスが向上した!という報告が相次いでいるので、じゃあアップデートしておくかと手頃なアプリケーションを Ruby 3.2.0 にアップデートして YJIT を有効にしておいた。
dep: add ruby 3.2 support by flavorjones · Pull Request #2732 · sparklemotion/nokogiri
なお、Rails アプリケーションというか nokogiri の pre-compiled バイナリは Ruby 3.2.0 の macOS ではまだ動くものがリリースされてないので従来の ruby
platform を bundler で追加してソースコードからビルドするように設定する必要がある。やることとしては heroku の場合、Gemfile の中の Ruby バージョンを 3.2.0 などに書き換えてから、以下のような手順になる。
$ bundle up --bundler
$ bundle lock --add-platform ruby
$ bundle i # または bundle up
とりあえず hsbt.org で動かしている tDiary や、https://bugs.ruby-lang.org/ 、https://rubyci.org/ を Ruby 3.2.0 と YJIT 有効にした限りは動いているっぽい。
タイトルが全部シリーズです。C 拡張な gem は ext
ディレクトリの下に .c などを配置してその下でビルドしたのち lib
にコピー(=インストール)という手続きを踏んでいます。今回 RubyGems 3.4 ではこの処理のうち、インストールが終わったあとは ext
の下を make clean
して不要なファイルを消すようになったんですが、この影響でいくつかの gem で動かないよ〜という報告が来たのであれこれ直していた。
https://github.com/rubygems/rubygems/issues/6205
要は ext
の下を直接参照するようなコードがあって、そういう行儀が悪いコードは落ちますというものだった。最初はこれは revert した方がいいかなあとも思ったけど、数次第なら gem の方を直せばいいか、という気持ちになってきた。
ひとまず様子見しつつ、行儀悪い方を直しまくっていく。
Ruby 3.2 がリリースされたので毎年恒例となっていたリリースパーティーを2年ぶりにオフライン会場で開催してきた。
https://andpad.connpass.com/event/268447/
アンドパッドにはいい感じのスペースがあるので、ここで例年のパーティーをやればいいのでは?と思いつきで関係各所に話をしつつ、社内でも運営メンバーを編成してくれてハイブリッドでいい感じに開催することができた。
https://docs.google.com/presentation/d/1TmY23yVkrnHV3FuWleEXTY-x7LP18bobjOCzp5ZpyGU/edit?usp=sharing
今回は Ruby 3.2 でこれはすごいな〜という改善をしてくれたヤングメンバー()に事前に声をかけて成果を自慢して欲しい〜というプランである程度台本を用意しておいて、そのあとは成瀬さんやあれこれの人に雑に話を振っては雑に話してもらうという形にできたけどなかなか良かった気がする。
自分が何かを作るのはもちろんだけど、こういう感じで Ruby に関わる人のテンションを上げていく活動も来年は頑張りたい。