ruby-trunk-changes 2023-01-21

今日は標準添付ライブラリ reline のオートインデントの不具合修正や ISeq の構造体を GC.compact で移動可能にする変更などがありました。

[c948a08136] Shugo Maeda 2023-01-20 12:40:25 UTC

cce3960964784e57cba14762503c5fdd688e9919 の String#bytesplice の引数の追加について NEWS に追記しています。 [ruby-core:111674] [Feature #19314]

[0cc91871a8] Josh Nichols 2023-01-18 14:22:39 UTC

bundler の man の bundle exec のページの deprecated になってた設定名の変更。

[4241b3cf2d] tompng 2022-08-03 06:25:13 UTC

標準添付ライブラリ reline の Reline::LineEditor のオートインデントのコードで画面幅を越えるインデントの深さになった時の対応を修正。

[76e3d853ab] tompng 2022-09-02 19:42:23 UTC

標準添付ライブラリ reline のテストに "[" の後に改行をした時のオートインデントについてのテストを追加しています。

[056e7a0154] Peter Zhu 2023-01-19 19:47:17 UTC

rb_iseq_t やその配下の struct iseq_compile_data_storage や rb_hook_list_t 構造体の mark 関数で GC.compact による移動をサポートするように pin down をやめています。

[f0f2535c4d] Nobuyoshi Nakada 2023-01-20 11:24:49 UTC

Thread::Queue や Thread::SizedQueue の実装で alignment のとれてないメンバーへのアクセスのために利用する queue_list() や szqueue_list() というマクロ定義を追加してこれを利用するようにリファクタリングしています。

[15328302dc] Nobuyoshi Nakada 2023-01-20 14:04:27 UTC

f0f2535c4daad91872c9f133f8812c421edf0dbb の続き? で USE_UNALIGNED_MEMBER_ACCESS が非0に定義されていてなおかつ -Waddress-of-packed-member というコンパイラの警告オプションの指定がされていた場合に UNALIGNED_MEMBER_PTR() マクロを警告を抑制するように局所的に警告オプションをオフにする pragma つきになるように定義しています。 通常の UNALIGNED_MEMBER_PTR() の定義の中身ではさらにそこから呼んでる UNALIGNED_MEMBER_ACCESS() というマクロの引数の部分で既に警告が出てしまうので別途引数部分の警告を抑制するように UNALIGNED_MEMBER_PTR() を別途定義しなおさないといけなかったみたいです。

[36fa4f13ca] Jimmy Miller 2023-01-20 15:57:41 UTC

YJIT の Rust 実装で不要な into() による型変換(?)が不要なのに付いているところがあったみたいで削っています。

[0457e43423] Matt Valentine-House 2023-01-20 14:51:19 UTC

thread.c の struct thgroup 構造体のメンバー group がもう不要になっていたとのことで削除しています。

[ffd52412ab] Jeremy Evans 2023-01-20 16:33:00 UTC

Hash クラスの rdoc 用コメントに Hash.new に渡したブロックでキーが存在しない時のデフォルト値を返すための default_proc を呼び出す処理は thread-safe でないという注意書きを追記しています。複数の Thread で同時に同じ Hash の同じ(存在しない)キーにアクセスしようとした時に、両方の Thread でキーが存在しないという判定になって default_proc が呼ばれる可能性があるということですね。なるほど……。 [ruby-core:111308] [Bug #19237]

[4e037075ae] Peter Zhu 2023-01-20 20:56:44 UTC

T_HASH 型オブジェクトの st_table をクリアする inline 関数 RHASH_ST_CLEAR() でクリアすべき共用体メンバーを間違えていたのを修正しています。型は違うけどポインタの共用体なのでたぶん結果的には同じことが起きるので実害はなかっただろうと思われます。

[887d21613c] Takashi Kokubun 2023-01-20 21:07:03 UTC

YJIT の Rust 実装で ISeq の構造体の GC.comact による移動の影響か BorrowError が発生していたとのことで rb_yjit_iseq_update_references() の途中で borrow() を再度呼ぶようにしています。 https://github.com/ruby/ruby/pull/7164

[06b62cbbdd] Aaron Patterson 2023-01-20 18:57:23 UTC

MJIT のための ruby 実装の RubyVM::MJIT::CPointer::Struct.define で生成する構造体を表すクラスのクラスメソッドに offsetof メソッドを追加して構造体内のメンバーの先頭からの位置を取得できるようにしています。今のところ利用しているところはなさそうですが。

[418b03c750] Nobuyoshi Nakada 2023-01-21 10:25:45 UTC

意図しない関数名や変数名などのシンボルの公開をチェックする leaked-globals で typedef ではじまるシンボルは無視するようにしています。また nm コマンドに渡す -Pgp オプションはツール内に直書きせず template/Makefile.in の leaked-globals ターゲットのコマンドで指定しておくようにしています。

[5cdf312d2c] Samuel Williams 2023-01-21 11:12:17 UTC

doc/distribution.md というドキュメントファイルを追加しています。リリースにまつわるポリシーとかが書かれているみたいです。 https://github.com/ruby/ruby/pull/6856

[3e7fdf2953] Samuel Williams 2023-01-21 11:13:16 UTC

doc/windows.md というドキュメントファイルを追加しています。 Windows 環境(mingw)でのビルド方法について簡単にまとめているようです。 https://github.com/ruby/ruby/pull/6956