ruby-trunk-changes 2023-12-24

今日は GC 関連の不具合修正の修正や M:N Thread の kqueue() 利用した実装の修正、bundled gems の net-imap のバージョン更新などがありました。

[47f33c3848] Peter Zhu 2023-12-23 14:51:30 UTC

array.c に #if 1 で常に有効なので無意味な preprocessor の分岐があったので削除しています。

[688a1314e6] Burdette Lamar 2023-12-23 21:08:26 UTC

File#flock の rdoc 用コメントを markdown でのマークアップに変更してテーブルを HTML タグでベタ書きしています。こういうこともできるのか。しかし正直わたしはドキュメント化してない状態でコメントを読むことのほうが多いのであんまり嬉しくないですね。

[fadda88903] Peter Zhu 2023-12-23 19:51:43 UTC

Regexp#to_s や Regexp.union で正規表現の元となる文字列オブジェクトのバッファのポインタの参照が compaction で移動した時に異常終了する可能性があった不具合を修正しています。

[a2ebf9cc63] JP Camara 2023-12-23 01:28:55 UTC

M:N Thread のための kqueue() を使った実装で epoll_ctl() で既に同じ fd が登録済みの時に発生する errno=EEXIST のエラーを模倣するため timer_th.waiting のリスト内をチェックする kqueue_already_registered() という関数を導入して事前にチェックするようにしています。

[50bf437341] Peter Zhu 2023-12-23 21:22:14 UTC

String#sub の実装でコンパイラ最適化による mark 漏れで GC で回収されるのを防ぐための RB_GC_GUARD() を追加しています。

[daefbf8fbf] "Daisuke Fujimura (fd0)" 2023-12-16 15:02:57 UTC

native thread (pthread) の起動時の関数でマシンスタックの初期化を cygwin で行なわないように preprocessor 分岐していたのが不要みたいで削除しています。

[82015496b9] Koichi Sasada 2023-12-24 01:30:03 UTC

a2ebf9cc63f0805bc7dd9a92e66bf589a869447e で導入した M:N Thread の実装で kqueue のイベント/fd の重複チェックする kqueue_already_registered() の呼び出しを timer_th.waiting_lock のロック取得後に行なうように修正しています。

[0fef890b4f] Nobuyoshi Nakada 2023-12-24 04:59:34 UTC

688a1314e60b0e58d5325f50c02552e3018c5025 の File#flock の rdoc 用コメントの変更の HTML タグ内で markdownマークアップを使っていたけど有効ではないみたいなので HTML タグを利用するようにしています。

[541371e286] Koichi Sasada 2023-12-24 05:20:35 UTC

M:N Thread のための thread_io_wait_events() でデバッグのための VM_ASSERT() の条件を緩めています。

[a87ae242bb] Koichi Sasada 2023-12-24 05:33:14 UTC

thread_pthread.h での rb_current_ec() の宣言に NOINLINE() マクロを利用して inline 化を抑制するようにしています。

[86893b28f7] git 2023-12-24 06:58:23 UTC

gems/bundled_gems と NEWS の bundled gems の net-imap のバージョンを 0.4.9 に更新しています。

[61289d9405] Nobuyoshi Nakada 2023-12-24 06:47:20 UTC

linked list のためのライブラリ ccan の内部的に利用されてる ccan_list_for_each_off_dir_() と ccan_list_for_each_safe_off_dir_() というマクロで展開後の for 文の初期化の項にループ変数の 0 初期化を追加しています。別途初期値での初期化もあるのになぜだろうかと思ったのですが初期値の計算に使われるマクロのほうで環境によってはループ変数を利用することがあるみたいでその前に 0 初期化しておく必要があったみたいです。