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