ruby-trunk-changes 2022-05-24

今日は主に thread 関係のデバッグ用のコードの整理や構造体のリファクタリング、WASI 環境向けの rb_main() 関数から asyncify 対応のための修正などがありました。

[663915ddf4] Yusuke Endoh 2022-05-23 09:45:39 UTC

did_you_mean が Exception#message を上書きしないようにしたのが rubygems に影響したそうなので例外メッセージの取得に Exception#detailed_message メソッドが使えたら使うように対応を追加しています。

[479884d596] Burdette Lamar 2022-05-23 13:00:21 UTC

標準添付ライブラリ fileutils の FileUtils.ln_s の rdoc 用コメントの手直し。

[bc7f59957f] Nobuyoshi Nakada 2022-05-23 13:32:50 UTC

main.c の rb_main() を static 関数にするのと main() 関数のスタイルを修正。

[08b2f22c27] Burdette Lamar 2022-05-23 16:17:07 UTC

標準添付ライブラリ fileutils の FileUtils.ln_sf と .link_entry の rdoc 用コメントの手直し。

[d270d984bd] git 2022-05-23 16:17:26 UTC

version.h の日付更新

[37ccf91bfb] Koichi Sasada 2022-05-23 16:44:17 UTC

rb_ractor_set_current_ec() のデバッグ用のコードを RUBY_DEBUG_LOG2() を使うようにしてリファクタリングしています。

[80ad0e751f] Jemma Issroff 2022-05-05 19:10:36 UTC

struct RBasic::flags のビットフラグに使う RMODULE_IS_OVERLAID という定数は不要とのことで削除してかわりに T_MODULE 型オブジェクトを期待しているところで BUILTIN_TYPE() でチェックしたり RUBY_ASSERT() でチェックしたりするようにしています。

[9c9c217045] Burdette Lamar 2022-05-23 22:57:48 UTC

標準添付ライブラリ fileutils の FileUtils.cp の rdoc 用コメントを強化しています。

[741ac50330] Koichi Sasada 2022-05-23 19:54:26 UTC

native_tls_get() で pthread_getspecific() や TlsGetValue() の戻り値が NULL ポインタだった時に異常終了していたのをやめてそのまま return するようにしています。

[d9984f39d3] Koichi Sasada 2022-05-23 17:56:59 UTC

native thread の実装で thread id が単一のポインタサイズにならない(構造体になる)環境をサポートするためのマクロ NON_SCALAR_THREAD_ID のサポートを消しています。このサポートのためにコードが複雑になるのを嫌ってとのこと。

[f3235ac095] Koichi Sasada 2022-05-23 18:57:06 UTC

eab99b1d4b61fb85d994534826922f96cd14ae58 で導入した Thread のデバッグ用ログのために導入した rb_thread_t::serial を取得するための関数 rb_th_serial() を導入して直接構造体メンバーを参照しないようにしています。あーなるほどあそこでデバッグ出力のために serial を導入したから thread id の非スカラー値のサポートを消せたのか。

[4111028a5c] Koichi Sasada 2022-05-23 18:58:18 UTC

THREAD_DEBUG というマクロを定義してビルドすると有効になる thread_debug() というマクロを Thread まわりのデバッグログ出力に使っていたのを廃止して RUBY_DEBUG_LOG() という汎用のデバッグログ機能を利用するようにしています。

[2d1e7dfc36] Koichi Sasada 2022-05-23 19:06:03 UTC

4111028a5cc229c314c2b93271d205206b207088 で廃止されたマクロ THREAD_DEBUG を定義してビルドするテストが GitHub Actions の .github/workflows/compilers.yml の workflow にコメントアウトされた状態ですが存在していたので削除しています。

[d2033d0f06] Nobuyoshi Nakada 2022-05-24 03:17:19 UTC

main() 関数から WASI 環境サポートのため 65f95f26ff0e7b4be4704fedc52344a26d22a4e2 で切り出した rb_main() から環境変数 RUBY_DEBUG がセットされてた時の処理と setlocale() と ruby_sysinit() の呼び出しを main() 関数のほうへ移動しています。 asyncify に対応するためにはこれらの処理はサポートされないスタックの巻き戻しの可能性のある処理が含まれているためとのこと? 他はともかく ruby_sysinit() も WASI 環境で省いてもいいのかな、と思いましたが引数(argv)の退避と標準入出力などの fd の処理なので WASI では不要そうですね。

[62e08d4b84] Koichi Sasada 2022-05-24 06:06:30 UTC

DEBUG_OUT() というこれもデバッグ用のマクロが未使用になってたので削除しています。 https://github.com/ruby/ruby/pull/5933

[78785fb990] Nobuyoshi Nakada 2022-05-24 08:23:23 UTC

拡張ライブラリ date の gperf で生成するヘッダの変数 gperf_downcase に const 修飾子を追加するよう生成コードを書き変える sed スクリプトにルールを追加しています。

[08cee2bf80] Koichi Sasada 2022-05-24 07:39:45 UTC

シグナル処理時のスタックを切り替えるための rb_thread_t のメンバー altstack を struct rb_native_thread に移動しています。