今日も irb と reline の修正やそれに関連した ripper の変更や GC.compact 関連の不具合修正などがありました。
[c40003da25] Nobuyoshi Nakada 2019-05-27 23:08:45 +0900
拡張ライブラリ ripper で Ripper#token メソッドを追加して、おそらく SyntaxError 時に参照する用だと思いますがその時点で読んでた token を返せるようにしています。 EXPERIMENTAL て書かれてるので仕様は模索中かも。
[b4365e75fd] Nobuyoshi Nakada 2019-05-27 23:08:48 +0900
parse.y で \uXXXX みたいなエスケープ文字が不完全な状態の時にトークンとして読まないように? しているようです。ちょっとよくわからない。
[8a2a5822ca] Nobuyoshi Nakada 2019-05-27 23:08:51 +0900
irb のシンタックスハイライトで c40003da25543b0f828911af56108ee16af35236 で導入した Ripper#token を利用してエラー部分をハイライトするようにしています。
[77bfebebc4] aycabta 2019-05-28 00:17:52 +0900
reline の Reline::LineEditor で非表示文字の判定するのに OSC というのをサポートするための正規表現を追加していますが、OSC ってなんだろ……。 Open Sound Control (MIDI の代替として提案されている演奏情報用のプロトコル)じゃないよなぁ……。というのは冗談で Operating System Command の略らしい。
[11778fd246] git 2019-05-28 00:20:24 +0900
version.h の日付更新。
[70166b3ca3] aycabta 2019-05-28 00:21:24 +0900
しかし 77bfebebc44c5e46ebd156d074081846c037f882 の OSC サポートは revert されています。
[9a68aba79f] aycabta 2019-05-28 00:48:02 +0900
77bfebebc44c5e46ebd156d074081846c037f882 の reline での OSC サポート追加の再適用。 allow_escape_code が false の時の分岐での戻り値がちゃんと伝播できてなかったのを修正しています。
[b2b5ed1410] Kazuki Tsujimoto 2019-05-28 01:32:07 +0900
irb でバッファを RubyVM::InstructionSequence.compile で一旦コンパイルしてみる時に parse や compile の段階で出る警告が出てしまうので、$VERBOSE を局所的に nil にセットして抑制するようにしています。
[69c7ad1723] aycabta 2019-05-28 01:51:01 +0900
Reline::LineEditor の emacs binding の em_delete_or_list というメソッドでマルチライン時のための判定を追加しています。
[7447c7b651] aycabta 2019-05-28 01:52:04 +0900
Reline::LineEditor で行末で改行を消した時に次の行を連結する処理を追加。
[5e275dd2af] aycabta 2019-05-28 03:23:52 +0900
irb の文法チェックというかスクリプトが完結しているか確認するために parse してみるところで numbered parameter に対応しています。
[d5682eb939] aycabta 2019-05-28 03:25:47 +0900
lib/irb/completion.rb に不要な変数の代入が残ってたので削除しています。
[8b135cc875] aycabta 2019-05-28 04:25:50 +0900
reline の Windows 版向けの GetKeyState() を利用したキー入力チェックで VK_LMENU でなく VK_MENU という定数を使うようにしています。ALT キーの判定のためらしい。
[f6b62d8fe7] aycabta 2019-05-28 04:39:29 +0900
同じく reline の Windows 向け実装で Shift-Enter と Meta-Enter を判定する処理を追加。
[74c88e7cda] aycabta 2019-05-28 05:10:49 +0900
reline の Windows 向け端末処理実装で端末のサイズを取得するところが行とカラムが反対になってたので反転しています。
[57b4df07bc] aycabta 2019-05-28 08:38:55 +0900
reline の Reline.retrieve_completion_block という属性は削除して Reline.completer_quote_characters を利用して Reline.retrieve_completion_block というメソッドを追加してこのメソッド呼び出しを使うようにしています。この属性は Readline との互換性のためには不要なのかなぁ。
[1cdaa17a06] Nobuyoshi Nakada 2019-05-28 09:00:02 +0900
numbered parameter の名前に ":" をつけた :@1 みたいなシンボルリテラルは文法エラーにしています。あれ、そうなのか。
[cf904d9f9f] Takashi Kokubun 2019-05-28 10:02:31 +0900
Travis-CI と AppVeyor でとりあえずは trunk でビルドするようにして逆に master は除外するようにしています。
[ae2a904ce9] Yusuke Endoh 2019-05-28 10:07:29 +0900
rubygems のテスト用の証明書を OpenSSL 1.1.1 以降で動くように強度の強いものに作りなおしています。また生成用のスクリプトを util/create_certs.sh に追加しています。util/ は tool/ のまちがいかな?
[165ddfda20] git 2019-05-28 10:07:55 +0900
ae2a904ce9bffedee7d110dc60fd51c0a2879a5b の行末の空白除去。
[fa7a768fdf] Hiroshi SHIBATA 2019-05-28 10:24:27 +0900
ae2a904ce9bffedee7d110dc60fd51c0a2879a5b で追加された util/create_certs.sh を削除しています。なるほど rubygems のリポジトリに追加したものがこちらにも入っちゃったみたいですね。
[cfd839c140] Koichi Sasada 2019-05-28 10:31:02 +0900
gc.c の check_rvalue_consistency_force() で警告除去のための明示的な初期化追加。
[7f211bfe6c] Koichi Sasada 2019-05-28 10:31:02 +0900
GC.compact の実装 gc_compact_heap() で tomb heap の page も利用してしまっていたので eden heap の page のみ使うようにしています。
[ccfb12d76c] aycabta 2019-05-28 11:03:02 +0900
f6b62d8fe77a474935ef3dee6bb20ca3cc4da602 の変更で代入の右辺の論理式を and で連結してたので優先度の問題で代入が先に結合されてしまってたので && を使うようにしています。
[72333286c4] Nobuyoshi Nakada 2019-05-28 11:38:13 +0900
af17e111b3f7cb3c5ad7dc194399b44d0e5004d0 で Ripper::Lexer::Elem#inspect および #pretty_print に埋め込む式の typo 修正。
[2229acaa54] Koichi Sasada 2019-05-28 11:44:08 +0900
7f211bfe6c5e4a763412406e5e257ea275ca53da の修正漏れを修正。 init_cursors() でインデックス初期化する時も eden heap の page 数を使うように追随しています。
[f9401d5d44] Koichi Sasada 2019-05-28 11:44:08 +0900
count_pinned() で T_ZOMBIE になってるオブジェクトは RVALUE_PINNED() を呼ばずに pin されてると判定するように修正しています。
[f3bddc103d] Koichi Sasada 2019-05-28 11:44:08 +0900
allocate_page_list() で calloc(3) のかわりに malloc(3) を利用するようにリファクタリング。
[05bc14d81a] Jeremy Evans 2019-05-27 20:55:56 -0700
BASERUBY が 1.8 でも動くように common.mk や tool/ のいくつかのスクリプトでキーワード引数をやめるなどの変更をしています。あれ、BASERUBY ってせめて 1.9 くらいまで想定が引き上げられてなかったっけ。
[40e175b390] Nobuyoshi Nakada 2019-05-28 14:20:59 +0900
05bc14d81a1d7f6af826a92371aeff0c3fb2a67e で tool/downloader.rb のコメントに不要な文字が入ってしまってたのを削っています。
[62b3d4c721] Nobuyoshi Nakada 2019-05-28 14:36:29 +0900
parse.y の parse_atmark() で @ のあとに数字が出現して SyntaxError の時はクラス変数っぽい prefix (@@1 とか)の時でも位置情報をずらしておくようにしています。
[d5f408403f] Nobuyoshi Nakada 2019-05-28 14:38:31 +0900
appveyor.yml で必要なライブラリインストール時に attrib コマンドを使ってファイルの権限の調整をしています。
[2562b7d7cd] Nobuyoshi Nakada 2019-05-28 14:38:31 +0900
appveyor.yml でテスト時に環境変数 RELINE_TEST_ENCODING を設定する指定をトップレベルに統一しています。
[8a2b497e3b] Koichi Sasada 2019-05-28 15:57:20 +0900
rb_gc_finalize_deferred() という C API が互換性のために残されてましたが、既に 2.4 のころから呼ぶと SEGV する状態だったそうなので削除しています。