ruby-trunk-changes 2019-05-30

今日も irb や reline の修正およびそのシンタックスハイライトのための parser の変更が主でした。

[1da5c73932] Nobuyoshi Nakada 2019-05-29 21:42:58 +0900

parse.y で "@" ではじまるトークンのスキャン後の lexer のステートを元の状態にあわせて正しく戻すようにしているようです。

[12644e8b02] Nobuyoshi Nakada 2019-05-29 21:59:34 +0900

irb で文字列埋め込みの式のなかで Enumerable#map 呼び出しとさらに文字列埋め込みを含んでたのを一旦変数に受けてから埋め込むようにしています。ruby-mode.el のシンタックスハイライトで正しく処理できないためとのこと。

[5b64d7ac6e] Nobuyoshi Nakada 2019-05-29 22:09:54 +0900

irbシンタックスハイライトで SyntaxError の位置の表示をより正確にしているようです。

[814eaa25e2] Takashi Kokubun 2019-05-30 04:12:11 +0900

mjit_worker.c の print_jit_result() を削除して iseq から必要な情報を alloca(3) でコピーしてから verbose() を呼ぶようにしています。 GC.compact で参照してる ISeq のオブジェクトが移動されるのにたいする対策のようです。

[5867e51e83] git 2019-05-30 04:13:37 +0900

version.h の日付更新。

[d2ba80b5df] Jeremy Evans 2019-05-29 18:03:21 -0700

05bc14d81a1d7f6af826a92371aeff0c3fb2a67e の BASERUBY が 1.8 で動くようにする変更を revert しています。

[f0ded36693] Jeremy Evans 2019-05-29 18:40:03 -0700

tool/vcs.rb で Regexp#match? を利用していたのを Regexp#match を使うように書き換えています。 BASERUBY 1.9 でも動くようにするため。

[cb520e7623] aycabta 2019-05-30 12:29:38 +0900

Reline::LineEditor の行の折り返し表示時の不具合修正。

[4a31c1e45d] Nobuyoshi Nakada 2019-05-30 12:38:50 +0900

parse.y でヒアドキュメントの終端がない状態で parse しても途中までの状態を返すようにしています。これも irbシンタックスハイライト用でしょうね。

[1cf9f79342] aycabta 2019-05-30 14:04:28 +0900

Reline::LineEditor の multi line editing での再描画時の不具合修正。

[eae953ba9f] aycabta 2019-05-30 14:19:58 +0900

1cf9f79342c517e3f12ba614ad874b1d619af5bc のさらに再修正。

[90014dddec] aycabta 2019-05-30 15:04:37 +0900

Reline::LineEditor の行折り返し時の不具合修正。

[5a229b0a88] aycabta 2019-05-30 15:19:30 +0900

Reline::LineEditor の行折り返しによる影響反映の再修正。

[55c34b994b] aycabta 2019-05-30 15:34:41 +0900

irb の行継続の判定でヒアドキュメントのマーカーに絡んだ判定を修正しています。

[70e87d9660] Takashi Kokubun 2019-05-30 15:50:21 +0900

irb の色付けの有無の判定に IRB.conf[:MAIN_CONTEXT].use_colorize? を使ってたところで初期化前に走る可能性があるので IRB.conf[:USE_COLORIZE] を直接参照するように修正しています。

[e15de86583] Koichi Sasada 2019-05-30 16:52:42 +0900

rb_objspace_t::flags に during_compacting というフラグを追加して、GC.compact の実行中のみ mark 時の pin の bitmap の更新を行うようにしています。GC.compact は明示的に呼ばないと発生しないので(今のところ?)、通常時に不要な処理をしないようにしています。

[dd63d7da61] Koichi Sasada 2019-05-30 09:10:17 +0100

gc.c の構造体 struct heap_page の中でビットマップを保持する pinned_bits メンバーを最後に移動しています。あんまり使わないからとのことですが、これ memory access の locality の改善でキャッシュ効率が良くなるとかそういうことでしょうか。

[5fc9f0008f] Koichi Sasada 2019-05-30 17:12:26 +0900

dd63d7da61c472809c5e6a1dba81b7dea5aa1c1b に追随して rgengc_mark_and_rememberset_clear() でのビットマップのクリアの順序も変更しています。

[106843d839] git 2019-05-30 17:12:53 +0900

5fc9f0008f824936c667970593df1b6663f0ae24 のインデントのタブを空白に展開。

[fcca39fa73] aycabta 2019-05-30 18:21:09 +0900

Reline::LineEditor の改行時の挙動修正。

[ecd0f1d966] aycabta 2019-05-30 18:29:26 +0900

Reline::LineEditor でクオートの対応する閉じ記号を検出するところで正規表現の否定後読みと String#start_with? を使うようにしています。……けどこれって \A にせよ start_with? にせよ先頭であることを強制してるから否定後読みでエスケープされてないことを確認する必要はないんじゃないですかね?

[74a0e3ec23] aycabta 2019-05-30 20:06:59 +0900

さっきの ecd0f1d966209742382e5bd4591bafc88152a697 のすぐ後の今度はエスケープされたクオート文字の時の処理も同様に String#start_with? を使うように変更しています。