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 の文字列化した表現を返すメソッドのようです。

ruby-trunk-changes 2024-04-09

今日は主に rubygems のテストで使う Rust のプロジェクトのパッケージ更新や GitHub Actions のメンテナンスなどがありました。

[00cbdb5a8b] Nobuyoshi Nakada 2024-04-08 12:26:11 UTC

GitHub Actions でコミットログに "Documentation" が含まれていた時にビルドを skip していたのを "Document" だけでも skip するようにしています。

[478b4ef9de] Alan Wu 2024-04-08 16:31:33 UTC

bootstraptest/runner.rb で String#match のかわりに String#[] を利用するように変更しています。1.8 というかなり古いバージョンとの互換性のためだったみたいです。

[186374279e] "dependabot[bot]" 2024-04-08 15:11:59 UTC

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

[c924322162] "dependabot[bot]" 2024-04-08 15:07:50 UTC

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

[3d73cd752f] Nobuyoshi Nakada 2024-04-05 09:53:15 UTC

bundled gems のバージョンの更新を監視して gems/bundled_gems や NEWS を更新するための GitHub Actions の workflow で bundler のテストの rake バージョンも更新するため spec/bundler/support/builders.rb を編集するようにしています。

[4dbd9c7fec] yui-knk 2024-04-08 23:13:19 UTC

Universal Parser のための構造体 rb_parser_config_t の関数ポインタのメンバー ary_new2 が未使用になっていたので削除しています。

ruby-trunk-changes 2024-04-08

今日は Enumerator が内部で作成する Fiber を non-blocking Fiber にする変更や標準添付ライブラリ tmpdir の例外メッセージの強化などがありました。

[5d1702e01a] Samuel Williams 2024-04-07 12:49:01 UTC

余分な変更が混ざってしまったため一度 revert した dfa0897de89251a631a67460b941cd24a14c9b55 の Enumerator 用の Fiber の作成時に non-blocking Fiber にする変更を再度入れています。 https://github.com/ruby/ruby/pull/10481

[4dd9e5cf74] Nobuyoshi Nakada 2024-04-06 08:45:58 UTC

オブジェクトの型をチェックして RUBY_ASSERT() で異常終了させるのをまとめたマクロ RUBY_ASSERT_BUILTIN_TYPE() を定義して使うようにリファクタリングしています。

[6f7e8e278f] yui-knk 2024-04-06 09:51:20 UTC

node.c の rb_node_init() にて NODE の struct RNode::flags に T_NODE をセットしていたのをやめています。NODE はもうオブジェクトの一種として扱われなくなったため?

[2e153fd037] "dependabot[bot]" 2024-04-08 02:59:44 UTC

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

[19f4b06b9d] Reznov 2024-04-08 03:51:32 UTC

整数オブジェクトの指定した基数での表記した時の文字数を計算する rb_fix_digits() のループで基数より小さい数になったらもうループを打ち切っていいので 1つループを回る回数を減らすちょっとした最適化(?)。

[76914d474d] Masataka Pocke Kuwabara 2024-04-08 03:41:29 UTC

rubygems の再定義する require での default gems/bundled gems の警告のための lib/bundled_gems.rb で呼び元の特定のために caller_locations を呼び出してバックトレースを検索する処理で nil が返ってきた時の対応を追加しています。 -r オプションで暗黙的に require した場合に発生しうるみたいです。

[76efed65bd] Hiroshi SHIBATA 2024-04-08 07:20:15 UTC

76914d474d93b7485973c3bca4fa43b59f5bd383 の require の警告の修正に対応したテストを追加しています。

[8217fbf4bd] Nobuyoshi Nakada 2024-04-08 09:29:13 UTC

標準添付ライブラリ tmpdir でディレクトリに誰でも書き込みができる権限がついていた時の例外メッセージに問題になったパスを埋め込むようにしています。

[49b31c7680] Étienne Barrié 2024-04-08 10:41:55 UTC

struct RString 構造体のコメントのフラグの説明に chilled string 用のビットフラグ STR_CHILLED の項目を追記しています。 [ruby-core:116382] [Feature #20205]

ruby-trunk-changes 2024-04-07

今日はコマンドラインオプション --dump の引数の指定のしかたの拡張や拡張ライブラリ pty の不具合修正などがありました。

[9b5d4274a2] Nobuyoshi Nakada 2024-03-08 04:57:05 UTC

コマンドラインオプションの --dump の insns_without_opt や parsetree_with_comment のような他のオプションに suffix をつけたものを parsetree+with_comment のように "+" で連結するように変更? しています。 [ruby-core:117088] [Feature #20329]

[df8f1f78f0] Nobuyoshi Nakada 2024-03-18 14:22:30 UTC

9b5d4274a247567c583667f4c8442872d8765d39 の続き。コマンドラインオプション --dump の引数の + で繋げる suffix を別の --dump オプションで渡したりする指定方法も受付けるようにしているようです。 [ruby-core:117088] [Feature #20329]

[977672731f] yui-knk 2024-04-06 10:12:39 UTC

parse.y の WARN_SPACE_CHAR() マクロでの参照する引数名の間違いを修正。

[02f5e627a4] yui-knk 2024-04-06 10:05:53 UTC

parse.y の WARN_IVAL() というマクロが呼び元で INT2NUM() で変換したものを NUM2INT() で戻すよう引数を変換していたので両方削っています。

[0b4db711dd] yui-knk 2024-04-06 10:09:36 UTC

02f5e627a49c28beb421c869e4e1d4525d59d8ac で Universal Parser 用の構造体の関数ポインタのメンバー num2int が不要になったようなので削除しています。

[ad90fdd24c] Jeremy Evans 2024-04-05 02:32:30 UTC

添字つき代入メソッド #[]= にブロック引数を渡せなくしたために不要になった compile.c の処理を削除しています。

[7767db2379] yui-knk 2024-04-06 15:42:17 UTC

parse.y の RIPPER マクロでの preprocessor 分岐で case 文の when 節の重複警告関係の処理を除外するようにしていたのをやめています。また rb_parser_check_literal_when() という関数は check_literal_when() に解明して static 関数にしています。 ripper から呼ぶ必要がなくなったということかな。

[70a0dd4162] yui-knk 2024-04-07 00:46:11 UTC

7767db237935135e14cb0f9ca70aa3a8dea03faa で parse.y の WANR_IVAL() マクロが未使用になったので定義を削除しています。

[6bfabd076b] yui-knk 2024-04-07 00:56:47 UTC

internal/parse.h の存在しなくなった rb_parser_node_case_when_optimizable_literal() 関数の prototype 宣言を削除しています。

[eaa6e4b228] Nobuyoshi Nakada 2024-04-07 04:35:20 UTC

doc/pty/README.ja および doc/pty/README.expect.ja のマークアップを修正しています。

[dfa0897de8] Samuel Williams 2024-04-07 07:18:09 UTC

rb_fiber_new() で Fiber 作成時のデフォルトを non-blocking Fiber を作るように変更しています。コミットログによると Enumerator のためみたいで、確かにこの関数を呼ぶのは Enumerator の作成時だけみたいです。関数名からすると意外。 https://github.com/ruby/ruby/pull/10478
しかしなぜか 6bfabd076b99bd47ee10277b8de24aaa791be69b の internal/parse.h の変更がいっしょに巻き戻ってしまっているようです。

[b5b54c19f6] Nobuyoshi Nakada 2024-04-07 06:28:07 UTC

process.c の ERRMSG1()、ERRMSG2() といった format 文字列で整形する変数の数ごとに定義していたマクロを可変長引数を受け付けるマクロ定義を使って ERRMSG_FMT() として定義するようにリファクタリングしています。しかし使っているところの変更がないので ERRMSG1()/ERRMSG2() は未使用だったみたいです。

[ed4d03ea41] Nobuyoshi Nakada 2023-08-07 23:06:08 UTC

b5b54c19f65a42c9229eff5e978937222d46ca41 と同様に dln_find.c の dln_warning() マクロの定義に可変長引数を受付ける機能を利用するようにしています。

[bdb1fc1e5b] Samuel Williams 2024-04-07 07:57:15 UTC

non-blocking Fiber のテストのための Scheduler の実装で Fiber#resume でなく Fiber#transfer を利用するように変更しています。 https://github.com/ruby/ruby/pull/10479

[0620f006c2] Nobuyoshi Nakada 2023-08-07 23:06:18 UTC

ruby.c のスクリプトファイル名のパスのデリミタを DOSISH というマクロで分岐していたのをやめています。 Windows 以外の環境で DOSISH が定義される環境がないので実質使われないパスだったようです。

[0d93fd0f69] Nobuyoshi Nakada 2023-08-07 23:06:40 UTC

ruby.c の push_include() という関数を削除して呼び元の push_include_cygwin() に展開しています。

[b88e0d6653] Nobuyoshi Nakada 2023-08-08 02:29:50 UTC

0d93fd0f69cf6b8f60d76948b2e7d1144c1cd843 の続きのリファクタリングruby.c の push_include() という関数を唯一の呼び元の ruby_push_include() に展開しています。

[b473d304d4] Samuel Williams 2024-04-07 10:20:22 UTC

dfa0897de89251a631a67460b941cd24a14c9b55 で internal/parser.h の変更が意図せず revert されてしまったので全体をまとめて revert しています。元の変更もあらためて後で入れなおすということみたいです。 https://github.com/ruby/ruby/pull/10478 https://github.com/ruby/ruby/pull/10480

[c4dadfbd47] Nobuyoshi Nakada 2024-04-07 11:54:00 UTC

拡張ライブラリ pty で setpgrp(3) の呼び出し部分を SETGRP_VOID というマクロのチェックで分岐していたのを SETPGRP_VOID をチェックするように修正しています。

[cccffeff2f] Nobuyoshi Nakada 2024-04-07 12:16:26 UTC

拡張ライブラリ pty で setsid(3) がない環境で使われる関数で変数の宣言が足りてなくてビルドできなかったのを修正しています。

ruby-trunk-changes 2024-04-06

今日は主に parser の不要な処理削除や標準添付ライブラリ reline の不具合修正などがありました。

[dbe8886f4d] Peter Zhu 2024-03-21 18:24:06 UTC

deprecated にしていた rb_gc_force_recycle() という C API を削除しています。

[f87e60f1f4] Joshua Broughton 2024-04-05 16:25:45 UTC

irb の例外のバックトレースから不要な部分を削る処理を前のほうに移動しています。よくわかってませんが rails のバックトレース除去の処理などとの衝突を避けるためみたいです。

[46ebc48e62] Peter Zhu 2024-04-05 17:45:12 UTC

GC.add_stress_to_class の rdoc 用コメントに :nodoc: タグを追加してドキュメント生成を抑制しています。デバッグ用のビルド時のみ定義されるメソッドなのでとのこと。

[1f84e1099e] Peter Zhu 2024-04-05 17:46:47 UTC

46ebc48e62e80426da78cdec6d2fbcf267b0ddcf と同様のデバッグ用のメソッド GC.remove_stress_to_class の rdoc 用コメントに :nodoc: タグを追加してドキュメント生成を抑制しています。

[e50590a541] Peter Zhu 2024-04-05 20:13:57 UTC

Symbol#inspect の実装で戻り値が T_STRING 型オブジェクトになっていることをチェックする RUBY_ASSERT() を追加しています。

[37490474c4] Peter Zhu 2024-04-05 20:14:24 UTC

関数 rb_sym2str() でも同様に戻り値が T_STRING 型オブジェクトまたは 0 (Qfalse) になっていることをチェックする RUBY_ASSERT() を追加しています。なにかデバッグ中のようですね。

[a80e8ba1c4] Peter Zhu 2024-04-05 20:14:35 UTC

同様に symbol.c の set_id_entry() でデバッグのためと思われる引数のオブジェクトのタイプをチェックする RUBY_ASSERT() を追加しています。

[43dcf4d1a6] Peter Zhu 2024-04-05 20:14:45 UTC

symbol.c の get_id_serial_entry() でもデバッグのためか引数の enum id_entry_type の値に対応して期待した戻り値のオブジェクトタイプになっているかのチェックをする RUBY_ASSERT() を追加しています。

[c6c75f3399] git 2024-04-05 21:44:54 UTC

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

Universal Parser 用の構造体 rb_parser_config_t の不要になった関数ポインタのメンバー fixnum_p、symbol_p、ary_clear、undef_p を削除しています。

[f022a700bf] yui-knk 2024-04-06 00:39:45 UTC

ISeq へのコンパイル時の関数 rb_iseq_compile_node() で引数の T_IMEMO 型オブジェクトのサブタイプのチェックをしていたのをやめています。

[c2d02a6ac2] Mari Imaizumi 2024-04-06 09:24:47 UTC

標準添付ライブラリ reline のカーソル表示の制御処理で端末情報が terminfo のデータベースから得られない時に例外発生させないで処理をスキップさせるようにしているようです。 https://github.com/ruby/reline/issues/447 https://github.com/ruby/reline/issues/543 https://github.com/ruby/reline/pull/673

[b006919200] Nobuyoshi Nakada 2024-04-06 09:00:56 UTC

gc.c の objspace_each_pages() という関数は GC_CAN_COMPILE_COMPACTION マクロが定義されている時だけコンパイルするように preprocessor 分岐を追加しています。