ruby-trunk-changes 2024-01-07

今日は構文解析時の AST の構築の node 種類の追加や Hash リテラルのキーの処理の遅延などの parser まわりの変更や標準添付ライブラリ rdoc の修正などがありました。

[f6847e9456] Nobuyoshi Nakada 2024-01-06 10:08:10 UTC

標準添付ライブラリ rdoc のコマンドラインオプションの処理の RDoc::Options#parse で --locale オプションの設定を YAML ファイルにダンプする時に書き出さないようにしています。

[d1de2a34c1] Nobuyoshi Nakada 2024-01-06 10:23:26 UTC

f6847e94560a37c95748da79cdf8936b5f1dde10 に追随して標準添付ライブラリ rdoc の --locale オプションの扱いのテストを追加しています。

[3dac27897e] Stan Lo 2024-01-06 12:16:08 UTC

irb の gemspec ファイルで依存する reline のバージョンを 0.4.2 以上に更新しています。 https://github.com/ruby/irb/pull/834

[9b78ef7552] Nobuyoshi Nakada 2024-01-06 11:04:14 UTC

make rdoc でドキュメント生成時の対象ディレクトリの指定を $(srcdir) にしていたのを rdoc の起動するための wrapper として tool/rdoc-srcdir というスクリプトを追加してこれでソースディレクトリに移動してから rdoc 起動するようにしています。これにより .rdoc_options ファイルでの rdoc のオプション指定が常に有効になるようにしているようです。

[0831d960bf] Peter Zhu 2024-01-06 14:34:54 UTC

Float#round の rdoc 用コメントの typo 修正。

[e168dbdac5] Nobuyoshi Nakada 2024-01-06 15:43:56 UTC

doc/extension.rdoc および doc/extension.ja.rdoc の :stopdoc:/:startdoc: タグによる一時的なドキュメント化抑制を "--" と "++" という行によるマークアップ? に置き換えています。

[d96fe5e4f8] Peter Zhu 2024-01-06 16:43:57 UTC

Numeric#step の rdoc 用コメントのインデント修正のみ。

[4bdfc9070c] Stan Lo 2024-01-06 17:15:12 UTC

irb の exit コマンドによる終了処理で不要な引数やメソッドがあったのを削ったり互換性のため無名引数にしたりという整理をしています。 https://github.com/ruby/irb/pull/835

[54e8901f66] BurdetteLamar 2024-01-06 16:35:58 UTC

ENV の rdoc 用コメントの見出しのレベルを修正しています。

[7b615bfdf3] BurdetteLamar 2024-01-06 16:47:19 UTC

Float クラスの rdoc 用コメントの継承元の言及箇所に Enumerable の include について追記しています。って Float って Enumerable を include してたっけ!?

[4a44bf8c34] BurdetteLamar 2024-01-06 16:51:37 UTC

と思ったら 7b615bfdf3533256022331da5426f18c33b3ec65 の続きで Float クラスの rdoc 用コメントで include しているモジュールの言及での Enumerable を Comparable に修正しています。

[8cad6fc90a] BurdetteLamar 2024-01-06 16:57:52 UTC

Integer クラスの rdoc 用コメントでも継承元クラスのほかに include しているモジュールとして Comparable についての言及を追加しています。

[76afbda5b5] BurdetteLamar 2024-01-06 17:12:07 UTC

標準添付ライブラリ net/http の Net::HTTP クラスの rdoc 用コメントに Object を継承しているって追記しています。まあそうなんだけど、これいるのかな……。

AST の node の種別の NODE_LITERAL で表現していたリテラルのうち数値系のものに NODE_{INTEGER, FLOAT, RATIONAL, IMAGINARY} といった種類毎の専用の node を追加しています。 COMPLEX じゃないんだなと思ったけど 1+2i は全体でリテラルじゃなくって 2i だけがリテラルで Integer#+ メソッドが呼ばれるので IMAGINARY だけでいいんだな。

tool/rbs_skip_tests に skip する rbs のテストを追加しています。

[9d3dcb86d1] yui-knk 2024-01-02 05:23:13 UTC

1ade170a6cac402d362d90bbf12e566d6a4f9ba11b8d01136c3ff6c60325c7609d61e19ac42acd9f の追随で Hash の key がリテラルの時の処理の対象の node に NODE_LINE, NODE_FILE や数値リテラル用の NODE_INTEGER その他を追加しています。

[83c98ead4e] yui-knk 2024-01-02 07:17:47 UTC

Hash リテラルでキーに同じ値のリテラルが使われていた時に重複を除外して最後のものだけ残すという処理を parse.y で行なっていたのを AST の時点で削らず compile.c で ISeq へのコンパイルする時点で削るようにしています。

[2325b72cf3] Nobuyoshi Nakada 2024-01-07 10:44:14 UTC

標準添付ライブラリ rdoc で ruby スクリプトの解析時に private などの Module のメソッドが reciever なしで呼ばれてた時のコンテキスト(def で定義したメソッドの可視性の変更)が特異メソッド定義の文法の時にも影響しているように解釈していたのを修正しています。

[7fcc6f04ac] Nobuyoshi Nakada 2024-01-07 11:14:09 UTC

さらに標準添付ライブラリ rdoc で ruby スクリプトの class/module 文でネストしたスコープが導入された時にその外の private/protected などの影響をリセットして public な状態に戻して解釈するように修正しています。

Universal Parser 用の構造体 rb_parser_config_t から parse.y から削った処理のため未使用になった数値系オブジェクトの操作用の関数ポインタのメンバーを削除しています。なるほど数値リテラル用の node を導入した結果 parse.y から ruby 本体の API の依存が減らせたわけですね。