Ruby プログラミング言語 3.1 のリリース

Ruby 3.1.0 は、プログラム開発の効率が高く、Perl、Java、Python、Smalltalk、Eiffel、Ada、Lisp の優れた機能を組み込んだ動的オブジェクト指向プログラミング言語です。プロジェクト コードは、BSD (「2 条項 BSDL」) および「Ruby」ライセンスに基づいて配布されます。これは、GPL ライセンスの最新バージョンを指し、GPLv3 と完全な互換性があります。

主な改善点:

  • 新しい実験的なインプロセス JIT コンパイラーである YJIT が追加されました。これは、Rails フレームワークを使用し、多くのメソッドを呼び出す Ruby プログラムのパフォーマンスを向上させる取り組みの一環として、Shopify 電子商取引プラットフォームの開発者によって作成されました。以前に使用されていた MJIT JIT コンパイラ (メソッド全体の処理に基づいており、C 言語の外部コンパイラを使用する) との主な違いは、YJIT では Lazy Basic Block Versioning (LBBV) が使用され、統合 JIT コンパイラが含まれていることです。 LBBV では、JIT は最初にメソッドの先頭のみをコンパイルし、使用される変数と引数の型が実行中に決定された後、しばらくして残りをコンパイルします。 YJIT を使用すると、railsbench テストの実行時に 22% のパフォーマンスの向上が記録され、リキッド レンダー テストの実行時に 39% のパフォーマンスの向上が記録されました。 YJIT は現在、x86-64 アーキテクチャのシステム上の Unix 系 OS のサポートに限定されており、デフォルトでは無効になっています (有効にするには、コマンド ラインで「--yjit」フラグを指定します)。
  • 古い MJIT JIT コンパイラーのパフォーマンスが向上しました。 Rails を使用するプロジェクトの場合、デフォルトの最大キャッシュ サイズ (--jit-max-cache) が 100 命令から 10000 命令に増加されました。 1000 命令を超えるメソッドに対する JIT の使用を停止しました。 Rails の Zeitwerk をサポートするために、クラス イベントに対して TracePoint が有効になっているときに JIT コードが破棄されなくなりました。
  • これには、完全に書き直された debug.gem デバッガが含まれており、リモート デバッグをサポートし、デバッグされたアプリケーションの速度を低下させず、高度なデバッグ インターフェイス (VSCode および Chrome) との統合をサポートし、マルチスレッドおよびマルチプロセス アプリケーションのデバッグに使用できます。 REPL コード実行インターフェイスは、高度なトレース機能を提供し、コード スニペットを記録および再生できます。以前に提供されていたデバッガ lib/debug.rb は、基本ディストリビューションから削除されました。
    Ruby プログラミング言語 3.1 のリリース
  • コールバック トレース レポートにエラーを視覚的に強調表示する機能を実装しました。エラーフラグは、デフォルトで有効になっている組み込みの gem パッケージ error_highlight を使用して提供されます。エラーフラグを無効にするには、「--disable-error_highlight」設定を使用できます。 $ Ruby test.rb test.rb:1:in " ": 未定義のメソッド "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ ということですか?回
  • インタラクティブ計算 IRB (REPL、Read-Eval-Print-Loop) のシェルは、入力されたコードの自動補完を実装します (入力すると、入力を継続するためのオプションを含むヒントが表示され、Tab または Shift+ で移動できます)タブキー)。継続オプションを選択すると、選択した項目に関連付けられたドキュメントを表示するダイアログ ボックスが近くに表示されます。キーボード ショートカット Alt+d を使用して、完全なドキュメントにアクセスできます。
    Ruby プログラミング言語 3.1 のリリース
  • 言語構文では、関数を呼び出すときにハッシュ リテラルとキーワード引数の値をスキップできるようになりました。たとえば、式「{x: x, y: y}」の代わりに「{x:, y:}」を指定したり、「foo(x: x, y: y)」の代わりに - foo( x:、y:)」。
  • 単一行のパターン マッチ (ary => [x, y, z]) のサポートが安定しました。これは実験的としてフラグが立てられなくなりました。
  • パターン一致の「^」演算子に任意の式を含めることができるようになりました。例: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5]、[5, 7]、[11, 13]]
  • 単一行のパターン マッチでは、かっこを省略できます: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • プログラムの構造と使用される型を決定できる RBS 型注釈言語では、「<」記号を使用した型パラメーターの上限の指定のサポートが追加され、ジェネリック型のエイリアスのサポートが追加され、 gem を管理するためのコレクション、パフォーマンスの向上、組み込みおよび標準ライブラリ用の多くの新しいシグネチャの実装。
  • 統合開発環境の実験的サポートが TypePro 静的型アナライザーに追加されました。これは、明示的な型情報なしでコード分析に基づいて RBS アノテーションを生成します (たとえば、TypePro を VSCode エディターと統合するためのアドオンが準備されています)。
  • 複数の割り当てを処理する順序が変更されました。たとえば、以前は式「foo[0], bar[0] = baz, qux」のコンポーネントは baz、qux、foo、bar の順序で処理されていましたが、現在は foo、bar、baz、qux になります。
  • VWA (可変幅割り当て) メカニズムを使用した文字列のメモリ割り当ての実験的なサポートが追加されました。
  • 組み込みの gem モジュールと標準ライブラリに含まれるモジュールの更新バージョン。 net-ftp、net-imap、net-pop、net-smtp、matrix、prime、および debug パッケージが組み込まれています。

出所: オープンネット.ru

コメントを追加します