今日は Float#ceil や Float#floor に極端に大きな桁数を渡した時の結果が不正になる不具合の修正などがありました。
[d485eb663c] Takashi Kokubun 2026-05-22 17:12:29 UTC
ZJIT の cfp 管理の軽量化のために導入した JITFrame を cfp->jit_return メンバーに埋め込んでいたのをマシンスタック上に配置してそのポインタを cfp->jit_return で保持するように変更しています。cfp のメンバーを更新するのは複数 Ractor 利用時に atomicity の確保が問題になりやすいので頻繁に書き換える情報をマシンスタック上に移動するという設計方針みたいです。 https://github.com/ruby/ruby/pull/16955
[101bd4f947] BurdetteLamar 2026-05-22 15:40:58 UTC
Pathname#executable? の rdoc 用コメントを追加しています。
[db0b534bb6] BurdetteLamar 2026-05-22 15:53:59 UTC
Pathname#executable_real? の rdoc 用コメントを追加しています。
[cda47fecf5] BurdetteLamar 2026-05-22 16:19:19 UTC
Pathname#exist? の rdoc 用コメントを追加しています。
[8e5cf5ceca] BurdetteLamar 2026-05-22 14:59:22 UTC
Pathname#empty? の rdoc 用コメントを追加しています。
[a6c4e98cbd] FletcherDares 2026-05-22 23:16:43 UTC
String#codepoints で ASCII-compatible な Encoding の文字列の場合に ASCII 範囲の文字の時に rb_enc_codepoint_len() の呼び出しを抑制する最適化。
[5855d61ee4] Takashi Kokubun 2026-05-23 00:08:49 UTC
VM 命令 newhash と toregexp の実装で C の関数を 2回呼んでたのを wrap した関数 1つにまとめて insn.def での定義では 1回の関数呼び出しだけ書くようにまとめています。 ZJIT からの C 関数呼び出しを 1回にして、その先はコンパイラにより inline 最適化されることを期待するという感じかな? https://github.com/ruby/ruby/pull/17092
[02ad18dc58] Nobuyoshi Nakada 2026-05-23 02:37:24 UTC
GitHub Actions の tarball パッケージのテストの Ubuntu 向け workflow で Pathname#each_child を使うかわりに Dir.each_child を使うようにしています。
[4f683a2820] Nobuyoshi Nakada 2026-05-23 02:38:25 UTC
GitHub Actions の tarball パッケージでのテスト実行の workflow で [DOC] というコミットログや pull request のタイトルがついていたり dependabot による更新の場合に実行除外するようにしています。
[4e8dbfdc1b] Nobuyoshi Nakada 2026-05-23 05:43:09 UTC
numeric.c でマジックナンバーが埋め込まれてたのを定数マクロ DBL_DIG を参照するようにしています。また Float#round についてのテストを test_numeric.rb から test_float.rb に移動しています。 http://bugs.ruby-lang.org/issues/14635
[97ec327efc] Nobuyoshi Nakada 2026-05-23 06:33:23 UTC
Float#round などの実装で桁数の指定が大きい時に使う rb_flo_round_by_rational() という関数で argc/argv で配列に詰めなおして渡す引数になってたのを分離済みの引数を渡すようにリファクタリングしています。その他桁数指定の判定を関数マクロに切り出すなどのリファクタリング。
[09dacb9c3d] Nobuyoshi Nakada 2026-05-23 07:07:56 UTC
Float#ceil や Float#floor が極端に大きな桁数の指定の時に正しい結果が得られていなかったので Rational を利用して丸めを行うようにしています。 09dacb9c3d61264f3eb3731e2c65feb869130228 のリファクタリングは #ceil と #floor でも f_round_n() を使いまわすように切り出すためだったんですね。 [ruby-core:125565] [Bug #22079]
[3d137cf5fd] Nobuyoshi Nakada 2024-04-14 04:44:58 UTC
process.c の rb_execarg_parent_end() 内の RB_GC_GUARD() が冗長だったので削除しています。