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 で発生させるようにテストを修正しています。

ruby-trunk-changes 2019-06-04

今日は irbシンタックスハイライトまわりの修正やテストなどの出力の色付けの処理を tool/colorize.rb というファイルに分離して他のツールでも使うようにする変更などがありました。

[11d3986d65] Takashi Kokubun 2019-06-03 12:15:54 UTC

4c0e21add7c87b70df27fbff81d8f192a467556d で common.mk に bash 依存が入ってたので SHELL 変数を /bin/bash に変更しています。 おお、しかし意外と壊れる環境ありそう。

[1b2b0e1f24] Takashi Kokubun 2019-06-03 12:59:34 UTC

11d3986d6557eb3cfcecbdd0ef6e21b18c7c960b を revert しています。 Travis-CI でエラーになったとのこと。

[928377d2c5] Takashi Kokubun 2019-06-03 13:00:14 UTC

ということで bash 依存を入れていた 4c0e21add7c87b70df27fbff81d8f192a467556d のほうを revert しています。

[0c459af7c2] Nobuyoshi Nakada 2019-06-03 15:14:55 UTC

irb で入力途中のバッファもシンタックスハイライトする時にエラーもハイライトするようにすると、入力途中の部分がエラーとして表示されてしまうので "incomplete end of input" のタイプのエラーは無視するようにしています。

[6498c733da] git 2019-06-03 15:20:29 UTC

version.h の日付更新。

[de541fe196] Takashi Kokubun 2019-06-03 15:22:22 UTC

irbシンタックスハイライトで \uXXXX でエンコードされた文字列をエスケープして元のエンコード記法に戻すようにしています。

[d21a694075] Takashi Kokubun 2019-06-03 15:29:53 UTC

irbシンタックスハイライトの終端のエラーについてのテストケースを追加しています。

[0da9205f15] Takashi Kokubun 2019-06-03 15:32:16 UTC

de541fe1961370e64541d73c96cf790d30f28604 で誤って変更してたテストのコメントを戻しています。

[fc7b4c7018] Nobuyoshi Nakada 2019-06-03 15:27:44 UTC

reline で stty -a の結果を String#scan して確認してましたが、たんに正規表現のマッチするかどうかみるだけで充分だったのでシンプルに書きなおしています。

[9987f45765] Takashi Kokubun 2019-06-03 15:35:58 UTC

IRB::Color.scan のキーワード引数の名前を改名しています。

[1a0b82210c] Takashi Kokubun 2019-06-03 16:03:03 UTC

make benchmark で利用する benchmark-driver.gem のバージョンを v0.14.17 に更新しています。

[ca22cccc14] NAKAMURA Usaku 2019-06-03 18:52:53 UTC

gc.c の allocate_page_list() で VC++ の警告抑制のため明示的な初期化を追加しています。

[4eb1c2365c] Aaron Patterson 2019-05-30 19:08:06 UTC

Proc/Binding の GC.compact 対応を追加しています。 rb_block_t の移動に追随する block_compact() を追加して Proc/Binding からの参照を更新できるようにしてこれらのオブジェクトの mark でオブジェクトを pin しないようにしています。

[2de3d92844] Aaron Patterson 2019-05-30 21:50:43 UTC

T_IMEMO 型オブジェクトも GC.compact での参照移動に対応しています。

[790a1b1790] Aaron Patterson 2019-05-30 22:25:31 UTC

st_table の key を mark する時に常に pin しないようにしています。 hash は移動しても変化しないから大丈夫ってコミットログにあるけど、いつのまにそうなってたっけ。

[c9b74f9fd9] Aaron Patterson 2019-06-03 22:15:48 UTC

790a1b17902f7ccb5939b9e0314571079fc30bc8 の続きで mark_keyvalue() で key を pin しなくなったので mark_hash() で compare_by_id タイプのテーブルだったらやっぱり key を pin する pin_key_mark_value() という関数を新設してこちらを使うようにしています。

[4b7213a85a] aycabta 2019-06-03 21:39:02 UTC

reline の emacs モードで Meta-t による ed_transpose_words という処理を実装しています。単語単位の前後の入れ替え。

[d950cade53] Takashi Kokubun 2019-06-03 23:33:03 UTC

Azure Pipelines の BASERUBY の? バージョンを 2.6.2 に変更しています。

[9a07915ae2] aycabta 2019-06-03 23:34:10 UTC

Reline の編集用メソッドの alias をいくつか追加しています。

[aa8d393d8a] Nobuyoshi Nakada 2019-06-04 00:24:17 UTC

rubyスクリプトを標準入力の端末から受け取る時に行頭ではなく行の途中で Ctrl-D で EOF を送信した時に 3回送信しないと読み込みを終了しなかったのですが、cat や perl と同様に 2回(行の終端とファイル終端)で打ち切るようにしています。

[14b5ccf91b] git 2019-06-04 00:36:32 UTC

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

[7866ed850c] Yusuke Endoh 2019-06-04 02:39:27 UTC

AST の Node をダンプする時に文字列化されない内部的変数の時にその ID を数値として出力するようにしています。

[b0cb4bdb4e] git 2019-06-04 02:40:21 UTC

7866ed850c1ae95a6b115e09f3788d5b623f0708 のインデントのタブを空白に展開。

[c1e2d50531] Kazuhiro NISHIYAMA 2019-06-04 03:37:25 UTC

README.md に記載している Azure Pipelines のバッジ? のリンクを trunk でなく master のビルド結果のほうに変更しています。

[8406547b7c] Kazuhiro NISHIYAMA 2019-06-04 03:39:03 UTC

c1e2d50531f3ba50cce3016bcfd440546e1ef007 と同様に README.ja.md に記載している Azure Pipelines のバッジ? のリンクを修正しています。

[ce4b5d90b2] git 2019-06-04 03:39:25 UTC

c1e2d50531f3ba50cce3016bcfd440546e1ef007 と 8406547b7c3f97c073aa70d22ec7e90a6bf5af5e の行末の空白除去。

[58fd27d3d8] Nobuyoshi Nakada 2019-06-04 08:06:12 UTC

make の出力に色付けするための tool/colorize.rb で test/colors というファイルから設定を読み込むようにしています。

[16cb1fb007] Nobuyoshi Nakada 2019-06-04 08:09:16 UTC

tool/extlibs.rb で tool/colorize をロードして出力を色付けするようにしています。

[b0c35ff2db] Nobuyoshi Nakada 2019-06-04 08:23:57 UTC

58fd27d3d89451fbbe840348cd66f2205e34e72b の修正。 test/colorize から読み込んだ内容をセットする変数名が間違ってたので修正。

[a57d6d2325] Nobuyoshi Nakada 2019-06-04 09:08:21 UTC

58fd27d3d89451fbbe840348cd66f2205e34e72b の追加修正。 tool/colorize.rb の Colorize.new で設定ファイルをキーワード引数で受け取るようにして省略可能にしています。

[fade26afa7] Nobuyoshi Nakada 2019-06-04 09:10:09 UTC

a57d6d2325ddc71363414acf2f923db0bf0ddc9c の再修正。 tool/colorize.rb は BASERUBY で実行される可能性があるので、古い ruby での実行に備えてキーワード引数は使わず、なんかすごいトリッキーなデフォルト引数を使って代替しています。

[e7aa87c353] Nobuyoshi Nakada 2019-06-04 09:33:34 UTC

reline のテストのテストメソッドが重複していたので改名しています。

[51d27d25d7] Nobuyoshi Nakada 2019-06-04 09:51:49 UTC

test/lib/test/unit.rb での出力の色付けを tool/colorize.rb を require して使うようにしています。うーん、tool/ 配下に依存しちゃうのか…。

[24a96a0228] Nobuyoshi Nakada 2012-06-22 05:38:03 UTC

marshal.c の rb_marshal_dump_limited() と rb_marshal_load_with_proc() という関数は誤って static として marshal.c の先頭で宣言されてましたが、rb_ の prefix もついてるので宣言を include/ruby/ruby.h に移動して公開 API にしています。

[9e472e18d2] Nobuyoshi Nakada 2019-06-04 10:00:48 UTC

拡張ライブラリ date のテストで不正なバイナリを Marshal.load する時のテストで警告を抑制するように一時的に $VERBOSE を変更して実行するようにしています。

[c8b001858e] Nobuyoshi Nakada 2019-06-04 10:06:19 UTC

24a96a0228ccf355826644a9daad69e11b67b53b を revert しています。

[2c60f37143] Nobuyoshi Nakada 2016-05-12 07:52:34 UTC

Random オブジェクトの内部で使われてる T_TYPEDDATA 型オブジェクトのタイプの名前を "random" -> "random/MT" に変更して、型情報を格納する変数名も変更しています。また Init_Random_default() という初期化関数に Class を渡すようにしていますが、呼んでるところでは同じ rb_cRandom を渡してるので結果は同じですね。

[2e2cd8297b] git 2019-06-04 10:55:04 UTC

2c60f3714381803218313a6056d3e1dd39782ca1 のインデントのタブを空白に展開。

ruby-trunk-changes 2019-06-03

今日も主に reline 関係の修正がありました。

[d04ebc57f2] Nobuyoshi Nakada 2019-06-02 20:31:25 +0900

標準添付ライブラリ reline が inputrc ファイルを読み込む時に条件分岐で version に Reline と書いてあるのも認識するようにしています。へー inputrc ってこういうのも書けるんだ。

[4fda39fc87] Kazuhiro NISHIYAMA 2019-06-02 22:37:42 +0900

reline のテストで config ファイルの内容を行ごとに分割する時の正規表現を行頭(^)だけを使うようにリファクタリングしています。

[a1e6e45341] Nobuyoshi Nakada 2019-06-02 22:58:05 +0900

reline が読み込む inputrc のパスを環境変数 INPUTRC から読む時も File.expand_path を通すようにしています。

[f4b060d8d7] Nobuyoshi Nakada 2019-06-02 22:58:05 +0900

reline の inputrc 読み込み時の if 分岐の不正な文法のチェック強化。 https://github.com/ruby/ruby/pull/2222

[3457ce4486] Nobuyoshi Nakada 2019-06-03 01:35:48 +0900

Reline::LineEditor のマクロを処理するメソッドの引数の数をチェックして不正な呼び出しで ArgumentError にならないように修正しています。 https://github.com/ruby/ruby/pull/2221

[aeb3a2b337] git 2019-06-03 01:36:55 +0900

version.h の日付更新。

[65fdb90325] Nobuyoshi Nakada 2019-06-03 02:03:15 +0900

3457ce448655a3c2e52793186f62298903ddc26b の変更で不要になった定数 Reline::LineEditor::ARGUMENTABLE を削除しています。

[3428922437] aycabta 2019-06-03 03:29:34 +0900

reline の vi モードでの "^" の処理を ed_move_to_beg から vi_first_print に変更しています。期待される動きがちょっと違うみたい。

[1bfba99b79] aycabta 2019-06-03 03:38:39 +0900

reline のテストでファイルの close 漏れを修正しています。

[5524de5ca0] aycabta 2019-06-03 03:41:40 +0900

Reline::LineEditor のカーソル移動のメソッドにいくつか alias を追加しています。

[182072b211] aycabta 2019-06-03 04:17:52 +0900

Reline の emacs モードでの Ctrl-Q を ed_ignore から ed_quoted_insert に変更しています。

[533070bfc6] Kazuhiro NISHIYAMA 2019-06-03 10:32:32 +0900

4fda39fc8788cbcdd07f04768ec84faf3ea44721 で reline のテストで inputrc ファイルの内容を正規表現で split して行に分割してたのを単に String#lines を呼ぶようにリファクタリングしています。

[f48aad7ba2] Kazuhiro NISHIYAMA 2019-06-03 10:47:38 +0900

doc/maintainers.rdoc の reline のメンテナに aycabta さんを追加しています。

[17af8bfce6] Jeremy Evans 2019-06-02 20:00:35 -0700

終端のない Enumerable#each_slice が返す Enumerator の size メソッドが Float::INFINITY を返すようにしています。 こういうのいっぱいありそうだけど each_slice だけなのかな。 [ruby-core:92894] [Bug #15889]

[3102ca4c6e] Nobuyoshi Nakada 2019-06-03 12:54:33 +0900

tool/vcs.rb で git コマンド実行結果を読み取る時に UTF-8 として読むようにしています。コミットログが端末で化けたなと思ったら絵文字が使われてました。

[22da5d71ea] Nobuyoshi Nakada 2019-06-03 12:56:36 +0900

rubyspec で ruby を実行した出力をチェックする時に String#b で ASCII-8BIT にしておくようにしています。 -v つきの時にブランチ名などを使うので(?) 非ASCII 文字が含まれる可能性があるようです。

[c990b3c41a] Nobuyoshi Nakada 2019-06-03 15:15:54 +0900

parse.y の文字列リテラル内の \uXXXX による Unicode 文字の指定が不完全な時のエラー時に token flush するようにしています。 エラー部位表示用ですかね。

[c280519256] Koichi Sasada 2019-06-03 15:40:38 +0900

gc.c の rb_objspace_pinned_object_p() という関数はほぼなにもしてない wrapper になってたので直接 RVALUE_PINNED() を呼ぶようにリファクタリングしています。

[d7c3eb570b] aycabta 2019-06-03 17:24:49 +0900

reline の未使用になってた定数 Reline::VI_OPERATORS を削除しています。

[a4c5d23404] Takashi Kokubun 2019-06-03 20:47:33 +0900

make benchmark でベンチマーク実行する ruby は miniruby ではなく $(RUNRUBY) にしています。 72ad092960c413b6a5687c552747b20a5ed78b22 で追加したベンチマークが require "time" していて、miniruby では拡張ライブラリが使えないため失敗してたためとのこと。

ruby-trunk-changes 2019-06-02

今日は主にテストの警告除去や OpenBSD 向けの対応(?)などがありました。

[9eecd7a2fd] Hiroshi SHIBATA 2019-06-01 14:44:24 +0300

テストで assert_match の引数の正規表現リテラルが parser による警告が出るのを抑制するため引数の明示的なかっこを追加しています。

[3c77ef9adc] Hiroshi SHIBATA 2019-06-01 15:07:35 +0300

同じくテストで第一引数が負の数の時にも警告が出る(二項演算子の - ではなく単項演算子になってるという警告)ので明示的なかっこをつけるようにしています。

[464e55f1d0] Hiroshi SHIBATA 2019-06-01 15:20:21 +0300

他にもテストで第1引数が * や & をつけた引数の時にも警告が出るので明示的なかっこを追加しています。

[2bad001cfd] Hiroshi SHIBATA 2019-06-01 15:23:24 +0300

テストで end のインデントが揃ってなくて警告が出てるところがあったので修正しています。

[8a041c1b92] Nobuyoshi Nakada 2019-06-02 00:34:02 +0900

標準添付ライブラリ delegate の rdoc 用コメントでメソッド名に # を前置する修正。

[e814d2f84a] git 2019-06-02 00:36:19 +0900

version.h の日付更新。

[09c09eb0db] Nobuyoshi Nakada 2019-06-02 00:42:57 +0900

NEWS ファイルの GC.compact についての記述を新機能のセクションに移動しています。

[4b9869e7e0] Jeremy Evans 2019-06-01 10:50:06 -0700

String#crypt のテストに OpenBSD 向けの分岐を追加しています。なんだろうこの magic number は。チケットのほうをみても CI の修正ではないみたいだしはて。 [ruby-core:70015] [Bug #11363]

[7b1c1b9492] aycabta 2019-06-02 05:07:13 +0900

Reline::LineEditor#process_key で引数に Symbol が渡された時の処理を追加しています。

[bfd26cc18d] aycabta 2019-06-02 07:21:59 +0900

Reline::LineEditor#readmultiline は常にブロックつきの呼び出しを要求するように分岐を削除しています。とはいえ inner_readline にブロック引数で委譲しているだけなのでつけなくてもエラーにはならないか。

[28e01f006d] aycabta 2019-06-02 07:28:26 +0900

lib/reline/config.rb のインスタンス変数に説明のコメント追記。

[e360688c4d] aycabta 2019-06-02 07:39:12 +0900

Reline にテストモードのフラグを持てるようにしてこれを利用して stdin/stdout を pipe にすりかえたテストクラスを追加しています。

[486a2c26d6] aycabta 2019-06-02 08:50:01 +0900

Reline.readmultiline のテストケース追加。またテストモードの実装を若干変更しています。

[06a25344d9] Jeremy Evans 2019-06-02 07:59:56 +0300

拡張ライブラリ psych の extconf.rb で Dir.glob の結果を sort することでビルド結果に再現性があるようにしています。 [ruby-core:92899] [Bug #15890]

ruby-trunk-changes 2019-06-01

今日は引き続き reline の修正やリファクタリングの他 Module/Class の名前の保持のしかたの変更で無名のまま freeze してから定数に代入すると FrozenError が発生する不具合の修正などがありました。

[913661cca0] Hiroshi SHIBATA 2019-05-31 16:15:43 +0300

irb のバージョンを 1.1.0.pre.1 に更新しています。

[73890d9d79] aycabta 2019-05-31 22:33:08 +0900

標準添付ライブラリ reline で 環境変数 RELINE_STDERR_TTY でエラー出力を指定のファイルに出力する時に puts を再定義して毎回 flush するようにしています。sync=true でいいんじゃないかな。

[21a43489b1] aycabta 2019-05-31 22:53:01 +0900

と、思ってたら sync = true に変更されてました。

[88770c2ab6] aycabta 2019-06-01 00:02:35 +0900

reline で Home キーと End キーというのに対応しています。

[8fc552adee] git 2019-06-01 00:03:18 +0900

version.h の日付更新。

[552c42f51f] Nobuyoshi Nakada 2019-06-01 00:41:17 +0900

reline の特殊なキーのキーストロークのテーブルを環境で動的に変更せずに IO のプラットフォーム毎のクラスの定義の下の定数に移動して、環境によって参照する定数を変更するようにしています。

[f97979ce88] Benoit Daloze 2019-05-31 19:02:06 +0200

mspec の upstream からのマージ。

[1d37cc1900] Benoit Daloze 2019-05-31 19:02:08 +0200

rubyspec の upstream からのマージ。 Enumerable#tally のテストが追加されています。

[aeb9a0ca77] MSP-Greg 2019-06-01 02:16:34 +0900

appveyor.yml の pacman でのライブラリインストールの順番を変更しただけにみえるんですが、なんだろこれ。コメントをみてもいまいちなにを意図したのかわからないですね。

[c1e5299787] Nobuyoshi Nakada 2019-06-01 02:41:14 +0900

無名の Module/Class を freeze した後で定数に代入すると、その Module/Class の名前がつくので名前を保持する内部的なインスタンス変数がセットされることになるので FrozenError が発生するようになってしまっていましたが、これは内部的な処理なのと、おそらく最近の変更の前は発生していなかったので互換性のためにエラーを発生させないようにしています。 [ruby-core:92911] [Bug #15891]

[7df65ef676] aycabta 2019-06-01 09:06:27 +0900

標準添付ライブラリ reline で inputrc ファイルによるキーストローク設定が効くようにしているようです。

[65e63af377] Yusuke Endoh 2019-06-01 13:15:43 +0900

6bedbf462544a7917fdc8d8c44276079a6e156cf で Integer# に2つの引数や Range を指定して連続するビットを切り出せるようになりましたが、この影響で特定のビットのみ取り出す従来の呼び方も速度が低下してしまっていたので、それを解消するため opt_aref 最適化命令で Integer# の引数が Integer の時に最適化を行うようにしています。

[b487b39b85] git 2019-06-01 13:34:55 +0900

65e63af377bb493dea4d0207627ed87d5da360a8 のインデントのタブを空白に展開。

[3034d666e8] Nobuyoshi Nakada 2019-06-01 14:57:36 +0900

reline で inputrc を読み込むのに open してから readlines してたのを File.readlines を使うようにリファクタリング

[34727475d0] aycabta 2019-06-01 15:07:52 +0900

Reline::LineEditor#process_key の第3引数の Method オブジェクトは第2引数から自明に取り出せるのでメソッド内で作るようにして引数を削っています。

[de01c4ec00] aycabta 2019-06-01 16:47:59 +0900

Reline::Config のテストの teardown で Reline::Config#reset を呼んでおくようにしています。

[560cd5b1f0] Jeremy Evans 2019-06-01 00:52:40 -0700

doc/contributing.rdoc の OpenBSD のメンテナのところに Jeremy Evans を追記しています。

[56660de3c6] Hiroshi SHIBATA 2019-06-01 13:50:41 +0300

rubygems を upstream からマージしています。

[f630359d9b] Takashi Kokubun 2019-06-01 20:07:50 +0900

benchmark/ に irb の色付けの処理のベンチマークを追加しています。

ruby-trunk-changes 2019-05-31

今日というか昨日 2.7.0-preview1 がリリースされました。最近の reline の導入で irb の色付けやマルチラインの機能が入ってたりしていい感じなので試してみてください。
今日はそのシンタックスハイライトの再修正やリリース関連のツールの修正がありました。

[279c8e14d4] aycabta 2019-05-30 20:54:28 +0900

Reline::LineEditor#rerender で再描画用のバッファを @buffer_of_lines をそのまま使わず一度 whole_lines を呼んで現在の行を更新してから処理するように修正しています。

[b0e2b7a5ff] Nobuyoshi Nakada 2019-05-30 21:54:38 +0900

拡張ライブラリ ripper の Ripper::Lexer#scan でエラー時に @stack に残っている要素もまとめて返すようにしています。

[92ecf58b1e] Nobuyoshi Nakada 2019-05-30 22:03:33 +0900

ripper でヒアドキュメントの終端していない時のエラーの検出位置を修正しています。

[22cd402734] NARUSE, Yui 2019-05-30 22:20:28 +0900

tool/vcs.rb の VCS::GIT がビルドディレクトリが別になっている時に対応できていなかったのを修正。

[f0945176c3] Nobuyoshi Nakada 2019-05-30 22:27:11 +0900

22cd4027349f803efc7ede284376b7a7013f8dfe の再修正。 git コマンドが抜けてしまったところがあったので復旧しています。

[ab0c8cc021] Nobuyoshi Nakada 2019-05-30 23:23:11 +0900

tool/make-snapshot で Unicode 関連のファイルのダウンロードを抑制するため関連ファイルの更新時刻を更新しておくようにしています。

[f7aa80b3fe] Nobuyoshi Nakada 2019-05-31 00:00:26 +0900

lib/unicode_normalize/table.rb の更新を BASERUBY が使えない時にスキップするためターゲット名をずらす時に $(srcdir)/ だけのターゲットになってしまっていたので、サブディレクトリまで含めるようにしています。

[c55db6aa27] git 2019-05-31 00:01:41 +0900

version.h の日付更新。そして 2.7.0-preview1 がこのコミットの位置でリリースされたようです。

[e935a3227d] Benoit Daloze 2019-05-30 22:11:22 +0200

ruby/mspec に upstream からマージ。

[a4161b7649] Benoit Daloze 2019-05-30 22:11:24 +0200

rubyspec に upstream からマージ。

[8f83fe3b02] aycabta 2019-05-31 05:53:02 +0900

Reline::LineEditor の vi モードで Ctrl-D で EOF した時にマルチラインで実は他の行に文字があっても終了してしまってたのを修正しています。

[6e052817f9] Takashi Kokubun 2019-05-31 06:21:17 +0900

5b64d7ac6e7cbf759b859428f125539e58bac0bd で irb から ripper のメソッド Ripper::Lexer#scan として抽出したエラーも含めて結果を取る処理を、再び irb 側に移動しています。

[cb40a21da0] Takashi Kokubun 2019-05-31 06:54:00 +0900

irbシンタックスハイライトが入力が完了していない時に文法エラーになっている部位をハイライトするのを抑制しています。

[6a5e89e23c] Takashi Kokubun 2019-05-31 07:24:11 +0900

187ef00a41ca28a26ffa0a9399c48335578590bb で Wercker でのエラー時に MJIT用の生成したソースファイルを git リポジトリにコミットさせることで保存しようとしてましたが、うまくコミットできなかったようなので git config で user.name と user.email を設定しておくようにしています。

[856593cc49] Takashi Kokubun 2019-05-31 09:44:14 +0900

cb40a21da0687b5dd3cd251c9e66bb0edf67f2b9 のコメントの typo 修正。

[1cd93f1cdf] Jeremy Evans 2019-05-30 18:34:45 -0700

標準添付ライブラリ delegate の Kernel#DelagateClass() メソッドがブロックを受け取るようにして、そのブロックを生成した Class の Module#module_eval に渡すようにしています。Class.new や Struct.new でできるのと同様のことができるようにしたとのこと。

[e8c710b11a] Jeremy Evans 2019-05-30 18:34:45 -0700

標準添付ライブラリ delegate の Kernel::DelegateClass() メソッドが返す Class に後から追加したメソッドが public_instance/methods に含まれないという不具合を修正しています。 [ruby-core:70678] [Bug #11512]

[fd658ec821] Nobuyoshi Nakada 2019-05-31 10:55:37 +0900

tool/make-snapshot で include/revision.h に定義を生成するマクロ RUBY_FULL_REVISION は RUBY_REVISION に定義されるのが切り詰められたものだった時だけにしています。うーん、これは古い安定版ブランチで trunk の tool/make-snapshot を使った時のこと想定してるのかな? tool/make-snapshot はたぶん各ブランチのものを使ってしまうような気がするけど。

[1e9057b54a] Nobuyoshi Nakada 2019-05-31 10:55:37 +0900

tool/vcs.rb の VCS::GIT.get_revisions で現在のブランチが detached でもその名前を使うようにしています。

[d180e40570] Nobuyoshi Nakada 2019-05-31 10:55:37 +0900

tool/file2lastrev.rb に --limit というオプションを追加して RUBY_BRANCH_NAME マクロの値に定義するブランチ名の長さの上限を指定できるようにしています。デフォルトは 20。

[d2f663d6f1] Nobuyoshi Nakada 2019-05-31 10:55:38 +0900

method.h に TODO コメントされてたとおり VM_METHOD_TYPE_MINIMUM_BITS のサイズについて STATIC_ASSERT() で充分な数が指定されていることを確認するようにしています。

[83f9183a7e] Nobuyoshi Nakada 2019-05-31 14:05:01 +0900

構造体のメンバーへのアクセスに使う UNALIGNED_MEMBER_ACCESS() マクロの定義する条件に GCC 9 以降というのも追加しています。 GCC 9 で -Waddress-of-packed-member オプションがサポートされるようになったそうです。

[ea42423908] Alan Wu 2019-05-31 14:38:35 +0900

rb_vm_t::orig_progname が mark 漏れしていて Process.argv0 で SEGV することがあった不具合を修正しています。なんということでしょう。しかも結構前からみたい。 [ruby-core:92884] [Bug #15887]

[b1aecef873] Nobuyoshi Nakada 2019-05-31 16:04:16 +0900

アライメントの取れてない構造体メンバーへのアクセスの警告を抑制する UNALIGNED_MEMBER_PTR() などのマクロ定義を eval_intern.h から internal.h に移動して、利用箇所を増やしています。

[b632566d33] Nobuyoshi Nakada 2019-05-31 16:32:27 +0900

rubyspec で UNIX domain socket を用意する時にパス名が長すぎてエラーになった時は無視するようにしています。

[8b39df854d] Nobuyoshi Nakada 2019-05-31 16:32:27 +0900

rubyspec で irb のテスト時に ~/.irbrc を編集してしまう? のを避けるためダミーの irbrc ファイルを作ってそちらを環境変数 IRBRC で指定して起動するようにしています。

[1457ad1ea7] Nobuyoshi Nakada 2019-05-31 19:20:59 +0900

JIX X 0301 の新元号への対応を含んだ改訂が行なわれてたそうなので、NEWS ファイルの Date の記述を修正しています。 [ruby-dev:50790]

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? を使うように変更しています。