ruby-trunk-changes 2021-04-02

今日は irb に組み込みコマンド show_source を追加する変更や lambda ブロック内で作った非 lambda の Proc オブジェクトのブロック内での return の処理の変更などがありました。

[9513fcd5bc] Nobuyoshi Nakada 2021-04-01 13:54:42 UTC

gc.c の objspace_each_objects() の変数初期化子を追加。警告抑制のため。

[ccb0b7ab7d] Nobuyoshi Nakada 2021-04-01 14:22:05 UTC

標準添付ライブラリ irb の組み込みコマンドテストで RB::Irb.new を IRB.conf[:VERBOSE] の設定後に移動。並列テスト時にここで警告が出てた模様。

[8e636bd0de] git 2021-04-01 16:48:13 UTC

version.h の日付更新

[1ac68bba4e] Koichi Sasada 2021-04-01 10:06:10 UTC

irbIRB::Irb#run で SIGINT のシグナルハンドラを設定しているのをメソッドから抜ける前に元のシグナルハンドラに戻しておくようにしています。

[c080bb2284] Kenichi Kamiya 2021-04-01 16:16:58 UTC

Object#freeze の rdoc 用コメントで発生する例外の記述が RuntimeError のままだったので FrozenError に修正しています。

[ecfa8dcdba] Koichi Sasada 2021-04-01 17:28:00 UTC

Proc.new や Kernel#proc で作った(is_lambda が false の) Proc オブジェクトのブロック内で return をすると、ブロック(Proc)からではなくその作成元のメソッドからの return の意味になりますが、既にそのメソッドから抜けた後で呼ばれた時にエラーになります。ところが lambda で作った Proc オブジェクトのブロック内で Proc.new で作ったブロックの中での return は外側の lambda のブロックを抜ける意味になるのでメソッドと同様に lambda から内側の Proc オブジェクトが返された後にそれを呼ぶとエラーになるような気がするのに、同じメソッド内だとメソッドからの return として処理されていたという仕様を変更しています。ややこしい。 [ruby-core:99499] [Bug #17105]

[79af8ce6d7] Nobuyoshi Nakada 2021-04-01 12:09:32 UTC

irb の色付けに "__END__" トークンの対応を追加しています。

[43e0677c6d] Nobuyoshi Nakada 2021-04-02 00:55:15 UTC

File.dirname の実装でバッファをゼロクリアしていたのをかわりに skiproot() が返した最初のセパレータ("/" または "\")へのポインタで埋めておくようにしています。後で NULL だったら同じポインタで埋めるってことをしてたのでのかわりだと思いますが、これにより VC++ での警告抑制になるようです。

[9e336f73fb] Takashi Kokubun 2021-04-01 05:49:51 UTC

irb の組み込みコマンドに show_source というのを追加して引数に指定された定数、メソッド(Class#method_name の形式で指定)、特異メソッド(Class.eigen_method_name の形式)などのソースコードを取得して表示するようにしています。

[7e93917458] aycabta 2021-04-02 08:18:37 UTC

標準添付ライブラリ reline の Reline::LineEditor のカーソル移動時に @rest_height のリセットが漏れてたのを修正。 Ctrl-l で端末をクリアした時の挙動の修正みたいです。