ruby-trunk-changes 2019-06-05

今日はいろいろあったんですが最終的には FrozenError のメッセージに埋め込むために inspect を呼ぶ時の再帰チェックの追加と、テストの変更やリファクタリングが残りました。

[39eae6bf89] Nobuyoshi Nakada 2019-06-04 12:27:46 UTC

tool/vcs.rb の VCS::GIT.get_revisions で日付を Commit Date から取得するように変更しています。 git の commit には Author Date と Commit Date があるのでどっちにするか迷いますよね。

[0872ea5330] Yusuke Endoh 2019-06-04 14:11:38 UTC

parse.y でブロックパラメーターの省略された rest (ブロックパラメーターの最後に余分なカンマがある状態)を示すために (ID)1 というマジックナンバーが利用されてましたが、NODE_SPECIAL_EXCESSED_COMMA というマクロ定数として定義して比較時にもこれを利用するようにしています。

[0b0c6cb7e4] Yusuke Endoh 2019-06-04 14:15:14 UTC

0872ea53303499caf3584e40f2a5438e86eb4fed と同様に parse.y で (const NODE*)-1 を必須キーワード引数の場合のデフォルト値の NODE として使っていたところに定数マクロとして元々 NODE_SPECIAL_REQUIRED_KEYWORD が定義されていたので、残ってた直に書いてたところもこれを利用するように修正しています。

[b31e1b4a7c] git 2019-06-04 14:17:38 UTC

0b0c6cb7e4fa17247cb214c4eaf924617a55e9a7 のインデントのタブを空白に展開。

[8d81e59aa7] Takashi Kokubun 2019-06-04 10:58:39 UTC

標準添付ライブラリ cgiCGI.escapeHTML でエスケープする文字ごとの変換を switch 文で分岐してたのを変換テーブルを用意してテーブルの参照に変更しています。また文字列バッファを都度文字列オブジェクトを作るのをやめて ALLOCA_N() で最初から全文字がエスケープされた場合を考慮して 6倍のサイズのバッファを用意しておくようにしています。 6倍確保かー。 https://github.com/ruby/ruby/pull/2226

[804a7907a8] git 2019-06-05 01:13:25 UTC

version.h の日付更新。

[71b14affc6] Takashi Kokubun 2019-06-05 02:00:54 UTC

8d81e59aa7a62652caf85f9c8db371703668c149 の CGI.escapeHTML の最適化を revert しています。 ALLOCA_N() によるスタックオーバーフローがおきるため。

[6b66a76f43] git 2019-06-05 02:01:59 UTC

71b14affc6b699f38aabe73125380cab57799e34 のインデントのタブを空白に展開。

[5859ea1b1b] Nobuyoshi Nakada 2019-06-05 02:01:23 UTC

tool/runruby.rb で gdb 経由の実行の時に -x オプションで .gdbinit をロードするようにしています。

[26d02cc7cd] Nobuyoshi Nakada 2019-06-05 02:03:19 UTC

tool/runruby.rb で lldb 経由の起動の時も misc/lldb_cruby.py をロードするようにしています。

[a105831819] Nobuyoshi Nakada 2019-06-05 02:03:57 UTC

tool/runruby.rb でデバッガを利用するのに環境変数 RUNRUBY_USE_LLDB による指定も受付けるようにし、条件分岐が複雑だったのをリファクタリングしています。

[96d6527424] Jeremy Evans 2019-06-05 02:19:37 UTC

標準添付ライブラリ timeout の Timeout.timeout のブロック内で ensure 節で明示的に return を呼ぶとタイムアウトがなかったことになって例外が発生しなくなることがあるのを rdoc 用コメントに追記しています。現在の実装では(例外クラスの明示的指定がなかったら)ブロック内の実行でタイムアウト時に例外のかわりに throw による大域脱出をさせるようにしているので rescue での捕捉はできないはずですが、ensure は実行してしまうので return すると errinfo が消えちゃうんですね。 [ruby-core:92882] [Bug #15886]

[f1f04caf60] Jeremy Evans 2019-05-28 00:52:35 UTC

FrozenError 発生時のメッセージに receiver のオブジェクトを inspect で文字列化したものも埋め込むようにしています。

[7c776038ec] git 2019-06-05 02:29:04 UTC

f1f04caf60e4fc9dc3b12109e0be831f2d692810 のインデントのタブを空白に展開しています。

[c75a3356b3] aycabta 2019-06-05 02:29:41 UTC

標準添付ライブラリ reline の Reline::KeyStroke#read_io の実装を Reline 自体に移動するリファクタリング。 Reline::KeyStroke のインスタンスはクラス変数に格納するようにしています。

[aa8a8d8f6d] Nobuyoshi Nakada 2019-06-05 03:03:56 UTC

f1f04caf60e4fc9dc3b12109e0be831f2d692810 の FrozenError のメッセージの変更でこけるようになったテストで例外メッセージのチェックを前後で分割して条件を緩めています。

[542d69c894] Nobuyoshi Nakada 2019-06-05 02:53:24 UTC

22cd4027349f803efc7ede284376b7a7013f8dfe の tool/vcs.rb の git コマンドに常に -C をつけるようにする変更を revert しています。srcdir を参照するインスタンス変数名を typo しててディレクトリ指定がきいていませんでした。

[b2fe7484e7] Nobuyoshi Nakada 2019-06-05 03:57:14 UTC

b2fe7484e7e7c7741f33bfb02c2fc91f03763ab4 の FrozenError のメッセージにオブジェクトの inspect の結果を埋め込むのを確認するテストを追加。

[1624d77f3e] Nobuyoshi Nakada 2019-06-05 04:02:38 UTC

b2fe7484e7e7c7741f33bfb02c2fc91f03763ab4 の変更で FrozenError のメッセージの構築のために inspect を呼ぶ時に再帰的呼び出しを抑制するため rb_exec_recursive() 経由で呼ぶようにしています。

[f258137083] Martin Dürst 2019-06-05 05:03:50 UTC

0872ea53303499caf3584e40f2a5438e86eb4fed で導入した node.h の定数マクロ NODE_SPECIAL_EXCESSED_COMMA を NODE_SPECIAL_EXCESSIVE_COMMA に改名しています。

[84c294eb0b] Nobuyoshi Nakada 2019-06-05 06:49:55 UTC

bundler のテストでなんでもいいから例外を発生させるところでなぜか FrozenError を使ってるところがあって、メッセージの変更でエラーになってたので、RuntimeError を明示的な raise で発生させるようにテストを修正しています。