ボトムズ日記

日記です

Ruby3の特徴

WEB+DB PRESS vol.121を読んで要所をまとめる。

Ruby3.0の大きい目標として以下の3つがあり、それらが達成されたらしい。

  • JIT(Just In Time)コンパイルによる性能向上
  • 並行・並列プログラミング
  • 静的型解析

それぞれの説明も書いてあった。

JIT(Just In Time)コンパイルによる性能向上

JITコンパイラという手法を使うと、Rubyで実装されたメソッドをバイトコード形式で実行するのではなくネイティブコードとして実行することになり、バイトコード命令を超えた最適化ができるらしい。バイトコード高級言語機械語の間のバイナリ形式、いわゆる中間ファイル。ネイティブコードはCPUに解釈可能なコード。どっちが高速化は、CPUに解釈可能な状態の方が速いよねという話だった。RubyJITコンパイラが使用される条件があるらしくあるメソッドが1万回呼び出されるとJITコンパイル候補となり、常駐しているJITワーカスレッドがメソッド呼び出し回数が多い順にコンパイルして、呼び出し回数上位のメソッドがJITコンパイルされた状態で維持される。ちなみにこの特集で何回か繰り返し描かれているけどRubyJITコンパイラは他の言語とはちょっと違うらしい。

並行・並列プログラミング

並行と並列って同じでは。。。?と思ったけど違うみたい。この特集で定義されているのは並行プログラミングは、複数の異なるタスクを開始させておき、必要なとき途中経過や最終結果を取り出すことができる。並列プログラミングは並列計算機でそれら複数タスクを同時に実行させることだった。前者は論理的に同時(実際に同時であるとは限らない)、後者は物理的に(実際に)同時に処理されるらしい。並行・並列プログラムを記述する仕組みであるRactorが導入されている。

静的型解析

静的型解析の目的は以下の通りらしい。

Ruby3の静的解析サポートとして次のものを提供する。

  • クラスやモジュールの型を定義するための言語RBS
  • RBSファイルを処理するためのライブラリ
  • RBSで記述された標準ライブラリの肩情報

RBSとは、RBSファイルという型定義ファイルであるらしい。本にはRBSのサンプルが載っていて、Userクラスの型が記載されていた。

感想なのか

とりあえずインデックスを貼ることはできた。必要な時に思い出せれば良いが