ruby-trunk-changes 2021-06-24

今日は VM 命令列の最適化時のメモリ不正アクセスの修正や Windows 版での演算子優先度の間違いで不正な条件になってた分岐の修正など内部的な修正がありました。

[557b4eb4aa] aycabta 2021-06-23 12:00:20 UTC

標準添付ライブラリ reline のテスト用の assertion メソッド assert_external_string_equal でエラー時のメッセージを追加しています。

[7c31ecd3ac] Jeremy Evans 2021-06-15 17:11:00 UTC

win32/win32.c で if 文の条件で演算子の優先度の問題で意図と違う結合順になってしまっていたところをかっこをつけて修正しています。おおう、これは Windows で遮蔽されている構造体の中身を調査して狙ったフィールドを取り出す時の関数で、実際に影響ありそうだけど動いてたのかな。 [ruby-core:104232] [Bug #17946]

[2fb435b3ab] Ketan Bhatt 2021-05-13 09:28:51 UTC

String#hash の rdoc 用コメントに Object#hash への参照を追記しています。動機としては String#hash がプロセスをまたいで同じ値なら同じ hash 値になると思ってたけど違ったので、その注意書きのある Object#hash へのリンクを復活させたということみたいです。

[8209b73580] eileencodes 2021-06-22 17:43:18 UTC

複数 Ractor を使いはじめた時に rb_gc_enable() を呼ぶ前に GC.enable を true にしておくようにしています。 [ruby-core:104260] [Bug #17985]

[b29c48efc0] git 2021-06-23 17:03:26 UTC

version.h の日付更新

[31f4d26273] eileencodes 2021-06-23 17:28:22 UTC

iseq_peephole_optimize() で nobj の type のチェックが漏れてて ADJUST が次にきてた時に不正なメモリアクセスをする可能性があったのを修正しています。 [ruby-core:104371] [Bug #18001]

[0fbdaaf7c9] 卜部昌平 2021-06-24 02:57:40 UTC

random.c の rand_bytes() で rb_rand_bytes_int32() を直接呼び出していたのを rb_random_interface_t::get_bytes にセットされている関数を呼ぶようにしています。この構造体で実体の関数を変更できるようにしてたつもりだったのに決め打ちになってたってことですね。

[6875408583] Nobuyoshi Nakada 2021-06-21 05:04:29 UTC

io.c でシステムによる改行コードの違いを RUBY_CRLF_ENVIRONMENT というマクロを追加して同じ条件を何度も書いてたのをまとめるリファクタリング

[4c8c3fb230] Nobuyoshi Nakada 2021-06-23 10:18:22 UTC

tool/make-snapshot の rubygems などの require をファイルの先頭に移動しています。他の標準添付ライブラリが default gems 化されているので、その前に rubygems をロードしておくようにしているようです。

[358a357f72] Nobuyoshi Nakada 2021-06-23 02:02:44 UTC

thread.c の rb_thread_wait_for_single_fd() や do_select() で共通の select(2) や ppoll(2) の戻り値をチェックする処理をマクロとして切り出すリファクタリング

[1356b90c91] Nobuyoshi Nakada 2021-06-23 12:53:48 UTC

標準添付ライブラリ mkmf.rb のディレクトリツリーを削除するコマンドを格納する Makefile の定数 RM_RF で使うコマンドに RbConfig::CONFIG["RMALL"] があればそちらを使うようにしています。元は ruby の標準添付ライブラリ un.rb の機能を使うようになってました。

[627aafac86] Nobuyoshi Nakada 2021-06-23 12:55:56 UTC

macOS での make clean 時にデバッグ用のファイルが置かれる .dSYM ディレクトリも削除するようにしています。