ruby-trunk-changes 2022-11-06

今日は WASI 環境のマシンスタックの mark 処理の修正や cross compile 時の YJIT のサポートについての変更などがありました。

[267452e6fe] Yusuke Endoh 2022-11-05 14:18:32 UTC

TRICK 2018 の作品の更新を upstream からマージしています。なるほどわからん

[3a6cdeda89] Yuta Saito 2022-11-05 16:10:35 UTC

WASI 環境での Fiber のマシンスタック用領域の GC mark が不正になることがあったみたいで rb_wasm_scan_stack() という関数(正確には関数マクロ)で mark すべき領域を取得していたのを削除して、native_thread_init_stack() でマシンスタックの底のアドレスを記録して mark_current_machine_context() ではその時点のスタックポインタを取得してそれでマシンスタック領域を得るようにしています。対象の Fiber を実行中じゃないと正確なスタックポインタが得られないのでは……と思いましたがこの関数 mark_current_machine_context() は GC 実行中の現在の rb_context_t のマシンスタックやレジスタ上を mark するための関数なのでこれで問題ないのでした。
rb_wasm_scan_stack() という関数は削除されていますが wasm/tests/machine_test.c というファイルに参照が残っているので make test-wasm でビルドエラーにならないかな。

[10fd1d9507] Nobuyoshi Nakada 2022-11-05 03:48:11 UTC

configure の --enable-yjit オプション指定時の rustc のチェックでコマンド名に $RUSTC 変数を参照するように修正しています。

[1454f8f219] Nobuyoshi Nakada 2022-11-05 13:19:21 UTC

configure の cross compile 時の Rust のコマンドを指定する変数 RUSTC に --target オプションの指定を追加しています。common.mk の変更部分で showflags で表示する変数名が RUST になってますけどこれは RUSTC の間違いじゃないかな?

[cb899a990a] Nobuyoshi Nakada 2022-11-06 01:16:12 UTC

1454f8f219890b8134f68e868d8cb1d0a9d2aa20 の続きで cross compile 時はそもそも YJIT を無効にするようにしています。