ruby-trunk-changes 2022-01-25

今日は WASI 環境での GC.compact を NotImplementedError にする変更や環境変数 RUBY_ON_BUG によるデバッグ機能をリリース版でも有効にする変更などがありました。

[663833b08f] Peter Zhu 2022-01-20 21:23:43 UTC

WASI 環境では GC.compact のための read barrier が実装できないので GC_ENABLE_READ_SIGNAL_BARRIER というマクロを導入してましたが GC_COMPACTION_SUPPORTED にしてさらに GC.compact や GC.auto_compact= などで NotImplementedError を発生させるようにしています。

[4317a6750d] David Rodríguez 2022-01-23 04:25:12 UTC

rubygems の gem update サブコマンドで rubygems 自身のバージョンの下限の設定に 3.1.x 用の設定を追加しています。

[97ab2599f3] git 2022-01-24 16:11:53 UTC

version.h の日付更新

[87784fdeb2] Peter Zhu 2022-01-24 18:38:15 UTC

compaction でオブジェクトの移動のためのビットマップ処理で NUM_IN_PAGE() がポインタのサイズのビット数を越えることを考慮するようにしています。NUM_IN_PAGE() は ObjectSpace のヒープの 1ページに入る struct RVALUE のスロット数が上限だと思うので越えることは一般にありえるんじゃないかと思うのですが、コミットログをみるとたいていの環境では問題にならないって書いてあって、どういうことなのかちょっとよくわからなかったです。

[530e485265] Nobuyoshi Nakada 2021-12-22 05:29:05 UTC

id_table.c の rb_id_table_foreach_with_replace() という関数で callback 関数の第1引数に ID にキャストした 0 や NULL を渡していたのを通し番号の key から ID に変換した ID を渡すようにしています。将来の拡張のため? [ruby-core:105658] [Feature #18253]

[de678cd51e] David Rodríguez 2021-11-18 20:45:04 UTC

拡張ライブラリ pathname の gemspec ファイルで require_ruby_version を 2.7.0 以上に引き上げています。またこれにより? tool/lib/core_assertions.rb で RUBY_VERSION が 2.4 以前だった時のための分岐というのが不要になったようなので削除しています。

[a51e1cd682] Koichi Sasada 2022-01-25 06:44:38 UTC

rb_bug() の実行時に環境変数 RUBY_ON_BUG が設定されていたらそのコマンドを実行する(デバッガを使ってアタッチするなどの使いかたを想定したデバッグ用の環境変数)という機能はリリース版でない開発ブランチ上でのビルドでのみ有効になるようにしていたのをやめています。つまりリリース版でも RUBY_ON_BUG という環境変数を設定するとそのコマンドが実行される可能性があるのでちょっと注意が必要ですね。 [ruby-core:107092] [Feature #18483]