始めに

こんにちは、enzaプラットフォーム事業本部でSREチームのエンジニアをやっている橘田です こちらは、RubyKaigiTakeout2021 の2日目の午前の速報記事です。 1日目の午前の速報記事はこちら 1日目の午後の速報記事はこちら

The Future Shape of Ruby Objects

TruffleRuby と呼ばれているRubyの最適化のためにオブジェクトシェイプと呼ばれる最適化手法を採用している言語の話 Ruby自体にTruffleRubyのオブジェクトシェイプの最適化手法を入れていくことができるのか、TruffleRubyの中身の解説から、どのような効果があるのかの話でした。 JRubyのソースコードを例にslow pathが発生する例を表していました。これはTruffleRuby自体もJVMを使用して、JRubyよりもパフォーマンスが高いものを目指しているからでしょうか。 それ以外にもメッセージパッシングとしてSmalltalkの論文を例にメモリモデルの解説が行われるなどしました。 静的に解析するのではなく、動的にプロファイルして解析していくということをどのように行っていくかの話だったのかなっという印象です。 TruffleRuby に関するまとめに関してはスピーカーの方のブログに記載があるので、こちら を確認すると話した内容を詳しく確認することができそうです。

PRK Firmware: Keyboard is Essentially Ruby

キーボードは実質Rubyっということで、キーボードファームウェアとしてPRKファームウェアの話 PRKファームウェアはRubyでキーボードファームウェアを書くことができるものです。 ProMicroが使用されているキーボードキットを買って試すことができる。 ただし、AVR processorが載っているものでは動かないようです デモでRubyキーというモードでメモ帳上でRubyのコードを書くとIRBのように記載して実行できるというデモがありましたが、これはデモを見たとしても意味がわからないですね。すごい革命でした 私自身は自作キーボードは使っていないですが、ファームウェアなどは記載していたことがあるので、C言語で記載するのが標準に近い環境では、Rubyなどで記載できると楽になる部分は大きそうですね

YJIT – Building a new JIT Compiler inside CRuby

Day1 の MJITの話の中にも出てきましたが YJITの話 非常に高速なウォームアップを実現しており、Shopifyの開発者の方々がCRuby内に新しい JITコンパイラへの取り組みとして対応しているとのことです。 最適化の話からMJITと比べての速度に関して、実際に取ったベンチマークの情報の説明が行われました。 記事としては、こちらなどを参照すると良いのでしょうか? ではMJITとYJITのどちらが良いのかというと、現状ではMJITはJITでの生成初期の速度は高速のようで、YJITが同じ性能に到達するまでには数分かかったようです。なぜこのような違いが出てくるのかはなかなか面白いですね。 Rubyにて今後どうなっていくのかが気になる部分だと感じました

最後に

まだまだ、RubyKaigiは続きますが、この記事は一旦ここで終了です。
午後の速報記事も楽しみにしていただければ幸いです。
ドリコムでは一緒に働くメンバーを募集しています!
募集一覧はコチラを御覧ください!