ruby-trunk-changes 2023-12-22

今日は主に rubygems と bundler の更新や M:N Thread の不具合修正、compaction 対応の修正、(nil..nil) の挙動の変更などがありました。

[e191bf42d2] Peter Zhu 2023-12-19 01:55:59 UTC

配列オブジェクトの部分配列を作る実装で compaction によるバッファの移動(slot に埋め込んでる場合)がありうるのに追随していなかったため異常終了する可能性があった不具合を修正しています。

[1710eb9367] John Hawthorn 2023-12-20 18:37:02 UTC

NEWS やドキュメントの rb_postponed_job_register_onc() を rb_postponed_job_register_once() と typo していたのを修正。

[1f0304218c] John Hawthorn 2023-12-20 23:29:03 UTC

M:N Thread を有効化すると postponed job の処理で異常終了する不具合を修正。 rb_vm_main_ractor_ec() という関数で参照すべき ractor を間違えていたみたいです。 [ruby-core:115458] [Bug #20016]

[e04197aba7] Victor Shepelev 2023-12-21 20:27:18 UTC

NoMethodError クラスの rdoc 用コメントのエラーメッセージの例を現在の実装に合わせて修正しています。 https://github.com/ruby/ruby/pull/9309

[fc549b2b3a] Victor Shepelev 2023-12-21 21:12:36 UTC

NEWS に Thread::Queue#freeze の仕様変更や Time.new の変更の追記とマークアップの修正など。 https://github.com/ruby/ruby/pull/9308

[82496f2b38] Hiroshi SHIBATA 2023-12-21 22:01:12 UTC

同梱している rubygems と bundler を upstream からそれぞれ 3.5.2 と 2.5.2 のものをマージしています。

[69bed94cea] git 2023-12-21 22:24:52 UTC

NEWS の default gems のバージョンリストの RubyGems と bundler のバージョンを更新しています。

[c73959cff4] Takashi Kokubun 2023-12-21 22:24:10 UTC

RJIT 用のコマンドラインオプション --rjit の pause/resume を disable/enable と改名して、対応する構造体メンバーやメソッド名も変更しています。

[78b27ce62a] Takashi Kokubun 2023-12-21 22:30:55 UTC

bootstraptest で RJIT が有効かどうかのチェックをするヘルパーメソッドを導入しています。

[ffa5f16273] John Hawthorn 2023-12-20 21:54:32 UTC

M:N Thread を有効にすると rb_profile_frames() が異常終了していたとのことで rb_current_execution_context() の NULL チェックを追加しています。 [ruby-core:115459] [Bug #20017]

[68bcca4c2b] Takashi Kokubun 2023-12-21 23:45:10 UTC

RJIT によるコンパイル時にローカル変数の型チェックの不具合があったようで修正されています。

[18a97affa3] Takashi Kokubun 2023-12-22 00:45:37 UTC

68bcca4c2bfa716b965554057b098cefcba00f66 の RJIT のコンパイル時のローカル変数の型チェックの再修正。

[3c18277629] Takashi Kokubun 2023-12-22 00:18:30 UTC

RJIT 関連のドキュメントの整理をしています。

[009968a700] Takashi Kokubun 2023-12-22 01:12:40 UTC

rjit.c の WITH_RJIT_ISOLATED() というマクロで引数の文の評価中に rb_vm_insns_count が変更されたら元に戻すようにしています。

[0c05551f58] Alan Wu 2023-12-22 01:34:49 UTC

ヘッダファイルの Doxygen 用コメントの typo 修正。

[9a3c49ee5d] Takashi Kokubun 2023-12-22 01:45:43 UTC

RJIT で VM 命令の opt_case_dispatch で case 文の when 節の値を VALUE の値に変換するのが漏れていたのを修正しています。

[d9e5564ccd] Yuta Saito 2023-12-21 05:42:39 UTC

Fiber 用の coroutine の実装の arm64 アーキテクチャ向けで PAC(Pointer Authentication Code) という拡張命令の利用をサポートするようにしています。セキュリティのための拡張ですかね。 [ruby-core:115547] [Bug #20029]

[35587150e2] Yuta Saito 2023-12-21 06:19:25 UTC

d9e5564ccd0e460b7685b786d21cf386b229e2a9 の続きで coroutine 実装の arm64 版で PAC のかわりに BTI という拡張機能? が可能なら利用するようにしています。 [ruby-core:115547] [Bug #20029]

[2d004decde] Yuta Saito 2023-12-21 06:21:37 UTC

d9e5564ccd0e460b7685b786d21cf386b229e2a9 および 35587150e21175b6a63cd02d406beff5c76f1149 の続きで coroutine 実装の arm64 版で PAC/BTI 利用時のための note section を追加しています。 [ruby-core:115547] [Bug #20029]

[fa0f7522c4] Yuta Saito 2023-12-21 23:52:20 UTC

Fiber 用の coroutine 実装の arm64 版で冗長な処理を削る最適化。 [ruby-core:115547] [Bug #20029]

[cae11dd857] Koichi Sasada 2023-12-22 03:15:44 UTC

gems/bundled_gems および NEWS の debug.gem のバージョンを 1.9.1 に更新しています。

[c18edc5b5d] John Hawthorn 2023-12-22 00:01:16 UTC

rb_iseq_free() で rb_iseq_t の開放時に YJIT 用のカウンタ rb_yjit_live_iseq_count をデクリメントしてるところで struct RBasic::flags をチェックして不要な時にデクリメントをスキップさせるようにしています。

[64c52cd1c2] Takashi Kokubun 2023-12-22 04:57:34 UTC

コマンドラインオプションに RJIT 用の --rjit=trace を追加して TracePoint によるトレースをオプションで有効化できるようにしています。効果としては --rjit=trace-exits と同じなのかな?

[4c6f07eeca] Takashi Kokubun 2023-12-22 05:10:19 UTC

64c52cd1c2df840a021dd952b42bddde09534b1b に追随して(?) rjit_c.rb を再生成しています。

[2e0277b133] Takashi Kokubun 2023-12-22 05:25:08 UTC

64c52cd1c2df840a021dd952b42bddde09534b1b では --rjit=trace は --rjit=trace-exits と同じフラグを使ってましたがあらためて専用のメンバーを割当てて TracePoint 対応を追加しています。

[f3c82df944] Takashi Kokubun 2023-12-22 05:59:32 UTC

lib/ruby_vm/rjit/insn_compiler.rb に magic comment frozen_string_literal: true を追加しています。

[e364436c5f] yui-knk 2023-12-22 00:32:32 UTC

NEWS に lrama の同梱と parse.y からソース生成に bison を使わなくなったことを追記しています。

[17e351057e] TSUYUSATO Kitsune 2023-12-22 06:03:18 UTC

NEWS に正規表現のメモ化による最適化の強化について追記しています。

[f263e44746] Takashi Kokubun 2023-12-22 06:57:32 UTC

RJIT のコンパイル用の ruby 実装のメソッドで不要な戻り値を返さないようにしています。

[e8639098ed] Kouhei Yanagita 2023-10-29 05:57:50 UTC

(nil..nil) という Range オブジェクトの Range#=== が TypeError を発生させることがあるのを修正。 Range#cover? の挙動と合わせたとのこと。パッチをみると range_string_cover_internal() という関数の定義と呼び出しをまるっと消していますね。なんか意図的だったような気もしなくもない実装ですが。 [ruby-core:115188] [Bug #19977]

[426f2334dd] Jun Aruga 2023-12-22 13:26:22 UTC

Travis-CI の設定でエラー時のメールでの通知の設定を少し変更しています。メールが届かなくなってたので設定方法を変えてみるとのこと。

[11c2aa035b] Nobuyoshi Nakada 2023-12-22 07:30:46 UTC

parse.y に arg_splat という新しい非終端ノードの定義を追加してリファクタリングしています。メソッドの引数の *args とか * (引数名の指定なし)とかの部分ですね。

[40e3f782dd] Nobuyoshi Nakada 2023-12-22 12:50:38 UTC

parse.y でメソッド引数で受けた引数をそのまま委譲するメソッド呼び出しでの引数名なしの *, **, & などの記法でそのメソッドに対応する引数が渡されているかのチェックを forwarding_arg_check() という関数に切り出して一般化しています。