ruby-trunk-changes 2023-01-11

今日は標準添付ライブラリ reline のキーバインディング追加、標準添付ライブラリ set の最適化、YJIT の最適化などがありました。

[97f8f2c470] Phillip Hellewell 2022-03-06 07:22:57 UTC

標準添付ライブラリ reline の Reline::ANSI のキーバインディングに Delete キーを表す "kdch1" の対応を追加しています。また Reline::ANSI.set_default_key_bindings メソッドにキーワード引数 allow_terminfo を追加して Reline::Terminfo の機能を使ってキーバインディングを設定するかどうかを引数で制御できるようにしています。テストで強制的に terminfo を利用させるようにするためみたいですね。

[2861c8deaf] Peter Zhu 2023-01-09 20:39:23 UTC

array.c の ARY_SET_SHARED() という関数マクロは rb_ary_set_shared() でほぼ同様の処理をしていたのでこの関数を利用するようにしてマクロ定義を削除しています。ただしマクロで行なっていた RB_OBJ_WRITE() による RGenGC のための write barrier の挿入を関数のほうに追加(というかマクロ呼び出しと置き換え)しています。

[be1db1ca5c] Nobuyoshi Nakada 2023-01-10 14:31:04 UTC

tool/fetch-bundled_gems.rb で gems/bundled_gems の空行があってもエラーにならないように対応しています。

[6a585dbd5a] Takashi Kokubun 2023-01-10 16:00:25 UTC

YJIT の Rust 実装でビルド時の警告抑制のため関数の定義を条件コンパイルするようにしています。 https://github.com/ruby/ruby/pull/7092

[aeddc19340] Alan Wu 2023-01-10 16:11:10 UTC

YJIT の Rust 実装で ruby 実装のメソッドから C の関数を呼び出す時の処理漏れで異常終了することがあった不具合の修正。 sp の更新が遅れていたためマシンスタックの GC mark 漏れが発生していたみたいです。 https://github.com/ruby/ruby/pull/7090 [ruby-core:111693] [Bug #19316]

[5bf7218b01] Aaron Patterson 2023-01-10 18:54:07 UTC

YJIT の Rust 実装で Array のオブジェクトとそれ以外の T_ARRAY 型のオブジェクト(Array のサブクラスのインスタンス)とを区別することで不要な処理を省略する最適化をしているみたいです。 https://github.com/ruby/ruby/pull/7091

[2038c5c45a] Kazuhiro NISHIYAMA 2023-01-11 09:04:41 UTC

LEGAL から同梱するのをやめた ext/psych/yaml の libyaml のライセンス表記を削除しています。

[8c2b6926d2] Koichi Sasada 2023-01-11 08:00:30 UTC

拡張ライブラリ psych のテストで任意の例外を rescue してデバッグ出力していたのを Test::Unit::AssertionFailedError を rescue するように変更して、エラーの内容によっては標準エラー出力にメッセージを出してエラーは抑制するようにしています。

[e85ef212de] Jean Boussier 2023-01-11 09:08:52 UTC

標準添付ライブラリ set のメソッドで & つきで受け取ったブロック引数を nil かどうかチェックすることでブロックが渡されたか確認していたのを block_given? メソッドでチェックするように変更しています。だいぶ前にブロック引数の Proc 化を遅延する最適化が入っているので、引数を評価するとそのためだけに Proc オブジェクトが生成されてしまうのでそれを避けるためみたいです。

[3161fd4372] Jean Boussier 2023-01-11 10:00:58 UTC

拡張ライブラリ psycn の ext/psych/lib/psych/class_loader.rb や ext/psych/lib/psych/tree_builder.rb で Module#class_eval に文字列を渡してメソッド定義する時にファイル名と行番号の引数を渡して位置情報が取れるようにしています。

[b311c35bdb] Hiroshi SHIBATA 2023-01-11 09:29:55 UTC

common.mk の make test-syntax-suggest および make test-bundler など rspec を利用してテストするものでプログレス出力にモンキーパッチをあてる spec/lib/formatter_overrides.rb というファイルを追加してこれを rspec の --require オプションで読み込ませるようにしています。 pending の出力? を抑制するため。