明日から本気出す

Web Developer

Matz Keynote まとめ (RubyKaigi 2024)

はじめに

しばらく Ruby から離れていた私にとって、Matz さんのキーノートはここ数年の Ruby のふりかえりにもなり、とても良い内容でした。

まだスライドは公開されていない(はず)なのでメモベースですが、私なりにまとめさせていただきました。

rubykaigi.org

まとめ

今日の内容は Ruby をより良くする話で、テクニカルトークではない。

Ruby をより良くするためには、以下の 4 つの側面がある。

  1. パフォーマンス
  2. パフォーマンス
  3. パフォーマンス
  4. パフォーマンス

1つ目のパフォーマンス: VM

  • YARV (2007)
    • Bytecode VM
  • MJIT (2018)
    • Ruby3x3 (2014)
    • Rails App ではあまりパフォーマンスが変わらず、メモリ消費量は増えた
  • YJIT (2022)
    • より速い JIT
    • Rust で書かれている
    • Rails apps run 1.8x Faster
    • 2024 も Maxime さんと k0kubun さんの発表あり

rubykaigi.org

rubykaigi.org

2つ目のパフォーマンス: メモリ管理

  • VM は唯一のボトルネックではない
  • メモリ管理
    • メモリをコンパクトにする
    • メモリ割り当てのサイズを可変長に
    • Object Shapes
    • GC の改善
  • 省メモリになることで、お金を節約できる

3つ目のパフォーマンス: マルチコアの活用

  • マルチコア時代は想像できなかった
  • パフォーマンスを向上させるためのスレッドではなかった
    • どちらかというと、プロデューサー/コンシューマーモデルとか
  • スレッドをいっぱい作ってもパフォーマンスは全然改善しない
  • Threads
  • GVL
    • Global VM Lock
    • 1度に1つのスレッド
  • Processes
    • プロセスは生成コストと切替コストが高い
  • Fiber (for I/O)
    • マルチコア使えない
  • Actors (for CPU)
    • まだ本番では使えない(Matz 視点)
  • 今後
    • NxM Threads
    • Lightweight Ractors
      • 1 Ractor 1スレッド
    • Ractor local GC
    • Fiber Scheduler

4つ目のパフォーマンス: 開発者

  • 開発者のパフォーマンスも大切
    • Ruby-LSP
    • Rubocop
    • Steep
    • Copilot
  • The state of Ruby dev tooling 聴きたかった
  • より良いパーサーが必要
    • parser gem
    • ripper
  • ruby コマンドとそれ以外のツールで使っているパーサーが違った
  • 1つのパーサーが必要
    • 一昨年、パーサー時代が始まった
  • Prism
    • Hand-written Parser
  • Parser by Lrama
    • Parser from Parser Generator
  • 最新の parser gem は Prism に依存するようになっている
    • Prism のインターフェースに依存しようと思っている
  • シンタックス・モラトリアムを提案したい
    • 最短で今年いっぱいで、文法の変更をしない
    • それぞれのパーサーが同時に実装をしないといけない
    • パーサーの改善に集中してほしい
    • バグフィックスなどは行う

その他

  • Namespace, What and Why というセッション
    • Namespace, What and Why - RubyKaigi 2024
    • Ruby2(2004) という構想があった
      • リスタートしようとトライした
    • Perl6 や Python3000 もあった
      • Perl6 は使われなかった
      • Python 3000 → Python3.0 になったが、コミュニティが分断された
  • Ruby 4.0
    • Namespace, What and Why がはいったら、Ruby 4.0 にしても良いと思っている
  • 実現できるかわからない夢
  • 最近、ヨーロッパでは Ruby のカンファレンスが増えてきている

おわりに

私個人の RubyKaigi 2024 感想については、以下のブログ記事をご覧ください〜。

blog.mokuo.me