ruby-trunk-changes 2023-05-21

今日は主にコマンドラインオプション --help でページャーコマンドを起動しようとした時に pid のキャッシュ導入の影響でエラーが起きていた不具合の修正などがありました。

[8d242a33af] Nobuyoshi Nakada 2023-05-20 05:00:14 UTC

rb_bug() はメッセージに改行を追加するので引数に指定する文字列に改行を含める必要はないので冗長な改行を削っています。

[b3f355cfbe] Jeremy Evans 2023-05-20 20:40:46 UTC

Process.spawn でファイルパスのサイズ上限をチェックする assertion メソッドで Process.spawn のオプション :rlimit_nproc の指定を OpenBSD で小さくするようにしています。テストの実行時間の短縮のためとのこと。

[1dd5427abe] Ivanov-Anton 2023-05-21 00:59:34 UTC

rubyspec のテスト名の typo 修正。

[a997f144fb] Nobuyoshi Nakada 2023-05-21 01:03:28 UTC

Object Shape でインスンタンス変数の数が多い場合のテストを YJIT や RJIT が有効な時に skip するようにしていたのをテストメソッドの先頭で skip するようにしています。

[64e156f20c] ima1zumi 2023-05-21 02:57:45 UTC

irb のテストのメソッド名の typo 修正。

[4f4bc13eb9] Nobuyoshi Nakada 2023-05-21 07:44:10 UTC

Object Shapes でインスタンス変数の数が多い時の fallback のテストが YJIT/RJIT と関係なく失敗することがあるみたいなので常に skip するように変更しています。

[0867588980] Nobuyoshi Nakada 2023-05-21 07:47:14 UTC

コマンドラインオプション --help を指定した時に環境変数 RUBY_PAGER や PAGER で指定されたページャーコマンドを起動してヘルプメッセージを表示させるために fork する時に rb_fork() を利用していたのを rb_fork_ruby() という関数を利用するように変更しています。 [Feature #19443] の Process.pid のキャッシュのための実装の影響で子プロセスで存在しない timer thread を停止しようとしてエラーが発生するようになっていたようです。

ruby-trunk-changes 2023-05-20

今日は主に Enumerable#sort_by のブロックを評価した値が数値のみの時のための最適化や同梱している Lrama のバージョンアップなどがありました。

[6d9875ccbf] tomoya ishida 2023-05-20 01:08:54 UTC

irb のテストで IRB::RubyLex#configure_io を利用するように変更しています。

[9ce6c08caf] Stan Lo 2023-05-20 04:28:19 UTC

6d9875ccbf78ca354e63f05a4e37ab1e2c14a9ac の続き? で irb のテストで IRB::RubyLex#configure_io に渡したオブジェクトの dynamic_prompt メソッドが実行されたことを確認する assertion を追加しています。

[41512cd1bf] yui-knk 2023-05-20 03:27:45 UTC

同梱されている Lrama のバージョンを 0.5.1 に更新しています。 C の "//" による行コメントの対応を追加したり scanner (tokenizer) の実装や Lrama::State クラスの実装を独立したファイルに切り出したりしているようです。

[8db13c179e] ima1zumi 2023-05-20 09:31:32 UTC

標準添付ライブラリ reline のバージョンを 0.3.4 に更新しています。

[892798cac8] git 2023-05-20 09:32:21 UTC

8db13c179e475e99f6155eb85f196aebe04cc39a に追随して NEWS の default gems バージョンリストの reline のバージョンも更新しています。

[87217f26f1] nekoyama32767 2023-05-20 10:40:27 UTC

Enumerable#sort_by の実装に各要素についてブロックを評価した結果が全て Integer や Float だけだった時に比較に関数ポインタを利用する qsort_r(3) を利用するより直接 qsort を実装したほうが速いからということで最適化パスを追加しています。ふーむ、かなりコード量が増えてるけど sort はともかく sort_by だと確かにブロックから数値を返すことは多い……かも? https://github.com/ruby/ruby/pull/7805 [Feature #19643]

ruby-trunk-changes 2023-05-19

今日は主に拡張ライブラリ openssl の FIPS モード対応や Fiber#kill メソッドの新規追加などがありました。

[2df5a697e2] Samuel Williams 2023-05-18 14:33:42 UTC

Fiber#kill メソッドを追加して他の Fiber/Thread から Fiber の実行を停止できるようにしています。といっても別の Fiber からだとその時点で対象の Fiber は動いてないので Fiber#resume した時点で停止するということみたいです。そして例外が発生するのではなくて特殊な fatal の tag で大域脱出で抜けるみたいですね。 https://github.com/ruby/ruby/pull/7823

variable.c の rb_gc_mark_global_tbl() と rb_gc_update_global_tbl() の処理が似てるので gc_mark_table() というマクロに切り出しています。

[d74b32db9d] lukeg 2023-04-03 18:46:43 UTC

拡張ライブラリ objspace のテストで Object Shapes のインスタンス変数の数が多い時のためのテストで Object のインスタンスを使ってたので Object クラスの shape が汚染されてたので専用のクラスを定義してこれを利用するように変更しています。

[cfb7997353] Stan Lo 2023-05-18 19:00:29 UTC

irbIRB::RubyLex に configure_io というメソッドを追加して set_input や set_auto_indent の処理をまとめるよう変更しています。 https://github.com/ruby/irb/pull/583

[94a513b08f] Takashi Kokubun 2023-05-19 00:05:39 UTC

YJIT の Cargo.toml ファイルで dev_nodebug profile でのビルド時に debug フラグをオフにしていたのをやめています。 https://github.com/ruby/ruby/pull/7822

[741a3bd5a5] Jun Aruga 2023-03-16 16:19:19 UTC

拡張ライブラリ openssl のテスト用の config ファイルのテンプレートを追加しています。 よくわかりませんが FIPS モードでのテストのためみたいです。

[678d41bc51] Jun Aruga 2023-03-16 20:36:43 UTC

拡張ライブラリ openssl の OpenSSL.fips_mode や OpenSSL.fips_mode= メソッドの実装の OpenSSL 3.0 対応を追加しています。

[b26ddfd72f] Jun Aruga 2023-05-16 20:01:43 UTC

678d41bc51fe31834eec0b653ba0e47de5420aa0 の openssl の FIPS モード対応の再修正で preprocessor 分岐でマクロをそのままチェックしていたのを defined() で定義の有無のチェックをするように変更しています。

[74600917a8] Hiroshi SHIBATA 2023-05-19 00:08:39 UTC

拡張ライブラリ openssl のテストで RHEL9 で skip するようにしていたテストが 678d41bc51fe31834eec0b653ba0e47de5420aa0 の対応で不要になったようなので revert してテスト実施するようにしています。

[b54b388f2a] Adam Daniels 2023-05-19 01:33:28 UTC

irb の rdoc のドキュメント表示のダイアログのための Proc オブジェクト内の処理で Alt+d キーを押すと表示するところを macOS では Option+d と表示するように RUBY_PLATFORM をみて変更するようにしています。 https://github.com/ruby/irb/pull/584

[b70e3f44c1] Takashi Kokubun 2023-05-19 02:32:39 UTC

拡張ライブラリ objspace のテスト で Object Shape でインスタンス変数が多すぎるクラスの時のテストが YJIT が有効な時に失敗することがあるみたいで skip するようにしています。

[875adad948] Takashi Kokubun 2023-05-19 03:55:35 UTC

b70e3f44c1d86fed92a63832fbf69a0764675ebb で YJIT が有効な時に skip するようにしたテストを RJIT が有効な時にも同じく skip するようにしています。

ruby-trunk-changes 2023-05-18

今日は主に Hash のメモリ管理に Variable Width Allocation を活用するようにした実装の変更などがありました。

[5199f2aaf9] Peter Zhu 2023-04-19 19:59:25 UTC

Hash の要素数が少ない時に配列で管理する ar_table の実装を VWA (Variable Width Allocation) によるオブジェクトの slot を struct RVALUE の複数の配列をまとめて確保する機能に対応させて少し大きめの Hash でも ar_table 実装にできるようにしているようです。どうやらこれに伴ない Transient Heap による若いオブジェクトのためのメモリ領域を一時的に揮発性のヒープに確保する実装の Hash での利用をやめている? みたいです。 https://github.com/ruby/ruby/pull/7742

[0938964ba1] Peter Zhu 2023-04-19 20:02:36 UTC

5199f2aaf9527c97e6ec371e19748d0c2ac7a70e に続いて Hash のデータを st_table で管理しているケースでも struct st_table の構造体を Variable Width Allocation を使って slot 内に埋め込むようにしているようです。ここまでするのか。 https://github.com/ruby/ruby/pull/7742

[cea9c30fa5] Peter Zhu 2023-04-19 20:16:27 UTC

0938964ba1af3924cf969fb809fc3598892bc20d の続きで Hash の実装で st_table を埋め込んだ時のサイズの調節のため struct RHash の ar_hint という union 型メンバーを構造体 ar_table の中に移動しています。あれこれここに移動でいいのかな。

[b695f58d52] Stan Lo 2023-05-18 03:28:27 UTC

irb の組み込みコマンド help の後継コマンド show_doc を追加して help コマンドでは deprecated の警告を出すようにしています。 https://github.com/ruby/irb/pull/567

ruby-trunk-changes 2023-05-17

今日は irb のテストの修正だけでした。

[264ba0f89a] tomoya ishida 2023-05-17 04:42:21 UTC

irb の組み込みコマンド debug のテストで起動するプロセスに環境変数 RUBY_DEBUG_NO_RELINE=true を渡していたのをやめて irbrc ファイルで Reline::GeneralIO を利用させるように定数の上書きをさせるようにしています。よくわかりませんがエスケープシーケンスが出力されないようにするためみたいです。 https://github.com/ruby/irb/pull/582

ruby-trunk-changes 2023-05-16

今日は主に ruby インタプリタ自体で SIGCHLD のシグナルハンドラを登録していたのをやめる変更や WASI 向けの setjmp 代替実装のバッファ確保の方法の変更などがありました。

[3fe45a3123] Nobuyoshi Nakada 2023-05-15 10:10:24 UTC

Lrama で parse.y を parse.c に変換する時に一時ファイルを経由せずにパイプ経由で処理することで sed でファイル名を置換するのも不要にしています。 拡張ライブラリ ripper 向けの depend ファイルでも同様。 41dccb6a7bebfa8c0e5c8f6e6331a41fa01f9169 の lrama 0.5.0 の機能を利用したものだと思います。

[bab9966b7a] Kazuhiro NISHIYAMA 2023-05-15 13:35:41 UTC

NEWS のチケット参照をリンクにするための footer に URL を追加しています。

[ab7bb38aca] Samuel Williams 2023-05-15 14:14:51 UTC

SIGCHLD のシグナルハンドラを登録して明示的に処理していたところを削除しています。SIGCHLD まわりは何度か変化していて今回の変更で ruby のプロセスレベルでデフォルトで SIGCHLD のハンドラを登録するのはやめているみたいですね。

[8945143464] Yuta Saito 2022-09-04 14:34:24 UTC

WASI 版の setjmp の代替実装で struct __rb_wasm_asyncify_jmp_buf というレジスタなどの情報を対比するためのバッファ? の構造体を構造体埋め込みで持ってたのを malloc(3) でヒープから確保するようにしています。マシンスタックの領域を節約するためみたいです。

[0052132025] "dependabot[bot]" 2023-05-15 15:58:30 UTC

rubygems の Rust 製拡張ライブラリのテストのためのプロジェクトの rb-sys というパッケージのバージョンを更新しています。

[4d1ca2e1f9] Samuel Williams 2023-05-16 03:49:06 UTC

ab7bb38aca0d2b5c2b81142a8e67fbff0f1a4a8a の続きで Signal.trap で SIGCHLD にシグナルハンドラを登録する時に利用するハンドラ関数を通常の関数を利用するように指定を追加しています。 https://github.com/ruby/ruby/pull/7819

ruby-trunk-changes 2023-05-15

今日は拡張ライブラリ ripper で正常な文法で SyntaxError を発生させてしまう不具合の修正や同梱している Lrama のバージョン更新などがありました。

[91c004885f] Nobuyoshi Nakada 2023-05-14 13:16:15 UTC

拡張ライブラリ ripper が番号によるブロックパラメーター参照(_1, _2, ...) を含む文法を正しく処理できず SyntaxError になってしまっていた不具合を修正しています。 [ruby-core:110114] [Bug #19025]

[0b2613f443] Samuel Williams 2023-05-15 02:13:51 UTC

IO#puts に空文字列を渡した時に io_binwritev_internal() に空の struct iovec を渡して rb_bug() で異常終了する場合があった不具合を修正。普通に呼ぶだけでは再現しないと思いますがテストをみる限り non-blocking Fiber で Scheduler を利用している場合に起きる? https://github.com/ruby/ruby/pull/7806 [ruby-core:113482] [Bug #19640]

[d9033d3749] "dependabot[bot]" 2023-05-15 03:00:18 UTC

GitHub Actions の workflow で利用している ruby/setup-ruby のバージョンを更新しています。

[8bd4d8867a] KJ Tsanaktsidis 2023-05-15 04:37:28 UTC

SIGCHLD シグナルのハンドラを登録している時のテストを FreeBSDOpenBSD でスキップしていたのをやめています。 timer thread の実装の変更などで SIGCHLD の処理は大きく変更されているのでもう問題ないはず? ということみたいです。 [Bug #4173]

[c7067ed13d] Kunshan Wang 2023-05-15 04:08:00 UTC

signal.c で rb_sys_fail_str() の参照のために internal/error.h の #include を追加しています。また common.mk の依存関係も再生成しています。

[41dccb6a7b] Yuichiro Kaneko 2023-05-15 10:01:07 UTC

同梱しているパーサジェネレーター Lrama のバージョンを v0.5.0 に更新しています。parse.y ファイルを標準入出力から受付ける指定をできるように対応しているようです。