ruby-trunk-changes 2023-03-08

今日は RJIT(元 MJIT)関連のもう不要な実装の削除/整理や YJIT で rest 引数を持つメソッドを配列を splat して渡すメソッド呼び出しで呼ぶ時などのサポートの強化などがありました。

[638f68b2fe] Samuel Giddins 2023-03-07 01:13:49 UTC

rubygems の Gem::Version#marshal_dump でバージョンを表す文字列を不要に dup していたのをやめています。

[c78138abd3] Peter Zhu 2023-03-03 19:19:55 UTC

gc.c の obj_free() から T_DATA 型オブジェクトのための処理を rb_data_free() に切り出しています。

[a6de8b0d2d] Takashi Kokubun 2023-03-07 15:21:22 UTC

YJIT の Rust 実装の SEND_MAX_DEPTH という定数を 5 から 10 に増やしています。メソッド呼び出しの処理を再帰的に処理する深さの上限だったかな。 https://github.com/ruby/ruby/pull/7452

[719a7726d1] Jimmy Miller 2023-03-07 17:29:59 UTC

YJIT dのメソッド呼び出しの引数に配列を splat して渡す時のサポートを強化しているようです。 https://github.com/ruby/ruby/pull/7422

[85a1738ab3] Martin Emde 2023-02-17 02:03:41 UTC

rubygems の tar アーカイブを読む実装に TarReader::Entry#seek というメソッドを追加するリファクタリング

[33edcc1120] Takashi Kokubun 2023-03-07 21:10:07 UTC

YJIT の文字列オブジェクトの連結の処理で一時オブジェクト? が GC で回収されてしまう可能性があったようなので VM スタックのスタックポインタを更新する処理を追加しています。 https://github.com/ruby/ruby/pull/7466 [ruby-core:112723] [Bug #19483]

[56df6d5f9d] Jimmy Miller 2023-03-07 22:03:43 UTC

YJIT で rest 引数を受け取るメソッドに対して必須引数を越える通常の引数と配列の splat 渡しが混在した呼び型(rest 引数に通常の渡しかたの引数と splat で配列から展開された引数両方が入る場合)のサポートを追加しているようです。 https://github.com/ruby/ruby/pull/7468

[c5296d9396] Julie Haehn 2022-11-30 04:49:33 UTC

bundler の --no-install オプションの処理が git リポジトリからインストールする時に対応が抜けてたのを修正しているようです。

[7f557d02c3] Takashi Kokubun 2023-03-04 01:33:57 UTC

YJIT の生成する x86_64 アーキテクチャ向けの機械語で命令を 1つにまとめる peephole 最適化っぽいことをしているみたいです。

[3e731cd945] Takashi Kokubun 2023-03-07 22:08:15 UTC

7f557d02c343d25a07036e4170367897ed14c3b9 で追加した YJIT の最適化のための関数にコメントを追記しています。

[ec05ba7ca3] Takashi Kokubun 2023-03-08 01:51:34 UTC

GitHub Actions の MinGW 環境向けの workflow で make test のタイムアウトを延ばしています。

[ae2dbdf11e] Sampat Badhe 2023-03-08 03:26:26 UTC

Data クラスの rdoc 用コメントのメソッドへの cross reference が記号とのあいだに空白がなくて効いてなかったので空白を入れて修正しています。

[39511b8b23] "dependabot[bot]" 2023-03-08 03:01:06 UTC

GitHub Actions で使っている ruby/action-slack アクションのバージョンを更新しています。

[5889cbd7de] Nobuyoshi Nakada 2023-03-08 03:14:34 UTC

compile.c の ISeq のバイナリフォーマットの dump/load のための static 変数テーブルに const 修飾子を追加しています。

[677c3228d0] Nobuyoshi Nakada 2023-03-08 03:16:05 UTC

組み込みメソッドを ruby 実装したものをバイナリフォーマットからロードした ISeq の内容のチェックを強化しているようです。

[00d6772e40] Nobuyoshi Nakada 2023-03-08 05:02:46 UTC

C の関数定義の開きかっこを改行するスタイルの修正。

[1d39d2d334] Takashi Kokubun 2023-03-08 05:16:05 UTC

ヘルプメッセージの表示から MJIT 改め RJIT のためのコマンドラインオプションの多くを削除しています。あと RUBY_DEBUG を有効にしてビルドした時にデバッグ用のオプションの表示を追加しています。

[0bf4cd8e1c] Takashi Kokubun 2023-03-08 05:21:19 UTC

1d39d2d334f2472a1694ff861ad8c27cefea819b でヘルプメッセージから削除した RJIT 用オプションの実際の実装も削除しています。

[6d91df08b5] Takashi Kokubun 2023-03-08 06:43:37 UTC

YJIT と RJIT を別々に有効/無効に指定できるようにしているそうです。今まで YJIT を有効にするには MJIT も有効にしないといけない(ビルド時の話?)という制約があったみたいですがその依存関係をなくしているそうです。 https://github.com/ruby/ruby/pull/7474

[9df1f58e01] Takashi Kokubun 2023-03-08 06:55:43 UTC

libcapstone というライブラリを C と Rust の両方からリンクすることができなかったため YJIT と RJIT(MJIT) を同時に開発用にビルドすることができなかったのが、最近の変更でリンクできるようになってたそうなので両方開発用にビルドする指定ができるようにしています。

[43de2365a5] Takashi Kokubun 2023-03-08 07:06:01 UTC

mjit -> rjit の改名漏れを修正。

[b67f07fa2c] Takashi Kokubun 2023-03-08 07:08:48 UTC

子プロセスを監視する waitpid の実装で MJIT の daemon を起動していたころの実装のための対応がもう不要になったため削除しています。

[e93e780f3d] Takashi Kokubun 2023-03-08 07:14:07 UTC

旧MJIT の実装で不要になった ruby 実装の組み込みメソッドをコンパイルする処理の削除。

[4bf037bebd] Takashi Kokubun 2023-03-08 07:30:49 UTC

doc/rjit/rjit.md のドキュメントの更新。および RJIT 用のオプションをヘルプメッセージに表示する条件や順番の変更。

[9ad19069f9] Takashi Kokubun 2023-03-08 07:44:26 UTC

RJIT 用の不要になっていた処理の削除。

[c25738762a] Hiroshi SHIBATA 2023-03-08 06:45:58 UTC

tool/fetch-bundled_gems.rb で gems/bundled_gems に commit hash やタグ名の指定があった時のリポジトリから clone する処理で gemspec ファイルから読んだバージョンと gems/bundled_gems に書いてあるバージョンが食い違ってないかのチェックを追加しています。

[a7cee4da97] Hiroshi SHIBATA 2023-03-08 06:50:22 UTC

c25738762ab56bfd2edb4fedb5fc6bed88c03d61 の gems/bundled_gems のバージョンと実際に clone してきたリポジトリの gemspec のバージョンのチェックのメッセージを強化しています。また tool/lib/bundled_gem.rb で実際にビルドする時の同様のチェック時のメッセージも情報を追加しています。

[0c9733ea86] Hiroshi SHIBATA 2023-03-08 06:51:21 UTC

c25738762ab56bfd2edb4fedb5fc6bed88c03d61 の bundled gems のバージョンチェックで Gem::Version を利用するために require "rubygems" を追加しています。

[59905883c4] Hiroshi SHIBATA 2023-03-08 07:46:57 UTC

defs/gmake.mk の bundled gems のための gemspec ファイルを生成するターゲットに timestamp ファイルの依存関係を追加しています。コミットログによると gemspec 生成前に指定の branch/tag や commit hash を checkout する処理を走らせるためみたいです。

[1163204021] Hiroshi SHIBATA 2023-03-08 07:51:46 UTC

tool/lib/bundled_gem.rb での gemspec ファイルと gems/bundled_gems のバージョンのチェックをしているところで後置 unless を使っていたのを unless 文を利用するようにリファクタリングしています。

[bead4bce3b] Nobuyoshi Nakada 2023-03-08 08:39:33 UTC

tool/ytab.sed で yyval_default および yyloc_default という変数に const 修飾子を追加するようにパターンを追加しています。