ruby-trunk-changes 2023-11-23

今日は Windows での arm64 アーキテクチャのサポートの追加や WASM/WASI 版の修正などがありました。

[9ae6ee5a59] Jean Boussier 2023-11-22 09:27:46 UTC

Process.spawn などの引数の処理のために内部的に定義しているクラスで Variable Width Allocation の拡張 slot への埋め込み対応をしています。

[ea60bf912c] tomoya ishida 2023-11-22 12:06:19 UTC

irb の型による補完処理で警告抑制や例外処理で Exception クラス全体を rescue するようにする変更。 https://github.com/ruby/irb/pull/777

[c05495530e] David Rodriguez 2023-11-20 11:20:08 UTC

buindler の platform の扱いの修正のようです。

[6d5aa79697] Jun Aruga 2023-11-22 13:04:46 UTC

Travis-CI の設定で s390x-linux でのエラーを無視するようにしています。

[0f24ecf17a] Peter Zhu 2023-11-21 21:33:19 UTC

TracePoint の実装で RGenGC 用の Write Barrier を追加して WB-protected なクラスとしてマークしています。

[4f031a745d] Jean Boussier 2023-11-22 12:36:10 UTC

File::Stat クラスを Variable Width Allocation による拡張 slot への埋め込み対応するようにしています。

[b45442f8a8] Kevin Newton 2023-11-22 13:47:18 UTC

common.mk で prism の Encoding::CP949 対応のソースコードへの依存関係を追加しています。

[b040c529a0] Peter Zhu 2023-11-21 18:31:05 UTC

Dir クラスを Variable Width Allocation による拡張 slot への埋め込み対応しています。

[9691532428] Jean Boussier 2023-11-22 15:01:37 UTC

Array#flatten の実装で内部的に一時的に st_table を保持するために TypedData 型のクラスを定義していたのをやめて Hash オブジェクトを作って klass を NULL にして内部オブジェクトにして使うように変更しています。

[94144801eb] Jun Aruga 2023-11-22 15:49:58 UTC

Travis-CI の設定から s390x-linux のビルド設定自体をコメントアウトしています。現在 Travis-CI の障害? で s390x での CI が開始しない状態みたいです。 https://bugs.ruby-lang.org/issues/20013

[c1fc1a00ea] Yuta Saito 2023-11-22 16:59:54 UTC

WASI/WASI 版での main 処理のためのループを実装している rb_wasm_rt_start() という関数で rb_asyncify_unwind_buf という変数が NULL の時にループを抜けるようにしています。 rb_asyncify_unwind_buf というのは ruby 本体部分では定義されてないので Asyncify のランタイムで使われている変数だと思われます。不正なメモリアクセスを避けるための修正とのこと。 https://github.com/ruby/ruby.wasm/commit/bc46b12b127e4b6625a100f373504ed5ea45ae66 https://github.com/ruby/ruby/pull/9007

[0e59d91eed] Yuta Saito 2023-11-22 16:08:53 UTC

WASM/WASI 版での longjmp() の実装内で tmp_longjmp_buf のために malloc(3) を使ってメモリを確保していたのをやめてマシンスタック上の領域を利用するようにしています。

[341321f115] Alan Wu 2023-11-22 16:35:42 UTC

Object Shapes のテスト用に DEBUG_SHAPES マクロが定義されている時だけ定義されるメソッドでバッファのサイズが 1 足りてなかった不具合を修正しています。

[295d648f76] Yuta Saito 2023-11-22 15:23:04 UTC

WASM/WASI 版での rb_vm_tag_jmpbuf_init() および rb_vm_tag_jmpbuf_deinit() という inline 関数で malloc(3)/free(3) が直接使われてたのを ruby_xmalloc()/ruby_xfree() を呼ぶように変更しています。これらの関数は例外が発生しても問題ないので ruby 用の関数を使うとのこと。

[c8d99fa662] Jean Boussier 2023-11-22 14:23:02 UTC

ThreadGroup クラスを Variable Width Allocation による拡張 slot への埋め込みを利用するように対応しています。

[3ecedebee1] Yuta Saito 2023-11-22 13:21:21 UTC

GitHub Actions の WASM/WASI 版の workflow で利用する wasi-sdk のバージョンを 20.0 に更新しています。

[29c2c63d6c] Yuta Saito 2023-11-22 13:24:48 UTC

同じく GitHub Actions の WASM/WASI 版の workflow で利用する wasmtime のバージョンを v15.0.0 に更新しています。

[55cad1835e] Yuta Saito 2023-11-22 14:22:52 UTC

同じく GitHub Actions の WASM/WASI 版の workflow で利用する binaryen のバージョンを 113 に更新しています。

[7e9f00f34f] Yuta Saito 2023-11-19 01:37:19 UTC

GitHub Actions の WASM/WASI 版の workflow でまずネイティブの ruby を BASERUBY 用にビルドして configure 時に --baseruby で指定するようにしています。システムに入っている ruby ではなくてコンパイルする対象と同じバージョンの ruby を BASERUBY に使いたいためみたいです。WASM に限らずリポジトリからのクロスコンパイル時に要求されることみたいですね。 https://github.com/ruby/ruby/wiki/Developer-How-To#prerequisite

[3720d4c39a] Yuta Saito 2023-11-19 01:06:04 UTC

GitHub Actions の WASM/WASI 版でビルドした ruby を artifact として保存する step を追加しています。

[7a93bee4f8] Maxime Chevalier-Boisvert 2023-11-22 19:06:37 UTC

bootstraptest の YJIT 向けのテストに Object Shapes の st_table を使った管理への fallback まわりのテストを追加しています。 https://github.com/ruby/ruby/pull/9013

[8d6175bf64] tomoya ishida 2023-11-22 20:29:47 UTC

irb の型による補完処理の実装で依存する prism のバージョンを更新しています。 https://github.com/ruby/irb/pull/778

[5672fb63d2] Peter Zhu 2023-11-22 14:24:25 UTC

TracePoint クラスを Variable Width Allocation による拡張 slot への埋め込みに対応しています。

[926bfc3bc0] Takashi Kokubun 2023-11-22 23:13:32 UTC

YJIT の arm64 アーキテクチャ版での中間表現の MOV 命令を実際の機械語に分割する時の方法を修正しています。 テストをみた感じ Object Shapes の too complex への fallback 処理時に異常終了していた? https://github.com/ruby/ruby/pull/9014

[e2078ccd5a] hogelog 2023-11-23 07:24:31 UTC

irb でヘルプメッセージなどをページャーコマンドで表示する対応時のコマンド名が less か more の時に -R オプションを追加するようにしていましたが more は -R に対応してないので条件から削っています。 https://github.com/ruby/irb/pull/781

[e8b9058964] Stan Lo 2023-11-23 07:29:08 UTC

irb の debug との統合機能で debug.gem の rdbg コマンドと同様にコマンド入力時にコメントのように hint を表示する機能をサポートしているようです。

[784fdecc4c] Pierrick Bouvier 2023-11-23 08:17:28 UTC

Windows の arm64 アークテクチャ版でのビルドのサポートを追加しています。珍しく新しいプラットフォームの追加ですね。さすがにこれはチケットあるんじゃないかなと思って探したけどみつからなかった。 https://github.com/ruby/ruby/pull/8995

[f1c32c0ee0] Jean Boussier 2023-11-23 08:44:47 UTC

インスタンス変数をセットする vm_setivar_slowpath() で Object Shapes の実装を直接展開している最適化処理を T_OBJECT とその他のクラス以外のオブジェクトとで実装していたうち、その他のオブジェクトの最適化実装を削除しています。実装内に通らないはずの分岐の rb_bug() が実行されてしまうことがあったため。