ruby-trunk-changes 2020-11-10

今日はインスタンス変数の inline cache まわりの実装のパフォーマンスのための変更や標準添付ライブラリ内で Win32API の利用を避けるようにする変更などがありました。

[eb229994e5] Aaron Patterson 2020-11-06 18:11:20 UTC

T_OBJECT 型オブジェクトなどのインスタンス変数の管理のためのテーブルの拡張を obj_ivar_set() でのみ行なってたのを vm_setivar() でも行うようにしています。ベンチマークも追加されているので、不要なメモリ領域確保を遅延することである種のケースでのパフォーマンスのためみたいですけどどういう場合だろう。

[5582c5a232] Aaron Patterson 2020-11-06 19:33:43 UTC

eb229994e5b53e201e776ea103970751d3b1725b の再修正。所属するクラスのほうの RCLASS_IV_INDEX_TBL() をみるのをやめてオブジェクト自身の iv_index_tbl をみるようにしていますが、あれインスタンス変数のインデックスってクラスごとで共有されるようになってるんじゃなかったっけ……。いつのまにか実装変わってた? 変更部分の周辺をみると inline cache も関係しているようなのでそのあたりの最適化に関係しているのかも。思い出せない。

[f649946fb9] Aaron Patterson 2020-11-06 22:43:36 UTC

5582c5a2327d824e872f7f5bd22330094f189d66 の変更で未使用になった debug counters の ivar_set_ic_miss_oorange というのを削除しています。

[cbe869b370] git 2020-11-09 17:44:39 UTC

version.h の日付更新

[6817f4c6b1] Alan Wu 2020-11-09 15:27:31 UTC

vm.c の rb_vm_add_root_module() から未使用の引数 id を削除しています。

[6778ba48fd] Alan Wu 2020-11-07 00:01:49 UTC

Class/Module などの定義時に GC されないように登録するのに rb_gc_register_mark_object() と rb_vm_add_root_module() で重複してたので rb_gc_register_mark_object() は削っています。

[f259906eab] Aaron Patterson 2020-11-09 19:20:29 UTC

vm_setivar() でキャッシュにヒットしなかった時にもオブジェクトの iv_indexl_tbl に指定された名前のエントリがあった時のためのショートカット処理を追加しています。

[4219cb7adb] Aaron Patterson 2020-11-09 19:59:18 UTC

debug counters に ivar_set_ic_miss_iv_hit という項目を追加して f259906eabac6038bb7c79e426c17ae850c8e017 で追加した inline cache にヒットしなかった時にカウントアップするようにしています。

[d7581370fd] Aaron Patterson 2020-11-09 20:02:20 UTC

共通の親クラスをもつクラスのインスタンス生成のベンチマークを追加。直近のインスタンス変数の管理の変更に関連するものみたいです。

[2fed5f0ad8] Yusuke Endoh 2020-11-09 10:49:04 UTC

標準添付ライブラリ racc の生成物の遷移表テーブルなどを実行するたびに変化しないように Array#sort! のかわりに Array#sort_by! と with_index を使って安定ソートするようにしています。

[b557c5768c] Koichi Sasada 2020-11-10 01:44:45 UTC

iv_index_tbl_newsize() の不要な変数を削除するリファクタリング

[8b3653b484] S-H-GAMELINKS 2020-11-05 16:50:24 UTC

Array#sum や Enumerable#sum の実装のコメントで Kahan-Babuska balancing compensated summation というアルゴリズムの参考 URL の schema を https に修正しています。

[b958e2add8] Nobuyoshi Nakada 2020-10-23 05:38:24 UTC

require "mathn" した時の数値系の処理の変更をする処理を削っています。実際にはずいぶん前からデフォルトでは無効でビルドされるようになってたと思いますが preprocessor の分岐ももう消しています。

[17e7a819f7] Hiroshi SHIBATA 2020-11-10 03:14:14 UTC

拡張ライブラリ json で Complex や Rational のために未定義だと require "complex" や require "rational" するコードが残ってたので削っています。そういえば昔は拡張ライブラリでしたね。

[9728cb730f] NAKAMURA Usaku 2020-11-10 05:45:15 UTC

拡張ライブラリ win32 の ext/win32/lib/win32/sspi.rb というライブラリで Win32API のかわりに fiddle の win32/importer を利用するように書き換えています。 Win32API は deprecated になっててかわりに fiddle を使えと警告している状態なので標準添付ライブラリ内でも利用を避けるようにしています。