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


ruby-trunk-changes 2024-10-17

今日は主に拡張ライブラリ json の高速化のための変更などがありました。

[c6c1e111b1] Peter Zhu 2024-10-15 14:26:58 UTC

GitHub Actions の compilers workflow 用のシェルスクリプトで共有ライブラリから GC 実装を読み込むための設定部分がもう不要になったようで削除しています。

[ebfe615a0c] Peter Zhu 2024-10-16 13:45:44 UTC

YJIT のテストで GC.compact を利用するものを GC.compact が未サポートの時に skip するようにしています。

[f549448e5e] BurdetteLamar 2024-10-15 19:35:03 UTC

Array#shuffle! の rdoc 用コメントの関連メソッドグループへのリンクの修正。

[3affd43c2d] BurdetteLamar 2024-10-15 19:32:12 UTC

Array#shuffle の rdoc 用コメントの手直し。

[9251971335] Kevin Newton 2024-10-16 18:22:26 UTC

sample/prism/ にサンプルを追加しています。

[5eca11ca5e] Kevin Newton 2024-10-15 14:06:50 UTC

RubyVM::InstructionSequence.of でメソッドの指定に Thread::Backtrace::Location を受付けるようにしています。

[90aa6aefc4] Peter Zhu 2024-10-15 19:46:23 UTC

prism で SyntaxError 発生時のメモリリークを修正しています。

[e9e66f74e3] Leo Arnold 2024-10-15 08:16:06 UTC

rubygems のコメント内のサンプルコードの typo 修正。

[9d5be3d9ed] David Rodríguez 2024-10-14 16:42:38 UTC

bundler の bundle check サブコマンドで正常終了時に #lock メソッドを呼ぶ対象を Bundler.definition の結果に変更しています。

[cff18256ca] David Rodríguez 2024-09-30 16:11:17 UTC

bundler の Bundler::Definition#sources メソッドを private から public にしています。

[def5fdf82a] David Rodríguez 2024-10-14 20:49:05 UTC

よくわかりませんが bundler で source が変更された gem の処理を変更してチェックを遅延しているようです。

[36b7ad3caa] David Rodríguez 2024-10-14 21:02:23 UTC

bundler の bundler check で source の変更時に? 誤った lock をしてしまう不具合を修正しているようです。

[6a49bbd734] Lars Kanis 2024-10-04 20:30:02 UTC

win32-registry のテストで使う Windows の Registry のキーを通し番号を使って生成して使われてないものを探して使うようにしています。

[85ce3b177c] Lars Kanis 2024-10-11 20:41:09 UTC

標準添付ライブラリ win32-registry で fiddle の JRuby/TruffleRuby 向け実装の非互換に対応するための修正。

[34d800ebcd] Nobuyoshi Nakada 2024-10-17 02:12:09 UTC

標準添付ライブラリ win32-registry の gemspec ファイルの spec.files から .mailmap を除外するようにしています。

[72b8fa9e03] Nobuyoshi Nakada 2024-10-17 03:06:41 UTC

標準添付ライブラリ win32-registry の gemspec ファイルの spec.files から rakelib/ の配下および Rakefile も除外するようにしています。

[817f2cc172] Hiroshi SHIBATA 2024-10-17 05:33:55 UTC

NEWS の新規 default gems についてのセクションを移動しています。

[d4a18d4a78] David Rodríguez 2024-09-03 16:03:16 UTC

bundler の Gemfile 内で "gemspec" による指定を 2回書けるようにしているようです。

[9da60a14bf] Nobuyoshi Nakada 2024-10-17 07:28:51 UTC

拡張ライブラリ etc が configure 時に --enable-load-relative でビルドされている ruby 向けにビルドされている時に Etc.sysconfdir が正しいパスを返せてなかったのを修正しています。

[681787d11f] Hiroshi SHIBATA 2024-10-17 07:33:02 UTC

libexec/syntax_suggest で ruby 本体内で使った時に require_relative の LoadError を捕捉して require しなおすようにしています。

[7962b4c342] Yusuke Endoh 2023-12-27 07:57:00 UTC

拡張ライブラリ json で配列の要素にアクセスするのに rb_ary_entry() のかわりに RARRAY_AREF() を利用するようにしています。

[3911189fba] Yusuke Endoh 2023-12-27 07:51:04 UTC

拡張ライブラリ json でオブジェクトのクラスの判定に CLASS_OF() を使ってたのを各種即値を判定する RB_XXX_P() と RB_BUILTIN_TYPE() による内部的なオブジェクトの型による分岐を利用するようにしています。高速化のためみたいです。

[fb84aa5501] Yusuke Endoh 2023-12-27 07:55:03 UTC

拡張ライブラリ json でオブジェクト(Hash)のキーの部分をエンコードする時に generate_json() を呼んでたのを、文字列に限定されるので generate_json_string() を呼ぶようにして不要な分岐を抑制するという最適化。

[88719fb300] Yusuke Endoh 2023-12-27 06:45:09 UTC

拡張ライブラリ json で配列の区切り文字が続く改行の有無と含めて専用の構造体メンバーで保持されていて fbuffer_append() という関数で文字列として追記されていたのを "," に決め打ちして fbuffer_append_char() で追加するようにしています。改行が不要な時のほうが多いのでそういう時に高速化するためみたいです。

[186e77209e] Yusuke Endoh 2023-12-27 06:48:17 UTC

88719fb300e0c6f5d8269224a3322e9871ad29b2 の拡張ライブラリ json の配列の区切り文字の追加の最適化と同様のことをオブジェクト(Hash)についても行なっています。

[64c24f6971] Yusuke Endoh 2023-12-27 06:57:02 UTC

186e77209e74c3f7643ae6396ad3dbba8a5c6977 のさらに続きで拡張ライブラリ json でオブジェクトのキーと値のあいだの ":" についてもスペースの有無によらず文字として追加するように最適化しています。

[0b4257efa3] Yusuke Endoh 2023-12-27 07:06:17 UTC

拡張ライブラリ json で RB_UNLIKELY() マクロを利用してよく使う分岐のほうをコンパイラにヒントを与えるようにしています。結構速くなるんですね。

[233f63c7fb] Yusuke Endoh 2023-12-27 07:32:47 UTC

拡張ライブラリ json で Encoding を得るのに rb_enc_get() のかわりに RB_ENCODING_GET() を利用するようにしています。ベンチマークではこれでかなり速くなるみたいですね。

[494d814637] Jean Boussier 2024-10-17 09:13:14 UTC

拡張ライブラリ jsonJSON.dump の ruby 実装部分の引数処理で省略された引数の考慮のために中間オブジェクトの配列を生成していたのをやめて、また不要な respond_to? でのチェックを省くように最適化しています。

[1f0b540332] Mads Ohm Larsen 2024-10-17 10:10:31 UTC

標準添付ライブラリ rdoc の生成する HTML ドキュメント用の CSS の修正。 https://github.com/ruby/rdoc/pull/1174

[fc11579c49] Stan Lo 2024-10-17 10:10:59 UTC

標準添付ライブラリ rdoc の生成する HTML ドキュメントのスタイルの修正。 https://github.com/ruby/rdoc/pull/1190

[5a18956430] Nobuyoshi Nakada 2024-10-17 10:34:31 UTC

emasc 用の misc/ruby-style.el でバックスラッシュの整形での扱い? の指定を追加しているようです。

[43e08133c3] Jean Boussier 2024-10-17 09:56:07 UTC

拡張ライブラリ json の内部的オブジェクトの一部メソッドの実装を ruby 化しています。高速化のため。

[a1c420c740] Jean Boussier 2024-10-17 10:21:57 UTC

拡張ライブラリ json の実装でグローバル変数にする必要のないクラスなどの変数を Init_generator() 内のローカル変数化しています。

[0e2ac46584] Jean Boussier 2024-10-17 10:36:13 UTC

拡張ライブラリ json43e08133c35351f0efd7bdfacf490b0ef38ecc22ruby 実装化した JSON::Ext::Generator::State の #configure メソッドでオプションの処理をキーごとに存在チェックして処理していたのを Hash#each で渡されたオプションのみ処理するようにしています。これも代表的な使いかたでの高速化のためだと思われます。




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

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