RubyKaigi2024で野良の字幕係(?)をしてきました
RubyKaigiは2007年から毎回参加してたんだけど、2020/2021はオンライン、2022/2023はハイブリッドで家から参加してて、オフライン参加は久々だった。
今回は単独行動でなかったので夜イベントは参加できなかったんだけど、昼に会場近くのスパイスカレー屋に入ったらgotoyuzoさんm_sekiさんtatsuoSakuraiさんが座ってて…みたいなRubyKaigiらしい交流はあった。auto fiberは一見便利そうだけど、素のFiberと違って予期しないメソッド呼び出しでFiberが切り替わる可能性があるので気をつける必要になるよね…という話を咳さんがされててなるほどと思った。もちろんFiberなので「スレッドセーフでない拡張ライブラリを複数スレッドから呼んだとき」みたいな壊れ方はしないんだけど、アプリケーションレベルでのバグが発生することはあって、例えば以下のA#fooが並列でいくつか動いてるときにsomethingメソッドの深いところでFiberが自動で切り替わると、ctを正しく計算できなくなるよね、という話だと思うんだけど合ってるかな。(誰か実験してください)
class A
def initialize
@ct = 0
end
def foo
@ct = @ct + something()
end
end
字幕
オフライン参加のときはライブ配信のチャット欄があったので、そこに解説とか和訳を書いてて、それがありがたかったという声もあったので、今年もやってみた。今年はRubyKaigiのDiscordサーバがあって、そこに書き込むと壇上のスクリーンにも表示されるという仕組みだった(なんか昔もそういう仕組みのときありましたよね…あのときはどうやって打ってたんだっけ?IRC?)。
実は僕も100%聞き取れてるわけじゃないんであれなんだけど、「1mmもわからん」が「何について話してるのかくらいはわかった」になればいいなと思ってやっています。
ここでCMですが、沖縄までの旅費は会社 https://www.netlab.jp/ の提供でした。ありがとうございます。
セッション
- Writing Weird Code - RubyKaigi 2024
- 次のTRICKまで温存とかしないのすごい。
- 数学できる人はやっぱかっこいいなぁ。
- Namespace, What and Why - RubyKaigi 2024
- Ruby4の目玉になりそう(!)なNamespaceの話。
- 名前の衝突を避けたいという話と、同じライブラリの複数のバージョンを同時に使いたいという2つの話があるんだよね。まあ、その両方を解決する機能であると言うこともできるけど。
- 後者については人々がgemのバージョンアップをさぼるようになる懸念があるとのこと。あっ、それでproductionでは使わせないように1/10の確率でSEGVするようになっている?(違います)
- コーナーケースとして、Cレベルでグローバルな状態をもつgemは複数バージョンを同時に使うと壊れますね。メジャーなのでそういうのがあるかは知らないけど。
- Embedding it into Ruby code - RubyKaigi 2024
- タイトル見てそれはやんないって話じゃなかったの!? と思ったら"黙認"という回答でしね。記述を必須にしたくないという話で、コメントに書くなら必須ではないからOKということか。
- 別ファイルが正でオプショナルでインラインから別ファイルへの生成もできる(ツール類は別ファイルのほうを読めばどっちのスタイルにも対応できる)というのは複数の書き方を許容するRubyらしい落とし所かもしれない。
- An mruby for WebAssembly - RubyKaigi 2024
- mruby bytecodeをwasm上で動かすVMを作ったという話。
- 整理するとmruby bytecode(.mrbファイル)はいろんなところで使われていて:
- mruby本体は、.rbから.mrbへの変換と、.mrbのマイコン上(メモリ400KB程度)での実行を担当。
- mruby/cは、.mrbをより小さなマイコン(メモリ40KB程度)で実行するVM。
- picorubyは、自作キーボード用マイコン(メモリ128 KB程度)とかの上で.rbのコンパイルと実行をできるようにしたもの。(実行はmruby/cを使用)
- Cross-platform mruby on Sega Dreamcast and Nintendo Wii - RubyKaigi 2024 では、ドリキャスとWiiでもmrubyのコードが動いていたり…
- Porting mruby/c for the SNES (Super Famicom) - RubyKaigi 2024 はmruby/cをSNESに移植することでmrubyのコードを動かす話だった。
- CRubyのYARV Iseqはオプティマイズの都合でがんがん変更が入るけど、mruby bytecodeは上記のようにそれを利用する3rd partyがすでに存在するので再利用に向いてる、とのこと。
- From Interpreting C Extensions to Compiling Them - RubyKaigi 2024
- TruffleRubyがC拡張をどのようにサポートしてきたか、という話。
- たしかにCRuby用のgemは「CRubyのオブジェクト表現」を扱うように書かれているわけで、API経由のアクセスであれば中身は意識しなくてよいけど、そこの抽象化が漏れてるとこがあると大変なわけだ。
- Running Optcarrot (faster) on my own Ruby. - RubyKaigi 2024
- 毎月のようにオンラインで喋っているmonochromeさんの発表(オフラインでお会いするのは初めて)。
- カロリーメイトのデモ、エッジケースの互換性が相当高くないと動かないと思うのでやっぱりすごい。
- Ruby Committers and the World - RubyKaigi 2024
- async/awaitの話、記法がどうのという話で終わっちゃったけど、「JSのようにデファクトの非同期化APIが決まっていてほしい」という論点があるんだよな。
- Using "modern" Ruby to build a better, faster Homebrew - RubyKaigi 2024
- Homebrew、お世話になってます。
- brewのようにRubyが母語でない人のプルリクが主に来るプロジェクトだとRuboCopは確かにとても良さそう。
- パーサの話
- チームLrama、めっちゃ成果出しててすごい。
- このへんの話。まつもとさんもキーノートでフォローしてたけど、外野としては無邪気にPrism vs Lramaとか言いたくなっちゃうんだけど、誰もがレスラーになりたいわけではない、それはそう。気をつけよう。