ruby-trunk-changes 2021-10-08

今日は ISeq をバイナリフォーマットにダンプする時の Proc オブジェクトの扱いの不具合修正や reline のダイアログ表示の修正などがありました。

[896626fa02] Jeremy Evans 2021-10-06 15:55:29 UTC

Binding#irb から Kernel#exit を呼び出した時に例外が発生してプロセスが終了しなくなっていた不具合を修正しています。 [ruby-core:105512] [Bug #18234]

[8057129da6] Nobuyoshi Nakada 2021-10-07 15:10:32 UTC

parse.y で代入文の右辺値に対して value_expr() を呼んでいたところを削っています。mrhs および mrhs_arg というノードは常に value なので冗長なチェックだったとのこと。

[cb5a3b198e] git 2021-10-07 15:15:42 UTC

version.h の日付更新

[217df51f0e] Aaron Patterson 2021-10-06 20:55:02 UTC

RubyVM::InstructionSequence#to_binary で ISeq をバイナリフォーマットにダンプする時に Ractor.make_shareable で複製した Proc オブジェクトの外部の変数の参照が保存できていなかったのを修正しています。これスコープ外の変数参照も機能するんだ。すごいな。 [ruby-core:105504] [Bug #18232]

[a2f55679f0] aycabta 2021-10-05 15:09:03 UTC

標準添付ライブラリ reline の定数名 Reline::LineEditor::DIALOG_HEIGHT を DIALOG_DEFAULT_HEIGHT に改名。

[374b15a84a] aycabta 2021-10-05 17:56:14 UTC

標準添付ライブラリ reline で端末幅が狭くてダイアログ表示幅の計算結果が負になった時の対応を追加。

[36bf378363] aycabta 2021-10-05 18:25:53 UTC

標準添付ライブラリ reline の yamatanooroti.gem を使ったテストに非常に狭い端末を使った時のテストケースを追加しています。

[5c02df8296] aycabta 2021-10-07 18:43:21 UTC

irb の補完ダイアログでの rdoc ドキュメント表示の幅が足りない時の対応を追加しています。あんまり狭すぎると表示をあきらめるみたいですね。

[374efa8e30] aycabta 2021-10-08 01:21:55 UTC

irb の補完ダイアログでのドキュメント表示の位置の計算で変数名を改名するリファクタリング

[576eccf76d] aycabta 2021-10-08 01:24:55 UTC

irb の補完ダイアログでのドキュメント表示の端末サイズが小さい時の幅計算の再修正。

[1507cb084c] aycabta 2021-10-08 01:26:23 UTC

同じく irb のドキュメント表示ダイアログの幅計算で Integer#negative? を使ってたところを <=0 にして 0 の時の分岐を修正しています。

[1251edd1db] aycabta 2021-10-08 01:28:44 UTC

irb のテストに yamatanooroti.gem を使って端末サイズが小さい時のドキュメントダイアログ表示についてのテストケースを追加しています。

[eb4682b3c6] Jeremy Evans 2021-10-06 17:38:21 UTC

標準添付ライブラリ reline のダイアログ表示のメソッドで Encoding.default_external が UTF-8 でなかった時にはダイアログ表示しないようにしています。ダイアログのスクロールバーに使う記号文字が US-ASCII に変換する時にエラーになるので default_external が UTF-8 じゃないとちゃんと表示できないため。

[55d7f63bde] Jeremy Evans 2021-10-06 19:56:31 UTC

eb4682b3c6dd703b073614fa10dec9f968e98df3 の default_external が UTF-8 じゃない時に reline のダイアログ表示をあきらめるのは revert して、かわりにダイアログのスクロールバー表示に使う記号文字を空にしてスクロールバー表示だけあきらめるように変更しています。

[d0268c5ec2] Nobuyoshi Nakada 2021-10-07 11:11:48 UTC

Proc オブジェクトのブロックから参照している外のスコープの変数を探す collect_outer_variable_names() や env_copy() で変数名を文字列で持ちまわっていたのを、結局あとで rb_str_intern() してるので ID2SYM() で Symbol にして格納するように変更しています。

[78ff9b719c] Nobuyoshi Nakada 2021-10-08 05:08:03 UTC

String#end_with? に引数の文字列が空文字列の時のショートカットを追加しています。高速化のためかと思いましたがコミットログをみると文字列の途中も共有可能にして文字列オブジェクトの指すバッファが NUL 文字終端しない時に rb_enc_left_char_head() に問題のある引数を渡す可能性があったのを回避するためみたいです。

[076f2e9d3e] Nobuyoshi Nakada 2021-10-08 06:44:47 UTC

require_internal() の引数 realpath の宣言に volatile 修飾子を追加しています。 EC_EXEC_TAG() の前後で利用しているので警告抑制のためかな。

[ded5a66cb9] aycabta 2021-10-08 01:51:49 UTC

55d7f63bdeda993696c2700bd1a2a3b02b0b6d30 のさらに続きで標準添付ライブラリ reline で default_external が UTF-8 でない時にダイアログのスクロールバーの記号を空文字列にせず ASCII 文字による代替を利用するようにしています。