ruby-trunk-changes 2023-10-25

今日は主に Object Space の実装に赤黒木を利用した再実装や Enumerator の一部のメソッドを freeze した Enumerator ではエラーになるようにした変更などがありました。

[c86c6a84f5] Nobuyoshi Nakada 2023-10-24 13:21:21 UTC

gems/bundled_gems の rbs のテストに使う commit hash を更新して、skip していたテストファイルの指定を削除しています。 [ruby-core:115124] [Bug #19968]

[5c4978c11c] Hiroshi SHIBATA 2023-10-24 07:22:58 UTC

rubygems や bundler の専用の YAML の eocoder で空配列の対応を追加しています。

[84e4453436] Aaron Patterson 2023-02-08 01:46:42 UTC

Object Shapes の実装に赤黒木を利用するようにしています。

[27c7531939] Aaron Patterson 2023-10-12 21:43:30 UTC

Object Shapes でインスタンス変数を管理できるインスタンス変数の数を増やしています。

[caf6a72348] Aaron Patterson 2023-10-19 18:00:54 UTC

よくわかりませんが Class/Module のインスタンス変数の管理で Object Shapes の機構を利用するようにしているようです。

[a3f66e09f6] Aaron Patterson 2023-10-19 23:01:35 UTC

Object Shapes で管理できないようなインスタンス変数の数やパターンになった時の対応を GC やオブジェクト複製時の処理に追加しています。

[54230dea1b] Aaron Patterson 2023-10-23 20:53:42 UTC

84e4453436c3549b4fda6014cdd5fcc9e0b80755 で導入した赤黒木の実装の redblack_cache_ancestors() に mmap() が利用できない時の代替実装を追加しています。

[dc81432482] Aaron Patterson 2023-10-23 23:57:31 UTC

YJIT 用の C の関数の binding に Object Shapes 用の赤黒木に関する型の情報を追加しています。

[884c3195d9] Aaron Patterson 2023-10-24 03:06:28 UTC

benchmark/vm_ivar_ic_miss.yml の行末の空白除去。

[e71f343a99] Aaron Patterson 2023-10-24 15:46:54 UTC

Object Shapes のための赤黒木の実装の条件分岐の整理。

[ee8299864f] Jemma Issroff 2023-10-24 19:35:07 UTC

prism の更新で誤って入った test_code.rb というファイルを削除。

[afae8df373] Aaron Patterson 2023-10-24 19:37:27 UTC

Object Shapes の実装でユーティリティ関数を使いまわすリファクタリングと、get_next_shape_internal() で NULL を返すことがないようにする変更。

[33bebee13a] Aaron Patterson 2023-10-24 19:38:50 UTC

vm_insnhelper.c で事前に定義済みの Symbol の ID をその場で rb_intern() せずに idInitialize などの定数を参照するように修正しています。

[d8cb827f39] Aaron Patterson 2023-10-24 19:43:22 UTC

Object Shapes 関連の定数 RubyVM::Shape::SHAPE_MAX_NUM_IVS を削除しています。

[a2badf3066] yui-knk 2023-10-24 09:54:48 UTC

コマンドラインオプション --dump=parsetree で AST のダンプをする時の NODE_OP_ASGN2 型の node の処理で NODE のツリーをやめて構造体に直接メンバーを追加した変更に追随するように修正しています。

[820957b1ee] yui-knk 2023-10-24 09:42:42 UTC

rubyparser.h から RNODE_OP_ASGN22() というマクロの定義を削除しています。

[c5861903ac] Hiroshi SHIBATA 2023-10-24 12:07:13 UTC

bundler の bundle gem で生成する gem で利用する CI 用サービスの種類に応じた設定ファイルを spec.files で無視するリストに追加するようにしています。

[a6a67b0524] Kazuhiro NISHIYAMA 2023-10-25 04:09:49 UTC

GitHub Actions の bundled gems の更新チェックの処理で誤って更新日が gems/bundled_gems にも追加されてしまっていたのを修正?

[3e64cf60b5] Hiroya Fujinami 2023-10-25 07:32:25 UTC

Enumerator を freeze した時に next や feed、rewind などの iterator の位置を変更したりブロックの評価値を変えるようなメソッドを FrozenError を発生させるようにチェックを追加しています。 peek は良いような気もちょっとしたけど、背後の Enumerable の each のブロックを呼んでしまうのでやはり破壊的な変更ということになるのかな。 https://github.com/ruby/ruby/pull/7791 [ruby-core:113420] [Bug #19632]

[55eb0d5c78] Kouhei Yanagita 2023-04-12 00:49:47 UTC

Comparable#clamp の rdoc 用コメントに引数の min, max に nil を渡した時の挙動について追記しています。

[593de2b048] Kouhei Yanagita 2023-04-26 06:45:35 UTC

Comparable#clamp のテストに引数に nil を渡した時のテストケースを追加しています。

[5461bc18f8] Hiroshi SHIBATA 2023-10-25 07:47:26 UTC

拡張ライブラリ socket の UNIX ソケットによる fd passing のテストで Errno::ETOOMANYREFS という例外が発生した時にテストを skip させるようにしています。 arm64-neoverse-n1 というアーキテクチャの環境でエラーが発生していたようです。

[bf1362306e] OKURA Masafumi 2023-07-19 08:38:07 UTC

標準添付ライブラリ pp の rdoc 用コメントに require "pp" が必要であることの記述をライブラリ全体のドキュメントの部分に移動しています。

[526292d9fe] Nobuyoshi Nakada 2023-10-25 06:08:26 UTC

misc/lldb_rb/ の lldb 向けコマンドの実装でヒストリへの追加のために使う関数を変更しているようです。

[1649486834] Hiroshi SHIBATA 2023-10-25 09:49:37 UTC

5461bc18f88f7f335f6456774498efd386c3012f で拡張ライブラリ socket の fd passing のテストの skip の追加で例外を捕捉すべき UNIXSocket#send_io の呼び出し箇所が間違ってたみたいで別のところに rescue 節を追加してそちらで Errno::ETOOMANYREFS の例外が発生した時に skip するようにしています。

[54a5623e26] Nobuyoshi Nakada 2023-10-25 09:58:52 UTC

test/socket/test_unix.rb の行末の空白除去。

[de82439215] Yusuke Endoh 2023-10-25 11:04:18 UTC

3dc311bdc8badb680267f5a10e0c467ddd9dfe4c の拡張ライブラリ socket で getaddrinfo を割り込み可能にするための pthread を使った実装で pthread_setaffinity_np(3) を使うと s390x-linux で異常終了してしまうとのことでアーキテクチャが s390x の時に pthread_setaffinity_np() を使った最適化を行なわないようにしています。

[f26d53e905] Yusuke Endoh 2023-10-25 11:37:21 UTC

拡張ライブラリ socket の UNIXSocket による fd passing のテストで send_io を実行する回数を減らしています。 Errno::ETOOMANYREFS は fd passing による fd の送信途中の複製の数の上限にひっかかったものなので、送信回数を減らしています。