ruby-trunk-changes 2022-11-25

今日は beginless range の Range#include? の不具合修正や String#rstrip の不正なバイト列に対する処理の不具合修正、Enumerator::Lazy#take に 0 を渡した時の不具合修正などいろいろな変更がありました。

[d2fa67de81] Maxime Chevalier-Boisvert 2022-11-24 15:30:28 UTC

YJIT の実装内の InsnOpnd を YARVOpnd と改名して VM (YARV) のほうの命令のオペランドを表していることがより明確になるようにしています。 https://github.com/ruby/ruby/pull/6801

[656f25987c] Jean Boussier 2022-11-23 11:10:36 UTC

標準添付ライブラリ cgi のテストで "**" による Hash をキーワード引数に展開する記法を Hash#merge を利用するように変更しています。 コミットログは古い ruby のためとあるけど CGI::Cookie#initialize はキーワード引数ではなくて通常の引数と rest 引数を受け取るのでどっちかというとキーワード引数分離のため新しい(3.1 以降)の ruby での正常な動作のためという気がします。

[a81c89b7c8] Alan Wu 2022-11-24 19:58:41 UTC

configure 時に YJIT のための rustc の存在とバージョン要求のチェックをする時に target_arch の指定も含めてチェックするようにしています。rust のツールチェインと ruby のビルド時のターゲットとしているアーキテクチャが食い違っている時に明示的なエラーを出すため。 https://github.com/ruby/ruby/pull/6804 [ruby-dev:51204] [Bug #19146]

[07169fd824] Maxime Chevalier-Boisvert 2022-11-24 21:37:04 UTC

NEWS の YJIT の更新についてのセクションに最近の変更を追記しています。 https://github.com/ruby/ruby/pull/6803

[f5d73da806] Jeremy Evans 2022-08-24 19:32:46 UTC

rescue 節内の ISeq の命令の位置情報の行番号がずれていることがある不具合を修正しています。2000年の変更からとのことなのですごく long standing な不具合ですね。 [ruby-core:109658] [Bug #18974]

[1340195e79] Jeremy Evans 2022-10-05 18:50:43 UTC

pack.c の s, i, l, q などのバイト幅の設定のコードの switch 文の case をそれぞれ大文字のものとまとめて重複を減らすリファクタリング

[e5a0abc5de] Takashi Kokubun 2022-11-24 22:35:28 UTC

標準添付ライブラリ erb のテストで警告のために失敗するテストのために子プロセスを起動する時の -w オプションを削っています。make install せずにテスト実行すると rubygems の Kernel#require が出してしまう警告みたいです。

[1c0c1c8098] Takashi Kokubun 2022-11-24 22:47:11 UTC

標準添付ライブラリ erb の erb コマンドのオプション -S を削除しています。 $SAFE の廃止に伴ない deprecated として警告が出る状態で残されていたオプションです。

[d15de2f0d7] Takashi Kokubun 2022-11-24 22:55:04 UTC

NEWS に 1c0c1c8098bfb989ff5288b2e0a43b1bd0be2781 で削った erb の -S オプションについて追記しています。

[04a92a6764] Jeremy Evans 2022-08-19 20:19:03 UTC

文字列などを要素とする beginless range の Range#include? の判定で文字列用の考慮がされていなくて誤った判定になっていたのを修正しています。 [ruby-core:107547] [Bug #18580]

[c480f589c2] Takashi Kokubun 2022-11-24 23:21:56 UTC

標準添付ライブラリ erb に dc5d06e9b145f7d5f8c5f7c3757b43f2d68833fd で追加した escape 用の拡張ライブラリを erb.so から erb/escape.so という名前に変更(移動)しています。

[8ac4081aa8] Takashi Kokubun 2022-11-24 23:40:48 UTC

標準添付ライブラリ erb のファイル構成を変更して lib/erb.rb から lib/erb/compiler.rb, lib/erb/def_method.rb, lib/erb/util.rb などクラス/モジュール定義を分割しています。

[bcdfe12919] Takashi Kokubun 2022-11-24 23:49:10 UTC

標準添付ライブラリ erb の拡張ライブラリ版の html_escale の利用のため require "erb/escape" するのをモジュール文内からトップレベルに移動しています。

[1a47521c44] Nobuyoshi Nakada 2022-11-24 14:39:55 UTC

sprintf(3) を利用していたところを snprintf(3) を利用してバッファサイズを明示的に指定するようにしています。

[c6330cd32b] Nobuyoshi Nakada 2022-11-25 01:03:51 UTC

標準添付ライブラリ fileutils にディレクトリ内のファイルの symbolic link を作成する FileUtils#ln_sr を追加しています。また FileUtils#ln_s にキーワード引数 relative を追加して dest をディレクトリ名としてそれに src の basename を追加した名前で symbolic link を作ることができるようにしています。 [ruby-core:109241] [Feature #18925]

[571d21fd4a] Jeremy Evans 2022-08-24 17:31:17 UTC

String#rstrip と String#lstrip で Encoding に対して不正なバイト列を含む文字列があった時に #lstrip は ArgumentError を発生させるのに #rstrip は空白で囲まれていた場合に無視して削っていたのを修正して例外を発生させるようにしています。 また発生させる例外を Encoding::CompatibilityError に変更しています。けどこれ String#rstrip だけ例外クラスを変更していて #lstrip は ArgumentError を発生するままみたいですね。 [ruby-core:109264] [Bug #18931]

[67766cd55c] Koichi Sasada 2022-11-25 02:51:35 UTC

dubugger のための拡張ライブラリから利用するための C API rb_debug_inspector_frame_depth() と rb_debug_inspector_current_depth() を追加しています。 https://github.com/ruby/ruby/pull/6805

[e29d9e9fba] yui-knk 2022-11-25 02:34:03 UTC

NEWS に RubyVM::AbstractSyntaxTree.parse などの error_tolerant キーワード引数の利用サンプルを追記しています。

[45bad8c7b8] Nobuyoshi Nakada 2022-11-25 04:49:06 UTC

eval.c の rb_ec_cleanup() 内の変数 mode0、mode1 の定義に volatile 修飾子を追加しています。 EC_EXEC_TAG() で setjmp()/longjmp() で大域脱出してくる可能性があるブロックなので必要なのだと思います。

[67d0f4821f] Nobuyoshi Nakada 2022-11-25 05:20:46 UTC

同じく eval_error.c の rb_ec_error_print_detailed() で引数に volatile 修飾子をつけていたのは効果がないとのことで volatile 修飾子つきのローカル変数に引数を代入して利用するように変更しています。 [ruby-core:110873] [Bug #19145]

[ffc6c5d056] Nobuyoshi Nakada 2022-08-25 04:42:35 UTC

Enumerator::Lazy#take に 0 を渡した時にその後に chain したメソッドによっては誤って最初の要素が yield されてしまっていた不具合を修正しています。 Enumerator::Lazy#take の実装のコールバックに size が 0 でないかをチェックする処理を挿入しています。 [ruby-core:109636] [Bug #18971]

[64c8ed272f] Nobuyoshi Nakada 2022-08-25 04:47:47 UTC

ffc6c5d056e0f18a9bdfb9b1477d0192a6d37ea3 の追加修正で Enumerator::Lazy#take の実装のコールバックのひとつでサイズが 0 になることはなくなったので不要な分岐を削除しています。 [ruby-core:109636] [Bug #18971]

[58dc9c931b] Nobuyoshi Nakada 2022-11-25 03:01:52 UTC

rubygems のテストで gem install を実行するテストで個別のテストメソッドでやっていた rdoc の生成を抑制するための設定を setup に移動して全体で共有するようにしています。

[addb1cbbfd] Takashi Kokubun 2022-11-25 08:53:36 UTC

標準添付ライブラリ erb の拡張ライブラリで定義するメソッドを ERB::Util#html_escape を module_function として定義するようにしています。いずれにせよ後で lib/erb/util.rb で module_function で修飾されてましたが拡張ライブラリだけを直接 require しても module_function になるよう rb_define_module_function() で定義するように変更しています。

[4ab89d57bb] Nobuyoshi Nakada 2022-11-25 06:55:36 UTC

NEWS のマークアップの修正のためのインデント修正。

[fb7598fb3e] Nobuyoshi Nakada 2022-11-25 10:15:01 UTC

NEWS の不要なバッククオートを削除しています。クラス名などはクオートしなければクロスリファレンスでリンクになるのでそうするように。

[e9d6d2a579] Nobuyoshi Nakada 2022-11-25 10:42:47 UTC

RubyVM::AbstractSyntaxTree#tokens の rdoc 用コメントのマークアップの修正など。

[26baf4813e] Nobuyoshi Nakada 2022-11-25 06:42:59 UTC

NEWS に c6330cd32b7d02b4603080a2c53d64be9e05773c での FileUtils#ln_sr と FileUtiulr#ln_s への relative キーワード引数の追加について追記しています。 [ruby-core:109241] [Feature #18925]

[8a50db7dfa] Nobuyoshi Nakada 2022-11-25 10:53:35 UTC

NEWS のパターンマッチの新しい記法の Find pattern についての記述が Find モジュールへのリンクになってしまうのを防ぐためにクオートを追加しています。

[e15cd01149] StepSecurity Bot 2022-11-25 10:26:10 UTC

GitHub Actions の workflow で使う actions/checkout と actions/cache などのアクションのバージョン指定をタグ名でなく commit hash での指定に変更しています。 StepSecurity というサービス? の bot による変更みたいですね。