ruby-trunk-changes 2026-01-13

今日は主に正規表現エンジン Onigmo の更新や標準添付ライブラリ prism のバージョン更新などがありました。

[6484a71a4f] Nobuyoshi Nakada 2026-01-12 01:23:10 UTC

tool/sync_default_gems.rb の同期対象に default gems ではないですが正規表現エンジンの onigmo を追加しています。 regxxxx.{c,h} と include/ruby/onigmo.h および enc/ を同期しています。 enc/ って onigmo から来てるんだっけ? ということでここからしばらく onigmo 同期の変更が続きます。

[fb7f344b09] "K.Takata" 2019-01-29 09:59:50 UTC

onigmo の upstream からの同期。 不要コードの削除のようです。

[bbf9bf3fc5] "K.Takata" 2019-01-29 10:00:02 UTC

onigmo の upstream からの同期。不要コードの削除のようです。

[f9131412f8] "K.Takata" 2019-01-29 10:00:12 UTC

onigmo の upstream からの同期。早期 return することで不要な条件分岐を減らすリファクタリング?

[85a7171b41] "K.Takata" 2019-01-30 09:51:56 UTC

onigmo の upstream からの同期。 enc/ 配下で USE_CASE_MAP_API マクロの定義に対応しています。

[916fbf1063] "K.Takata" 2019-01-30 01:31:10 UTC

onigmo の upstream からの同期。ソースコードのヘッダコメントの Copyright 表示を更新しています。

[a097878ed4] "K.Takata" 2019-01-30 10:02:41 UTC

onigmo の upstream からの同期。不要なエラーコードの対応を #if 0 で preprocessor によるコメントアウトしています。

[ad150e9039] "K.Takata" 2019-01-30 10:47:54 UTC

onigmo の upstream からの同期。Onigmo のバージョン番号のマクロを更新してバージョンを 6.1.3 から 6.2.0 に更新しています。

[496e74d0cc] "K.Takata" 2019-01-31 10:04:02 UTC

onigmo の upstream からの同期。 onig_new() が異常終了することがあるという不具合の修正。 onig_reg_init() での regex_t のメンバーの初期化順序を調節してエラー時の早期 return 前に必須のメンバーは初期化しておくようにしています。

[f0b31a5898] "K.Takata" 2019-07-29 11:15:26 UTC

onigmo の upstream からの同期。エラー時のエラーメッセージの文字列バッファの設定が漏れていて? 異常終了する可能性があった不具合の修正。 https://github.com/k-takata/Onigmo/issues/132

[ac379278e8] "K.Takata" 2019-07-29 11:16:46 UTC

onigmo の upstream からの同期。正規表現の parse 順序の stack overflow 時にチェックして明示的にエラーを返す対応を追加。

[16086128cc] "K.Takata" 2019-07-30 14:15:05 UTC

onigmo の upstream からの同期。 int へのキャストで余分な空白が入っていたのを削っているだけですけど、コミットログによるとコンパイル時の警告抑制とのことで、これで警告になるのか。

[76b1d4a481] "K.Takata" 2019-08-01 16:03:11 UTC

onigmo の upstream からの同期。 USE_CAPTURE_HISTORY マクロを考慮して不要なエラーメッセージ対応を除外する preprocessor 分岐を追加。

[aaf47cca03] Nobuyoshi Nakada 2026-01-12 09:39:15 UTC

sprintf.c の rb_str_format() でフォーマット指示子 'c' の処理のリファクタリング。コミットログをみると 81c13349049a3674819842e87b14cf35b8755392 の onigmo の修正を受けての変更というふうに書かれてそうですがなにが変わったのかちょっとよくわからず。

[f34297604f] Nobuyoshi Nakada 2026-01-12 09:57:20 UTC

regenc.c で #ifdef RUBY で分岐して rb_raise() を呼んでるコードを削除しています。おそらくもう使ってない?

[a1ba9f5733] Earlopain 2026-01-12 13:36:13 UTC

標準添付ライブラリとしての prism の ruby バージョンごとの parser 定義を 1ファイルにまとめています。

[5cec11f45a] Max Bernstein 2026-01-11 21:25:13 UTC

ZJIT で Array#length を HIR を使って実装して直接実行コードを生成するようにインライン化しています。

[41d9eb784b] Max Bernstein 2026-01-12 16:49:13 UTC

ZJIT で Array#empty? も直接実行コードを生成するインライン化をしています。

[351616af8c] Randy Stauner 2026-01-09 21:32:28 UTC

ZJIT の Rust 実装のテストを追加しています。

[d81a11d4e6] Randy Stauner 2026-01-08 17:01:43 UTC

ZJIT でキーワード引数の順番にあわせたスタックの入れ替えをする時にその後の状態で脱最適化のためのスナップショットを取りなおすように修正しています。脱最適化した時にスタックの状態が正しく復旧できない場合があり不具合になっていたようです。

[ee1aa78bee] Earlopain 2026-01-12 13:21:42 UTC

prism の Prism::Translation::Ripper::Lexer の定義を独立したファイルに切り出しています。

[328655633b] Max Bernstein 2026-01-12 15:32:10 UTC

ZJIT で Integer#[] で引数が全て Fixnum の時に C の関数 rb_fix_aref() を直接呼び出す最適化。

[2daed3c022] Peter Zhu 2026-01-10 02:22:08 UTC

GC の mmtk 実装で slot の解放時に一時的にデバッグ用の memset(3) によるメモリクリアを追加しています。

[7c91db9ea0] Randy Stauner 2026-01-12 23:28:06 UTC

ZJIT の HIR 命令 SendWithoutBlockDirect でメソッド呼び出しする時の引数サイズの制限チェックを追加しています。 https://github.com/ruby/ruby/pull/15854

[09cd13114a] Takashi Kokubun 2026-01-13 00:55:40 UTC

tool/redmine-backporter.rb で backport 対象のコミットを探す対象のブランチを master から origin/master に変更しています。

[5de4cc5608] Chris Hasiński 2026-01-11 13:12:07 UTC

正規表現のマッチ処理で一部のエンコーディングで大文字小文字に関する処理が複雑な文字(s や k)の最適化処理を修正した 981ee02c7c664f19b983662d618d5e6bd87d1739 の影響で、かえって普通の s や k ではじまる正規表現のマッチが遅くなってしまっていたという不具合を修正しています。 [Bug #21824]

[910fcfad14] Nobuyoshi Nakada 2026-01-13 01:34:38 UTC

tool/mk_builtin_loader.rb の ruby 実装の組み込みメソッド用の .rb を処理するための Primitive.cexpr を展開する処理でローカル変数の参照があった場合に位置情報の行番号がずれる場合があったのを修正しています。

[ead107f0d7] Takashi Kokubun 2026-01-13 01:29:29 UTC

標準添付ライブラリ prism のバージョンを 1.8.0 に更新しています。

[9fb9bfab60] git 2026-01-13 01:53:37 UTC

NEWS の default gems のバージョンリストに prism のバージョンを追記しています。

[60cf8598b2] 卜部昌平 2026-01-13 02:50:01 UTC

error.c および include/ruby/internal/core/rtypeddata.h で rb_typeddata_xxx() といった関数を利用していたのを rbimpl_typeddata_is_kind_of_inline() などの internal 用の関数を使うように修正しています。

[b7dbdfe23a] eileencodes 2025-12-16 18:28:06 UTC

rubygems の Gem::AtomicFileWriter で一時ファイルに書き出してから rename する処理を一時ファイル作成を標準添付ライブラリ tempfile に依存していたのをやめて独自に SecureRandom を使って乱数からファイル名を生成する処理を書くようにしています。 securerandom に依存するのはいいのか?

[b722d37f21] Edouard CHIN 2026-01-12 14:09:36 UTC

rubygems の gem install 時の拡張ライブラリビルドで並列 make 実行する時の -j に指定する並列度を Etc.nprocessors で得る時に require "etc" が LoadError になった時の fallback を追加しています。