ruby-trunk-changes 2023-10-14

今日は主に YJIT の不具合修正、prism の更新、コマンドラインイプションの --dump=prism 追加などがありました。

[511571b5ff] Nobuyoshi Nakada 2023-10-13 13:23:12 UTC

GitHub Actions の macOS 版の workflow で macos-arm-oss という ARM 版の OS での実行は ruby/rubyリポジトリでのみ実行するようにしています。

[0bf1749e9f] Alan Wu 2023-10-13 14:41:53 UTC

YJIT のメソッド引数の扱いでブロック引数と rest 引数がある時に条件によってはスタックの値を破壊していた不具合を修正しているようです。 https://github.com/ruby/ruby/pull/8647

[5808999d30] Takashi Kokubun 2023-10-13 15:52:23 UTC

VM 命令 opt_getconstant_path の実装を rb_vm_opt_getconstant_path() という関数に切り出して YJIT からこの関数を利用するようにしています。 Module#const_missing を呼ぶ場合の対応のためみたいです。 https://github.com/ruby/ruby/pull/8623

[62dfaeec2c] Koichi Sasada 2023-10-13 14:53:59 UTC

M:N Thread の有効化を emscripten や Fiber 用の coroutine 実装に pthread を使っている環境、thread id が整数でない環境、epoll(2) が利用できない環境などで抑制するようにしています。

[92bdc3757f] Takashi Kokubun 2023-10-13 16:39:02 UTC

GitHub Actions の CodeQL によるチェックをする workflow で github/codeql-action アクションの実行がしばしばメモリ不足でエラーになるのでエラーを無視させるようにしています。

[d705885286] Jemma Issroff 2023-10-13 19:24:40 UTC

コマンドラインオプションに --dump=prism を追加して prism による AST を出力するようにしているようです。 https://github.com/ruby/ruby/pull/8643

[b5ee570eb8] Kevin Newton 2023-10-13 19:05:04 UTC

common.mk の依存関係の再生成。

[17697c968e] Kevin Newton 2023-10-13 19:34:59 UTC

common.mk の依存関係の再生成。

[5b08e9efd8] Takashi Kokubun 2023-10-13 22:21:49 UTC

GitHub Actions の workflow .github/workflows/check_misc.yml での checkout 時に matzbot 用の GitHub token を利用するようにしています。

[275c18525c] Koichi Sasada 2023-10-13 17:41:44 UTC

62dfaeec2c3f6be255f48419307e69bfcfb3d849 の再修正で thread id が整数でない環境での M:N Thread 無効化は取り止めています。これがなくても s390x 環境でテストの失敗していたので関係ないらしいということみたいです。

[563ba5a6f1] Takashi Kokubun 2023-10-13 23:13:55 UTC

GitHub Actions の専用 action でのリポジトリの checkout 時に matzbot の GitHub token を利用するようにしています。

[0950f22cc0] Takashi Kokubun 2023-10-13 23:18:17 UTC

GitHub Actions の専用 action に matzbot の GitHub token を secret から取得するのをやめて変数参照するようにしています。

[d7f8c1ee9d] Takashi Kokubun 2023-10-13 23:19:32 UTC

0950f22cc0c848a73f1b80d0e63fcde6cd437890 も revert して GitHub Actions の workflow .github/workflows/check_misc.yml でリポジトリのチェックアウトを専用アクション .github/actions/setup/directories の後に実行するように変更しています。

[d67880abeb] git 2023-10-13 23:19:52 UTC

NEWS の default gem のバージョンリストの prism のバージョンを更新しています。

[9d6ff9c175] Takashi Kokubun 2023-10-13 23:31:02 UTC

d7f8c1ee9d226bb1c2049d862127e0ba43b3b755 もやはり revert して GitHub Actions の専用 action .github/actions/setup/directories で checkout を抑制できるようにパラメーターを追加して .github/workflows/check_misc.yml からは重複した checkout をしないようにしています。

[82c8f22a36] Takashi Kokubun 2023-10-13 23:33:07 UTC

9d6ff9c175537296c96394332c662a1ffb9a83f6 の追加修正で GitHub Actions の専用 action で checkout の有無の指定を反映させるようにしています。

[cb06b6632a] Nobuyoshi Nakada 2023-10-12 18:33:48 UTC

構造体 rb_strterm_literal_t のメンバーで VALUE 型とサイズをあわせるために行なっていた共用体を使った宣言をやめています。 NODE にメモリレイアウトを合わせる必要がなくなったからかな?

[a075c55d0c] Nobuyoshi Nakada 2023-10-13 10:07:31 UTC

parser で利用する構造体 rb_strterm_t を T_IMEMO 型オブジェクトで wrap して保持していたのをやめて直接構造体を扱うようにして構造体 rb_parser_config_t の不要になったメンバーを削除しています。

[5fc9810bf3] Nobuyoshi Nakada 2023-10-13 10:13:26 UTC

parser で使う構造体 rb_strterm_literal_t の各メンバーを long から int 型に変更しています。これもメモリレイアウトを合わせる必要がなくなったので省サイズ化しているようです。

[a405b28e85] Nobuyoshi Nakada 2023-10-13 10:21:59 UTC

構造体 rb_parser_config_t に hash_delete というメンバーを追加して rb_hash_delete() の呼び出しを関数ポインタ経由にするようにしています。

[25072d2e87] yui-knk 2023-10-13 23:46:12 UTC

parse.y の NODE のキャストに使うマクロの型をまちがえていたところを修正しています。

[b28c1d2c56] Kouhei Yanagita 2023-10-13 23:50:59 UTC

Range の終端に Rational を使っている時に Range#size が小さな値を返すことがあった不具合を修正しています。 実装みると Bignum の範囲の整数の場合でも同じ不具合があったっぽいですね。 [ruby-core:115035] [Bug #19926]

[16d14f425f] Takashi Kokubun 2023-10-14 03:53:23 UTC

GitHub Actions で checkout に matzbot の GitHub token を利用するのは ruby/ruby リポジトリでないと secret が存在しないので他の環境では通常の secrets.GITHUB_TOKEN を使うようにしています。

[eb79b0319b] Koichi Sasada 2023-10-13 23:32:22 UTC

M:N Thread の実装の thread_sched_setup_running_threads() で RB_VM_LOCK_ENTER()/RB_VM_LOCK_LEAVE() で一度 VM 全体のロックを取って memory barrier を構築していたところで dead lock になる場合があったのでその前後で thread_sched_unlock()/thread_sched_lock() で M:N Thread の scheduler 用の lock? を解放しておくようにしています。