ruby-trunk-changes 2022-10-07

今日はたくさん変更がありましたが GC.auto_compact 有効時の異常終了する可能性があった不具合修正や IO#timeout= メソッドの追加による IO 処理のタイムアウト導入、rdoc や fiddle の更新などがありました。

[76bae60d9b] Peter Zhu 2022-10-05 19:19:43 UTC

インスタンス変数のテーブル generic_iv_tbl のサイズを増やす時に GC がトリガーされ、さらに GC.auto_compact が有効になっていた場合 compaction が走るため tab->entries のポインタが更新される可能性があるのでその前に参照していた不正なポインタを利用してしまう不具合が発生していたようです。st.c の rebuild_table() でサイズの調整後に tab->entries を参照するように修正しています。 [ruby-core:110187] [Bug #19038]

[a19bf47d03] Nobuyoshi Nakada 2022-10-06 04:10:31 UTC

標準添付ライブラリ rdoc のマークアップでテーブル表記のための "|" の右端のものは省略できるようにしています。

[f6c916c7ef] Nobuyoshi Nakada 2022-10-06 08:12:09 UTC

さらに rdoc のマークアップでテーブル表記の左端の "|" も省略可能にしています。

[7c03c82444] Nobuyoshi Nakada 2022-10-06 08:26:21 UTC

さらにさらに rdoc のマークアップでテーブルの中に "|" をエスケープして書けるように対応しているようです。

[28e24ce355] Nobuyoshi Nakada 2022-10-06 08:20:48 UTC

さらに rdoc のマークアップの table 記法でヘッダを分けるバー("-")の行で "|" とのあいだに空白を追加しても良いようにしています。

[cf3056be69] Nobuyoshi Nakada 2022-10-06 08:39:10 UTC

さらに rdoc のマークアップの table 記法でヘッダをわける行に "|:---:|" のような記法をサポートするようにしてます。セルの内容を中央揃えにする指定のようです。

[bbbdb574c5] Burdette Lamar 2022-10-06 14:30:12 UTC

IO の rdoc 用コメントのクロスリファレンス追加。 https://github.com/ruby/ruby/pull/6491

[13e87e5049] Yuri Smirnov 2022-10-06 17:13:17 UTC

Data クラスの rdoc 用コメントで Data.new のかわりに Data.define を使うように修正しています。

[3df904d1a8] Peter Zhu 2022-10-06 17:46:31 UTC

RGenGC のためのテスト? test_thrashing_for_young_objects が CI で失敗しているとのことでデバッグのためにメッセージを追加しています。

[43650f606e] Takashi Kokubun 2022-10-06 18:58:50 UTC

GitHub Actions の workflow .github/workflows/check_misc.yml にエラー時の Slack 通知を追加しています。

[7837dccb0e] Burdette Lamar 2022-10-06 20:02:37 UTC

doc/contributing/documentation_guide.md の rdoc で使うマークアップについて変更しています。 https://github.com/ruby/ruby/pull/6504

[fa2e1b67e5] Janko Marohnić 2022-10-06 18:09:46 UTC

標準添付ライブラリ open-uri でレスポンスの HTTP status の 308 Permanent Redirect への対応を追加しています。

[43e87c7e8a] Alan Wu 2022-10-06 22:41:38 UTC

YJIT の arm64 アーキテクチャでの機械語生成の不具合修正をしているようです。 https://github.com/ruby/ruby/pull/6503

[0472effc41] Alan Wu 2022-10-06 22:42:26 UTC

YIT の Rust 実装にコンパイル対象の ISeq が cfp からと pc からの判定で食い違ってないかチェックする assert を追加しています。 https://github.com/ruby/ruby/pull/6505

[deaa656608] Nobuyoshi Nakada 2022-03-28 09:36:56 UTC

標準添付ライブラリ rdoc のマークアップでリンク(アンカー)の記法の文字列を HTML エスケープして埋め込むようにしています。

[9e3ab9da7f] Nobuyoshi Nakada 2022-04-13 07:14:07 UTC

同じく標準添付ライブラリ rdoc のマークアップで rdoc-ref によるクロスリファレンスの記法の文字列を HTML エスケープして埋め込むようにしています。

[586e18b946] Nobuyoshi Nakada 2022-04-13 07:14:28 UTC

標準添付ライブラリ rdoc のマークアップで URL を自動でリンクにする時に HTML エスケープして埋め込むようにしています。

[8d0b2162a0] Nobuyoshi Nakada 2022-04-13 13:02:21 UTC

標準添付ライブラリ rdoc のマークアップで生成する HTML のタイトル部分をエスケープするようにしています。

[a3cb09c7d1] Nobuyoshi Nakada 2021-08-28 08:41:47 UTC

標準添付ライブラリ rdoc で生成する HTML ファイルのサイドバーのところでファイル名を HTML エスケープするようにしています。

[39909d8c18] Nobuyoshi Nakada 2021-09-07 14:52:13 UTC

標準添付ライブラリ rdoc で生成する HTML ファイルのヘッダ? のところでも検索結果の表示を HTML エスケープするようにしています。

[a87de5e3c1] Nobuyoshi Nakada 2022-10-07 02:38:21 UTC

a3cb09c7d17f2626ebd6eae774f0425d602ed95b で追加した rdoc のテストが Windows でファイル名に使えない文字列を含んでいたのでエラーになったら無視してテストをスキップするようにしています。

[94d4bea7c9] Hiroshi SHIBATA 2022-10-07 03:45:07 UTC

拡張ライブラリ psych の extconf.rb で libyaml の同梱をやめたので --bundled-libyaml オプションの対応を削除しています。

[fc218e5977] Hiroshi SHIBATA 2022-10-07 03:46:09 UTC

同じく拡張ライブラリ psych の extconf.rb で libyaml の同梱をやめたので libyaml を探す処理を削っています。

[1b7c5c394f] Nobuyoshi Nakada 2022-10-07 05:12:30 UTC

拡張ライブラリ date の timezone の範囲チェックの不具合修正。

[6d01b66764] Sutou Kouhei 2022-09-09 14:59:41 UTC

拡張ライブラリ fiddle のテストで Fiddle::Closure の leak を修正しているようです。 teardown で GC.start して ObjectSpace.each_object で 1つもなくなったのをチェックするってしていますが、GC は保守的なのでこれ失敗する可能性があるのでは。 https://github.com/ruby/fiddle/issues/102#issuecomment-1241763091

[48a6498406] Aaron Patterson 2022-09-12 16:53:19 UTC

拡張ライブラリ fiddle で unsigned な型の定数を対応する signed の型の値を負にした数値で表現するようにしていたの、値はそのままでそれぞれ独自の定数を定義するようにしています。

[755d99e878] Aaron Patterson 2022-09-13 15:26:47 UTC

拡張ライブラリ fiddle の型を表す定数群 Fiddle::TYPE_XXX を Fiddle::Types::XXX に移動しています。文字数はあんまり変わらないですが inclue Fiddle::Types すると XXX だけで参照できるので短く書けて便利ということみたいです。元の Fiddle::TYPE_XXX も Module#const_set で同じ値を保持し続けています。

[0097c7f388] Aaron Patterson 2022-09-13 15:27:59 UTC

拡張ライブラリ fiddle に Fiddle::Handle.sym_defined? というメソッドを新規追加して例外を rescue せずに symbol が存在するかをチェックできるようにしています。

[191b91f47a] Sutou Kouhei 2022-09-14 03:51:40 UTC

48a64984063532f4dedf62e8ac4958a3cf3b556d で拡張ライブラリ fiddle に追加したテストで警告抑制のため assert の引数に明示的なかっこをつけています。

[255e617bc3] Sutou Kouhei 2022-09-14 03:59:13 UTC

拡張ライブラリ fiddle に Fiddle::Closure.create と Fidle::Closure.free というメソッドを追加しています。その名の通りで明示的にオブジェクトが wrap している構造体内を明示的に開放することができるようにしています。 https://github.com/ruby/fiddle/issues/102#issuecomment-1241763091
コミットログの一部が 6d01b66764b6dd3fc61c297bd1ec973f8ea686aa と同じなのであそこで追加されたメソッドはこの変更にも関連しているのかも。 fork 時に Fiddle::Closure が確保されていると SELinux でエラーになるとのことでそれを回避するために強制的に開放できるようにしているみたいです。

[7c33141293] Sutou Kouhei 2022-09-14 21:38:52 UTC

拡張ライブラリ fiddle の 255e617bc38f714c943c932e7df2b709313fd6bf に対応して 6d01b66764b6dd3fc61c297bd1ec973f8ea686aa のテストで ObjectSpace.each_object で Fiddle::Closure がなくなってることを確認していたところはオブジェクトのインスタンス自体はあっても free されていれば良いというふうにしています。

[dfca6a8799] Sutou Kouhei 2022-09-14 21:40:31 UTC

7c3314129368fdfcf104e489f16538b531ed6d3d のテストで power_assert を使ってしまっていたので通常の assert 文を使うように修正しています。

[824c474c95] Sutou Kouhei 2022-09-14 21:44:07 UTC

さらに拡張ライブラリ fiddle のテスト test/fiddle/test_function.rb でも Fiddle::Closure.create でブロック指定で局所的に使うようにして、teardown で Fiddle::Closure が全て free されているかチェックするようにしています。

[9f62768e51] Sutou Kouhei 2022-09-14 22:07:59 UTC

拡張ライブラリ fiddle のテストでさらに Closure.create を利用するように修正しています。

[a4ad6bd9aa] Sutou Kouhei 2022-09-14 22:08:20 UTC

拡張ライブラリ fiddle の Fiddle::Closure.new で例外発生時に free しておくように rb_ensure() を利用するようにしています。

[ada9f8a9f7] Sutou Kouhei 2022-09-14 23:51:42 UTC

a4ad6bd9aac564e93219284c912b26a72f9e82fc の変更に追随漏れていた preprocessor 分岐のパスがあったので追加修正しています。

[92f0c53934] Sutou Kouhei 2022-09-15 20:54:47 UTC

拡張ライブラリ fiddle のテストで dfca6a879935b5999a56c2a220d4f2595c16d4d4 で power_assert をやめてかわりに使った assert_true, assert_false も ruby リポジトリでは使用できなかったとのことでただの assert に変更しています。

[4f78560cf1] Hiroshi SHIBATA 2022-10-07 06:18:00 UTC

拡張ライブラリ fiddle の extconf.rb で --bundled-libffi オプションを削除してかわりに --libffi-source-dir を追加して libffi の探索処理を変更しています。 libffi の同梱をやめたのに追随して。

[c3a87e16d8] Soutaro Matsumoto 2022-10-07 07:02:45 UTC

gems/bundled_gems の rbs のバージョンを 2.7.0 に更新しています。 https://github.com/ruby/ruby/pull/6506

[e76217a7f3] git 2022-10-07 07:03:33 UTC

c3a87e16d8edea1496eebc60d7514fa8005449c7 に追随して NEWS の bundled gems のバージョンリストの rbs のバージョンも更新しています。

[e4f91bbdba] Samuel Williams 2022-10-07 08:48:38 UTC

IO#timeout= というメソッドを追加して IO オブジェクトに timeout の値を設定することができるようにして、任意の block するメソッドで指定の秒数で結果がかえってこなかったら IO::TimeoutError 例外が発生するようにしています。これは大きな変更ですね。 https://github.com/ruby/ruby/pull/5653

[a081fe76de] Samuel Williams 2022-10-07 09:51:27 UTC

e4f91bbdbaa6ab3125f24967414ac5300bb244f5 の IO#timeout= の導入に対応して拡張ライブラリ openssl で rb_io_timeout() が定義されていたら rb_io_maybe_wait_{readable,writable}() の第3引数に Qundef を渡すようにするため関数を導入していたのを include/ruby/io.h で RUBY_IO_TIMEOUT_DEFAULT というマクロを用意しておくようにして、openssl 側は未定義ならこれを Qnil に定義することで古い ruby との互換性対応を取るようにしています。 https://github.com/ruby/ruby/pull/6507

[1e6cdc76e4] lijunwei 2022-08-20 15:12:59 UTC

標準添付ライブラリ logger の rdoc 用コメントのフォーマット指示子についてのドキュメント修正。

[24f3e397e9] Samuel Williams 2022-10-07 11:33:40 UTC

拡張ライブラリ coverage の eval 対応で 9dd902b83186ad6f9d0a553da2ca114bac6ab7b5 で Coverage.setup でモードを指定できるようにしたけど eval 系での coverage on/off が制御できてなかったみたいなのを修正して、rubyspec にテストを追加しています。なぜ test/ ではなく rubyspec に追加? https://github.com/ruby/ruby/pull/6499 [ruby-core:110119] [Bug #19026]