ruby-trunk-changes 2022-11-14

今日は revision.h の再生成ルールの修正や YJIT の --yjit-stats の出力の追加、MJIT の実装のリファクタリングなどがありました。

[8d82f4ba1c] Kenta Murata 2022-11-13 12:05:46 UTC

拡張ライブラリ bigdecimal802dce4acd97234bef88fe4bbb98db5ab90c45d9 で追加していた BigDecimal の 0 や 1 のオブジェクトを生成する特別な関数 rbd_allocate_struct_zero() や rbd_allocate_struct_one() に limit_precision という引数を追加して、さらに NewZero()/NewOne()/NewZeroLimited()/NewOneLimited()/NewZeroNolimit()/NewOneNolimit() といった wrapper マクロ定義も追加しています。

[2f7d2662dd] Nobuyoshi Nakada 2022-11-13 14:54:43 UTC

common.mk、defs/gmake.mk、template/GNUmakefile.in で make check などのテスト用のターゲットでその中のターゲットを GNU Make の時だけ? .WAIT というダミーのターゲットで区切るようにしています。並列テストに関連した hack のようですがよくわからず。

[d5e1b82f5c] Takashi Kokubun 2022-11-13 17:33:23 UTC

YJIT の Rust 実装の gen_branch() という関数の未使用の引数を削除しています。 https://github.com/ruby/ruby/pull/6714

[a1b460bd6e] Maxime Chevalier-Boisvert 2022-11-13 17:42:47 UTC

doc/yjit/yjit.md に YJIT は experimental ですと書いてあった Disclaimer を削除しています。

[bc8ba244b8] Alan Wu 2022-11-13 17:51:19 UTC

2b8191bdad7545b71f270d2b25a34cd2b3afa02f で TracePoint を利用した時の trace 版命令への変換による YJIT のコンパイル済みコードの破棄の条件を絞った変更で、TracePoint の disable/enable を呼び出した時にもチェックが必要だったのに対応しているみたいです。 https://github.com/ruby/ruby/pull/6719

[6246788bc4] Takashi Kokubun 2022-11-13 17:54:41 UTC

YJIT の Rust 実装で stats_alloc というパッケージを利用して、メモリ使用の統計情報を --yjit-stats の出力に含めるようにしているようです。 https://github.com/ruby/ruby/pull/6712

[68e0523484] Takashi Kokubun 2022-11-13 21:58:50 UTC

未使用になっていた MJIT 用の debug counters の定義や increment する処理を削除しています。

[e377875cff] Takashi Kokubun 2022-11-13 22:41:08 UTC

mjit.h の mjit_func_t という関数ポインタの型を jit_func_t に改名しています。

[dc5e2eaab6] Takashi Kokubun 2022-11-13 23:13:13 UTC

2b8191bdad7545b71f270d2b25a34cd2b3afa02f および bc8ba244b8524c8537eda4ca79f880312c8f4528 の TracePoint 利用時に YJIT のコードを破棄する条件分岐の書きかたを整理してネストする if 文を使わないようにしています。

[ea278ddd92] "dependabot[bot]" 2022-11-14 02:06:02 UTC

GitHub Actions の workflow .github/workflows/scorecards.yml で利用している actions/upload-artifact というアクションのバージョンを更新しています。

[3dd4e381fe] Takashi Kokubun 2022-11-14 04:35:35 UTC

vm.c の jit_exec() で MJIT と YJIT どちらが有効になってるかで preprocessor 分岐していたのをやめています。 https://github.com/ruby/ruby/pull/6722

[96d29dff66] Takashi Kokubun 2022-11-14 05:14:46 UTC

MJIT の invokebuiltin 命令の実装の不具合修正。

[8bfd4dd4e1] Yusuke Endoh 2022-11-14 05:36:24 UTC

標準添付ライブラリ error_highlight の TypeError, ArgumentError を Module#extend で拡張するのを Exception#detailed_message が実装されている時だけ実行するようにしています。古い ruby の対応のため。

[81c494d810] Yusuke Endoh 2022-11-14 06:19:01 UTC

標準添付ライブラリ error_highlight のテストでも 8bfd4dd4e15a9ac3a308c3c45db629e74fae9b0c の変更に追随して ErrorHighlight::CoreExt が追加されていない例外クラスを使ったテストは skip するようにしています。

[d019c3a4bd] Yusuke Endoh 2022-11-14 06:37:21 UTC

標準添付ライブラリ error_highlight のバージョンを 0.5.1 に更新しています。

[e4e2ff76a8] git 2022-11-14 06:38:18 UTC

NEWS の default gems のバージョンリストの error_highlight のバージョンも更新しています。

[80bab6c8ed] Takashi Kokubun 2022-11-14 08:24:08 UTC

MJIT の実装で ruby 実装から C の組み込みクラスのポインタを得るための実装を tool/mjit/bindgen.rb で生成させるようにしています。

[a8537aa6a5] Takashi Kokubun 2022-11-14 08:29:28 UTC

80bab6c8eddbb225c88155f2eb456a4d937294c7 と同様に MJIT の ruby 実装から C の Object Shapes のビットフラグの定数マクロにアクセスするための binding も tool/mjit/bindgen.rb で生成するように書きかえています。

[3fae53a343] Nobuyoshi Nakada 2022-11-14 09:59:06 UTC

revision.h の再生成のためのルールで tarball のパッケージからビルドする時に BASERUBY がないとビルドエラーになっていたのを修正しています。 no_baseruby が yes の時にソースディレクトリやビルドディレクトリの revision.h のターゲットに余計な文字を付加して無効なターゲットにして、単に touch で revision.h を更新するほうにしているようです。 [ruby-core:110722] [Bug #19127]