ruby-trunk-changes 2022-05-19

今日は標準添付ライブラリ timeout の実装の大幅な変更や README から Subversionリポジトリについての記述の削除などがありました。

[89fbec224d] Benoit Daloze 2022-05-12 14:20:56 UTC

標準添付ライブラリ timeout に magic comment frozen_string_literal: true を追加して文字列リテラルを fstring にするようにしています。また全体的に Timeout.timeout の実装を変更して、毎回 Thread を新たに起動してそれにタイマー役をさせていたのをプロセス全体で 1つだけタイマー監視用の Thread を起動してそれに一番近いタイムアウトまでの wait を Thread::ConditionVariable#wait で待たせるという実装に変更しています。新たに Timeout.timeout でタイマーが追加されたら ConditionVariable#signal で Thread を起こして再チェックさせるという風にしています。なるほど Timeout.timeout をたくさん同時に使う(ネストさせたり複数 Thread から使ったりする)とタイマー用の Thread 数も増えてメモリを圧迫するので、このようにすると省メモリですね。

[354cd6f210] Benoit Daloze 2022-05-15 11:43:29 UTC

89fbec224d8e1fa35e82bf2712c5a5fd3dc06b83 の続きで標準添付ライブラリ timeout の Timeout.timeout の実装で fork した時に main Thread 以外の Thread が殺されてしまうのを考慮してタイマー用 Thread が死んでたら既にあっても作りなおすというようにしています。なるほど。

[240ac9eaa8] Benoit Daloze 2022-05-15 11:49:31 UTC

89fbec224d8e1fa35e82bf2712c5a5fd3dc06b83 の Timeout.timeout の実装変更で内部的に利用するために追加したクラスの Timeout::Request#done? にインスタンス変数参照時の排他処理を追加しています。

[75fcfb1416] Benoit Daloze 2022-05-15 11:51:57 UTC

同じく 89fbec224d8e1fa35e82bf2712c5a5fd3dc06b83 で標準添付ライブラリ timeout に追加されたクラスの Timeout::Request#expired? でこのタイミングで既に処理が完了してないかチェックしていたのが冗長とのことで削除しています。

[13c60e6568] git 2022-05-18 22:19:57 UTC

version.h の日付更新

[ee3b61a44f] Hiroshi SHIBATA 2022-05-19 06:48:27 UTC

README.md から Subversionリポジトリからのチェックアウトの方法についての記述を削除しています。メンテナンスされている全安定版ブランチも Git で管理されるようになったので、Subversion でのバージョン管理は終了となりました。

[a72529182d] Nobuyoshi Nakada 2022-05-19 07:40:45 UTC

60d45b2ee86a80e248c3bff0c90c981ed2168ac3 の autoload の排他処理変更で追加された autoload_feature_clear_if_empty() が未使用になってたため警告抑制のためコメントアウトしています。

[72fc3b1bbb] Nobuyoshi Nakada 2022-05-19 07:45:37 UTC

variable.c の autoload 排他処理変更の C のスタイル修正や 1行で長すぎるコメントの改行の追加など。

[61a54d5180] Nobuyoshi Nakada 2022-05-19 08:07:56 UTC

doc/contributing/documentation_guide.md の改行の追加やマークアップの修正など。

[3d6fd162a4] "Daisuke Fujimura (fd0)" 2022-04-16 03:41:37 UTC

拡張ライブラリの ABI チェックの有無を示す RUBY_DLN_CHECK_ABI の定義を Cygwin 環境で行なわないようにしています。