ruby-trunk-changes 2024-04-16

今日は主に GC の実装を環境変数で指定した共有ライブラリで上書きできるという新機能の追加などがありました。

[9b1e97b211] HASUMI Hitoshi 2024-03-28 01:26:42 UTC

struct parser_params の debug_lines や ISeq から VALUE の値を削るための変更のようです。

[07ff4aa19b] Jean Boussier 2024-04-15 11:44:48 UTC

bb1c3418d0fd3235c678ad68f7b45d32f8183a3f で修正していた String#@- のテストで assert のメッセージにデバッグ用に ObjectSpace.dump によるダンブを追加しています。

[43f4da3ebf] tomoya ishida 2024-04-15 13:15:52 UTC

標準添付ライブラリ reline の vi mode でのカーソル移動の不具合修正のようです。 https://github.com/ruby/reline/pull/679

[0a4e3f23e6] Mari Imaizumi 2024-04-15 13:31:33 UTC

標準添付ライブラリ reline の emacs モードでの未実装の key binding の削除。 https://github.com/ruby/reline/pull/680

[2eafed0f3b] Alan Wu 2024-04-15 15:59:45 UTC

YJIT の arm64 アーキテクチャ向けの命令生成で VM の最適化命令 opt_and, opt_or などで不要なレジスタ利用を抑制する最適化。 https://github.com/ruby/ruby/pull/10509

[d019b3baec] Jean Boussier 2024-04-15 11:03:26 UTC

YJIT による最適化が行なわれているようないくつかの組み込みメソッドは再定義が行なわれているのを検出したら performance カテゴリの警告を出力するようにしています。

[66bfcba587] Nobuyoshi Nakada 2024-04-15 15:46:25 UTC

configure で nm コマンドが --no-llvm-bc オプションを受付けるかチェックするためにコマンド実行する時に標準エラー出力もチェック対象にするようにしています。

[733d50f0a5] Peter Zhu 2024-04-10 19:56:43 UTC

darray.h から internal/gc.h の #include を削除していくつかメモリ管理用の関数を xcalloc()/xfree()/xrealloc() で代用するようにしています。

[1984f9aedc] Gannon McGibbon 2024-04-15 17:55:14 UTC

Kernel#autoload? の rdoc 用コメントに呼び元の cref の継承関係に影響されることを明記しています。

[f86fb1eda2] Aaron Patterson 2024-04-15 18:01:01 UTC

benchmark/ のオブジェクト生成のベンチマークにいろんな引数の initialize を定義したクラスのインスタンス生成のベンチマークを追加しています。

[a2ea4ec30c] Matt Valentine-House 2024-04-02 10:28:52 UTC

configure に --with-shared-gc というオプションを追加しています。CRuby 本体の GC の実装を共有ライブラリによって再定義できるようにする機構のためのフラグみたいです。このあとその実装が入るみたいです。 [ruby-core:117263] [Feature #20351]

[065710c0f5] Matt Valentine-House 2024-04-02 12:52:50 UTC

a2ea4ec30c409ebe8ae7952f092e0bd8c1912a17 で configure によるマクロ定義だけ追加していた GC の実装を共有ライブラリで上書きする実装の追加をしているようです。 rb_objspace_alloc() で ruby_external_gc_init() という関数を呼び出して直接環境変数 RUBY_GC_LIBRARY_PATH で指定された共有ライブラリを dlopen(3) で開いて Init_GC() という関数を差し替えるだけで、これだけでいいのかな。まああとはその先の実装が頑張るということなんでしょうけど内容に対してちょっと肩すかしという感じですね。あとこれほどの変更なら NEWS への追記は必要そう。あとチケットへの参照も欲しいところ。 [ruby-core:117263] [Feature #20351]

[f5d89267c4] Matt Valentine-House 2024-04-04 18:48:41 UTC

GitHub Actions の Ubuntu 環境の workflow に --with-shared-gc つきでビルドしてテストするジョブを追加しています。 [ruby-core:117263] [Feature #20351]

[ebaa87f626] yui-knk 2024-04-15 12:26:38 UTC

Universal Parser 用の構造体 rb_parser_config_t の未使用になった関数ポインタのメンバー ary_modify、default_rs、enc_associate_index、obj_write、gc_mark_and_move などを削除しています。

[0118f5425e] "dependabot[bot]" 2024-04-15 15:24:03 UTC

rubygems の Rust 製拡張ライブラリを含む gem のビルドのためのプロジェクトで rb-sys パッケージのバージョンを更新しています。

[fc8099aea9] "dependabot[bot]" 2024-04-15 15:39:29 UTC

rubygems の Rust 製拡張ライブラリを含む gem のビルドのためのプロジェクトで rb-sys パッケージのバージョンを更新しています。

[4fcf007e85] Kouhei Yanagita 2024-04-12 06:18:10 UTC

NEWS に Range#size が #each が TypeError を返すような開始/終了の要素の時に TypeError を返すようにした変更について追記しています。 [Misc #18984]

[c49742739e] "dependabot[bot]" 2024-04-16 02:21:39 UTC

GitHub Actions の workflows で利用している github/codeql-action アクションのバージョンを更新しています。

[f8f542bd9b] Peter Zhu 2024-02-22 20:35:59 UTC

拡張ライブラリ pathname の extconf.rb で rb_file_s_birthtime() という C API の存在チェックをしていたのがもうサポート対象のバージョンでは全て存在するのでチェックをやめています。

[53a8ad151b] Nobuyoshi Nakada 2024-04-16 06:09:56 UTC

defs/gmake.mk で make commit 時の事前処理の依存関係の名前の ":" をエスケープするようにしています。

[29110fe18d] Nobuyoshi Nakada 2024-04-16 07:13:19 UTC

Enumerator.product が返す Enumerator が引数の一部の Enumerator が size=0 であるため 0 であることが自明な場合はすぐに 0 を返すようにしています。 [ruby-core:117056] [Bug #20325]

[54d472d91f] Nobuyoshi Nakada 2021-01-24 09:17:28 UTC

rubygems のテストの setup メソッドで一時ディレクトリを設定する際に終端のディレクトリの名前を環境変数 GEM_TEST_TMPDIR の指定があったらその名前を利用するようにしています。よくわかりませんが symbolic link がらみでテスト失敗するケースがあったとのこと。

[639449fe8d] Mari Imaizumi 2024-04-16 11:58:46 UTC

標準添付ライブラリ reline の Reline::LineEditor にキーバインディングのモードを変更するためのメソッド #emacs_editing_mode と #vi_editing_mode を追加しています。 https://github.com/ruby/reline/pull/681

ruby-trunk-changes 2024-04-15

今日は主にブロックを呼び出さない(yield しない)メソッドをブロックを渡して呼び出すと警告を出力するようにする変更などがありました。

[8d5d6ec6e7] Nobuyoshi Nakada 2024-04-14 11:35:34 UTC

3368913be3838d152e42bde02a94219102b61f71 の拡張ライブラリ pty の extconf.rb の変更で if 文の条件部に or を書き忘れてた不具合を修正しています。

[339128b190] Mari Imaizumi 2024-04-14 17:33:48 UTC

標準添付ライブラリ reline の vi mode, emacs mode のキーバインディングの不要なもの(重複しているもの)を削除しているようです。 https://github.com/ruby/reline/pull/678

[515e52a0b1] yui-knk 2024-04-07 01:59:51 UTC

拡張ライブラリ ripper でも Hash リテラルのキーに重複したリテラルが使われていた時の警告をイベントフックとして検出できるようにしています。parse.y 内では警告の出力に専用のマクロを使うようにしないと ripper でサポートされないみたいですね。

[9180e33ca3] Koichi Sasada 2024-03-26 22:29:38 UTC

ブロックをまったく利用しないメソッドにブロックを渡して呼び出した時に初回のみ警告を出力するようにしています。また ruby 実装のメソッドでブロック利用の有無を知らせるために Primitive.attr! に :use_block という引数の対応を追加しています。ISeq へのコンパイル時にブロックの有無は判定しているので、実際に呼ぶかどうかはともかくブロックを yield するような命令が存在したらブロック受付けているという判定になるようです。def m(...); n(...); end みたいなのはどこで use_block フラグを立ててるんだろう? [ruby-core:91214] [Feature #15554]

[fc363944b4] Nobuyoshi Nakada 2024-04-15 05:05:43 UTC

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

[b6a10a1518] git 2024-04-15 05:07:51 UTC

NEWS の default gems のバージョンリストに optparse の項目を追加しています。

[145cced9bc] Koichi Sasada 2024-04-15 05:22:40 UTC

9180e33ca3a5886fec3f9e0a2f48072b55914e65 の使われないブロック渡しについての修正でかっこありの super() で誤って警告が出てたので修正しています。 [ruby-core:91214] [Feature #15554]

[9a57b04703] Koichi Sasada 2024-04-15 08:06:03 UTC

9180e33ca3a5886fec3f9e0a2f48072b55914e65 の修正の 145cced9bcb6a52fccfa0c669121bd07d3b3ff74 のさらに再修正。 super() や ZSUPER そのものにブロックを渡してるのを警告を抑制してたのはやっぱり勘違いだったので警告するようにしています。 [ruby-core:91214] [Feature #15554]

[bb1c3418d0] Jean Boussier 2024-04-15 07:04:51 UTC

String#@- メソッドのテストが 1b830740ba8371c4bcfdfc6eb2cb7e0ae81a84e0 の影響で失敗することがあったそうで、テストのほうを修正して String#@- をメソッドチェインするようにしています。これはなにが変わるんだろう。

ruby-trunk-changes 2024-04-14

今日は irb のコマンドを独自実装して追加できるようにする変更などがありました。

[c479492a67] Zack Deveau 2024-01-19 20:01:46 UTC

Array#sort! をブロックつきで呼び出してそのブロックで元の Array を変更した時に capacity の変更が必要なケースの対応が漏れていたのを修正しています。

[5970386a2e] yui-knk 2024-04-13 04:22:18 UTC

parse.y の struct parser_params::delayed::token の型を VALUE から rb_parser_string_t* に変更して VALUE 依存を減らしています。

[924b928e35] yui-knk 2024-04-13 14:06:03 UTC

Universal Parser 用構造体 rb_parser_config_t の関数ポインタのメンバー str_buf_new、str_buf_cat、enc_str_buf_cat、str_buf_append などを削除しています。

[38b8bdb8ea] yui-knk 2024-04-14 00:22:10 UTC

拡張ライブラリ ripper の未使用の関数の prototype 宣言 ripper_get_value() と ripper_get_id() を削除しています。

[76b10f2ee1] "Michael J. Giarlo" 2024-04-14 09:13:06 UTC

標準添付ライブラリ reline の補完時の選択カーソル移動の修正のようです。 https://github.com/ruby/reline/pull/675 https://github.com/ruby/reline/pull/677

[04ba96e619] Stan Lo 2024-04-14 11:01:38 UTC

irb の組み込みコマンドの実装を IRB::Command._register_with_aliases でクラスを登録することで追加できるような実装にしています。これでコマンドを追加する公式な API が提供されて自前のコマンドを定義できるようになったようです。なるほどこれが一連の変更の目的だったようですね。 https://github.com/ruby/irb/pull/886

[3368913be3] Nobuyoshi Nakada 2024-04-14 10:43:21 UTC

拡張ライブラリ pty のビルドで ptsname_r(3) の存在チェックをより詳しくしています。

ruby-trunk-changes 2024-04-13

今日は主に prism の更新と bundler の bundle add のオプション追加がありました。

[c4b5f3f142] David Marshall 2024-04-04 17:33:03 UTC

bundler の bundle add サブコマンドにワイルドカードの展開による gemspec の探索を指定する --glob オプションを追加しています。

[a64a42ae38] David Marshall 2024-04-05 13:53:13 UTC

c4b5f3f1422b1c83bc4c7e03d32218881c0b6945 で追加した bundler の bundle add サブコマンドのオプション --glob のヘルプメッセージを追加しています。またテストでワイルドカードのシェルによる展開を抑制するためシングルクオートを追加しています。

[5f2bcbb6d4] Kevin Newton 2024-04-12 14:29:39 UTC

コマンドラインオプションのテストの prism 向けオプションのテストで警告抑制。

[edec690e03] Peter Zhu 2024-04-11 18:30:30 UTC

Object#_object_id の即値オブジェクトの時の値をの範囲を変更して実装をシンプルにしています。

[9bab179ca3] Peter Zhu 2024-04-11 18:35:19 UTC

edec690e0331b5aa851b3a7c9872b2bf92f3cb21 の続きで gc.c の rb_find_object_id() で flonum とそれ以外の即値オブジェクトで分岐後の処理が同じなので分岐をシンプルにしています。

ruby-trunk-changes 2024-04-12

今日は主に def m(...) のように委譲専用の引数表記のメソッド内で無名ブロック引数を使ったメソッド呼び出しを SyntaxError にする変更などがありました。

[9183101aa7] Jean Boussier 2024-04-11 10:24:05 UTC

prism の更新。バッククオートによるコマンド実行のための文字列は freeze した状態で ISeq に埋め込むようにしています。"`" メソッドを再定義した時にスクリプトに書かれた文字列を破壊的変更できてしまうため。

[c2622b5253] Alan Wu 2024-04-11 14:37:56 UTC

YJIT の x86_64 アーキテクチャで論理演算のための命令の生成で両オペランドレジスタの時の最適化を行い、VM 命令の opt_and, opt_or などの最適化命令でこれが利用されるように中間表現の命令を少し変更しているようです。 https://github.com/ruby/ruby/pull/10498

[2df4638538] Nobuyoshi Nakada 2024-04-11 12:47:44 UTC

template/Makefile.in で拡張ライブラリの clean 処理のターゲット .bundle/*clean.sub たちの依存関係から ext/*.mk を消しています。

[ca81f5a5de] Nobuyoshi Nakada 2024-04-11 12:53:58 UTC

template/Makefile.in にターゲット .bundle/realclean を追加して bundled gems のインストール時の lock ファイルを削除させるようにしています。

[f2369de2a4] Peter Zhu 2024-04-11 16:08:03 UTC

gc.c の冗長なキャストの削除。

[c5e661b1d7] Cody Cutrer 2024-04-11 16:21:01 UTC

よくわかりませんが bundler の plugin インストール時のディレクトリ探索のルールの修正をしているようです。

[e36988450e] Nobuyoshi Nakada 2024-04-12 07:07:49 UTC

メソッド定義に委譲専用の引数を受け取る def m(...) の記法を使ったメソッドの時にそのメソッド内で別のメソッドに無名ブロック引数(foo(&))でブロック引数のみ委譲する書きかたが許容されていたのを他の種類の無名引数と同様 SyntaxError にするようにしています。 [ruby-core:117496] [Bug #20423]

[69823b97b5] Nobuyoshi Nakada 2024-04-12 08:02:46 UTC

prism の更新。 e36988450e9e9ccccb41c72135f1e57790920668 の続きでエラーメッセージを変更しています。 [ruby-core:117496] [Bug #20423]

[91c457e091] Nobuyoshi Nakada 2024-02-28 08:46:39 UTC

.mailmap に svn 時代のアカウント名を弊機していたのを削っています。

[7b8b936f4a] Satoshi Tagomori 2024-04-12 09:31:22 UTC

class_search_class_ancestor() のコメントの typo? を修正しています。

[f1d9e895b9] Stan Lo 2024-04-12 12:00:58 UTC

6a505d1b59cf326a8e004fc06e02f30222b17f3firb の組み込みコマンドの実装方針変更で IRB::Context#evaluate の呼び元でやってたコマンドかどうかによる分岐を IRB::Context#evaluate 内に移動するリファクタリングhttps://github.com/ruby/irb/pull/920

ruby-trunk-changes 2024-04-11

今日は主に irb の組み込みコマンドの実装方法の変更などがありました。

[9f6deaa688] Kouhei Yanagita 2023-10-13 06:02:23 UTC

Range オブジェクトの要素の型が整数や文字列のような数え上げられるものではなくて each メソッドに TypeError を発生させる時にも Range#size が例外を発生させていなかったので同様に TypeError を発生させるようにしています。両端が Float の時にこれまでは整数として数えあげた時のサイズを返していたのに例外になるので注意が必要です。 [ruby-core:109773] [Misc #18984]

[6a505d1b59] tomoya ishida 2024-04-10 16:52:47 UTC

irb の組み込みコマンドの実行方法を大きく変更していて、メソッドとして定義して通常の文と同様に eval していたのをコマンドとして parse したら各コマンド用 Class の execute メソッドを明示的に呼ぶという少しかたい実装方針に変更しています。組み込みコマンドの時に独自の文法を使えるようにするなどの拡張の伏線かな? https://github.com/ruby/irb/pull/824

[d60b2caa95] Nobuyoshi Nakada 2024-04-10 17:10:20 UTC

bundler のテストに使う gem の turbo_tests のバージョンを 2.1.0 に固定しています。2.1.1 で依存関係の問題でテスト失敗していたようです。

[d75dc39880] Stan Lo 2024-04-10 17:33:40 UTC

6a505d1b59cf326a8e004fc06e02f30222b17f3firb の組み込みコマンドの実装方針変更で debug.gem 統合用の各コマンドの execute メソッド内で個別に rstrip を呼んでたのを親クラスで呼ぶように統合しています。 https://github.com/ruby/irb/pull/918

[f389a211b5] Peter Zhu 2024-04-10 20:32:49 UTC

gc.c のインデントの修正のみ。

[38e3819be6] Stan Lo 2024-04-10 23:16:27 UTC

6a505d1b59cf326a8e004fc06e02f30222b17f3firb の組み込みコマンドの実装方針変更で debug.gem との連係のコマンド実行時に環境変数 RUBY_DEBUG_TEST_UI=terminal が設定されていた時に標準出力への表示を追加しています。ちょっとよくわからないですが multi Thread 対応の関係で出力するタイミングが取れないテスト用のメッセージをここで出すようにしているみたいです。 https://github.com/ruby/irb/pull/919

[39be11a17a] yui-knk 2024-04-10 01:28:51 UTC

parse.y のかっこのないメソッド呼び出しの parse 時の ripper 用のコードで引数の指定を間違えていたため異常終了する可能性があったのを修正しています。

parse.y の AREF() マクロの定義を削除しています。

[87ad5ca3ca] yui-knk 2024-04-10 09:30:20 UTC

Universal Parser のための構造体 rb_parser_config_t のメンバー qundef を削除しています。 39be11a17a221387b7eedd455114d6e87088ac60 の修正により未使用になったようです。

[5d9fd674c9] Koichi Sasada 2024-04-10 05:57:14 UTC

inline 関数 rb_gc_force_recycle() を空の関数として復活させて、RBIMPL_ATTR_DEPRECATED() を使って deprecated 警告を出すようにしています。

[207788466e] Nobuyoshi Nakada 2024-04-10 13:44:33 UTC

RubyVM::AbstractSyntaxTree.parse がブロックパラメーターのうち ";" で区切られた block local variables に対して警告を出力してしまっていたのを修正しています。 [ruby-core:117477] [Bug #20417]

[e9fd34750f] Vivek Gupta 2024-03-26 07:35:02 UTC

NEWS の英文法の修正。

[501a32c630] yui-knk 2024-04-11 03:02:11 UTC

universal_parser.c の重複していた st_init_table_with_size マクロ定義を削除しています。

[ed303cd56c] Takashi Kokubun 2024-04-11 06:53:53 UTC

YJIT の Rust 実装のコメント内の typo 修正。

[1b830740ba] Jean Boussier 2024-04-10 08:50:18 UTC

ruby_parser.c の rb_str_new_parser_string() という関数で文字列オブジェクトを作る時に rb_enc_str_new() で新規オブジェクトを作るのではなく rb_enc_interned_str() で最初から fstring を返すようにして、作ったオブジェクトを呼び元ですぐ rb_fstring() に渡していたのをやめています。freeze されてない文字列が必要だった場合のためにかわりに rb_str_new_mutable_parser_string() という関数を追加しています。不要な中間オブジェクトの確保を減らすためと思われます。

[e7f8db9079] Nobuyoshi Nakada 2024-04-08 03:36:06 UTC

拡張ライブラリ pty で端末名を得るのにバッファを引数で指定する ptsname_r(3) というライブラリ関数が使えたら ptsname(3) のかわりに利用するようにし、存在しなければ代替実装を定義してこれを使うようにしています。

[b2f8de3d9d] Naoto Ono 2024-04-08 04:12:42 UTC

GitHub Actions の Ubuntu 環境の workflow で os の指定のデフォルト値に ubuntu-22.04 の指定を追加しています。

ruby-trunk-changes 2024-04-10

今日は標準添付ライブラリ reline のバージョン更新、ipaddr の IPAddr#wildcard_mask メソッドの新規追加などがありました。

[6846b98576] Mari Imaizumi 2024-04-09 13:47:19 UTC

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

[88355da673] git 2024-04-09 13:48:19 UTC

NEWS の default gems のバージョンリストの reline のバージョンも更新しています。

[0bc71828b5] Nobuyoshi Nakada 2024-04-08 02:55:26 UTC

拡張ライブラリ pty の関数 chfunc() の内容をいくつかの関数に分解するリファクタリング

[13f04e5beb] Nobuyoshi Nakada 2024-04-10 09:03:12 UTC

拡張ライブラリ io/console のテストで子プロセスのコマンドにわたす -I オプションを定数に切り出して daemon 状態(端末に紐付かない状態)で実行するコマンドのテストの時にもそれを渡すようにしています。テスト対象のライブラリじゃないものをロードしてテストしてる状態だったみたいです。

[f9f25d0ed0] Taketo Takashima 2022-08-08 15:50:44 UTC

標準添付ライブラリ ipaddr に IPAddr#wildcard_mask というメソッドを新規追加しています。アドレスファミリーに応じた mask の文字列化した表現を返すメソッドのようです。