以下の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20240905より取得しました。


ruby-trunk-changes 2024-09-05

今日は主に Array や Hash のリテラルを freeze するような時にオブジェクトを dedup するための最適化命令の導入や、socket の名前解決の native thread 利用時に fork する時の不具合対応、Time#strftime の最適化などがありました。

[9a766777d4] tomoya ishida 2024-09-04 11:57:59 UTC

標準添付ライブラリ reline の Reline::LineEditor の render_differential メソッドから render というメソッドを切り出して再描画のための処理を独立させるリファクタリングhttps://github.com/ruby/reline/pull/731

[83334ebb3c] David Rodríguez 2024-09-02 18:21:00 UTC

bundler の git リポジトリを source にした時の gemspec ファイルの読み込みに bundle config の local 設定による影響を受けないようにしているようです。

[a3f589640f] Jean Boussier 2024-09-04 10:38:30 UTC

Time#strftime で文字列を組み立てる時のバッファサイズを拡張する時に倍々に増やすようにしています。ちまちま増やすと遅いのでパフォーマンス改善のためとのこと。ベンチマークも追加されています。

[ae84c017d6] Peter Zhu 2024-09-04 13:29:18 UTC

gc/default.c の構造体 rb_objspace_t の配下のネストした構造体の不要になったメンバーを削除しています。

[2e5a7d768b] Takuya Noguchi 2022-09-05 19:56:30 UTC

bundler の man page を更新しています。

[294dad22d7] Jean Boussier 2024-09-04 10:52:18 UTC

a3f589640fd443deea230c27efd6bdfc92f5817f からの続きでさらに Time#strftime の最適化として、Time#strftime の実装から使っている ruby_vsprintf0() で文字列の coderange を再度判定する処理が思いので、strftime の実装では一時的に ENC_CODERANGE_CLEAR() で coderange を RUBY_ENC_CODERANGE_UNKNOWN にリセットして、UNKNOWN の時は再判定処理をスキップするようにしています。うーん ruby_vsprintf0() の結果の coderange が設定されていることを前提にしているところがあったりはしないかな。

[32680f543c] ydah 2024-09-05 02:07:13 UTC

and/or や ||, && と "|" も? ちょっとどこまでが範囲かわかりませんでしたがこれらの演算子っぽいメソッドのトークンに対応する AST の NODE にも位置情報を持たせるようにしています。

[630bfd36f9] git 2024-09-05 07:01:45 UTC

gems/bundled_gems と NEWS の bundled gems のバージョンリストの net-imap のバージョンを 0.4.16 に更新しています。

[2e5680d304] Jun Aruga 2024-07-26 14:57:39 UTC

拡張ライブラリ openssl のテストで FIPS モードの時のために鍵長を長くする変更。

[63cbe3f6ac] Jean Boussier 2024-05-29 14:46:04 UTC

少し前に拡張ライブラリ socket で getnameinfo()/getaddrinfo() などを別の native thread で呼んで割り込み可能にした変更で、この thread が動いている時に fork(2) を呼び出すとその thread が止まってしまい、子プロセスで mutex が解放されないままになってしまうという問題があったようで、rb_thread_prevent_fork() という関数を導入してこの関数経由で読んだ関数はロックを取得してその処理が行なわれているあいだは fork(2) を呼ばないようにしています。 [ruby-core:118368] [Feature #20590]

[a99707cd9c] Étienne Barrié 2024-07-29 10:15:02 UTC

freeze された空の Array オブジェクトを保持しておいて peephole optimization 時に [].freeze のような空の配列を freeze するような命令の時に専用の opt_ary_freeze という命令を導入してこの命令でこの空の配列を常に返すように dedup する最適化と、 duparray で配列を複製してすぐ freeze メソッドを呼ぶ命令列があった時に duparray のオペランドの配列をそのまま返すよう opt_ary_freeze 命令にする最適化を加えています。そんなに効くのかなぁ。 [ruby-core:118891] [Feature #20684]

[bf9879791a] Étienne Barrié 2024-08-05 10:31:24 UTC

a99707cd9c6a1d53cf8ebc883dc210219bd67a28 と同様に Hash リテラルを freeze する時に dedup するための最適化命令 opt_hash_freeze を導入しています。 [ruby-core:118891] [Feature #20684]




以上の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20240905より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14