ruby-trunk-changes 2019-10-18

今日は標準添付ライブラリ optparse でオプションがみつからなかった時に did_you_mean.gem を使って似ている候補があればそれを表示する機能追加や reline の Windows でのキーストローク対応強化などがありました。

[d1a7305848] aycabta 2019-10-17 15:41:17 UTC

標準添付ライブラリ reline のヒストリのインクリメンタルサーチで表示する結果を構築するところの複数行対応らしいです。

[fdfb5100b9] git 2019-10-17 15:46:02 UTC

version.h の日付更新

[0162e7e647] Jeremy Evans 2019-08-11 23:22:58 UTC

メソッド引数などでデフォルト引数の値には任意の式が書けますが、そこに循環参照になるような式(最も単純には m(a=a) みたいなの)があったら警告を出して実行時に nil として扱うようにしてましたが、parse 時点で SyntaxError 例外を発生させるようにしています。 [ruby-core:65356] [Bug #10314]

[13b106a19c] aycabta 2019-10-17 17:15:53 UTC

標準添付ライブラリ reline に Windows 環境でのキー入力処理で 0x00 を読み飛ばしてたのを修正。また Alt-` というキーシーケンスに対応するようにしています。これは IME の On/Off に使われるらしい。

[53c05a6cf4] aycabta 2019-10-17 17:29:13 UTC

標準添付ライブラリ reline でテーブルとして使われる定数に格納する Hash リテラルなどに freeze をつけてたのを消してます。Hash の key が Array なやつの key を freeze してるのはやっておいてもいいような気はしますけどね。

[58657fa134] aycabta 2019-10-17 17:31:17 UTC

標準添付ライブラリ reline の Windows 向けのキーストロークのテーブル Reline::Windows::RAW_KEYSTROKE_CONFIG にカーソルキーや Home/End などのキーを追加しています。

[8c0629ba58] aycabta 2019-10-17 17:51:12 UTC

標準添付ライブラリ reline の Windows 向けのキー入力処理で 58657fa134852311ce6ce2827f72ba2d1b29a8bb で追加したような特殊なキーストロークの処理を強化しています。

[ee821e9074] Jeremy Evans 2019-10-17 17:16:32 UTC

Time オブジェクトの ObjectSpace.memsize_of をチェックするテストで struct RVALUE のサイズが 24 の場合に対応するようにしています。32bit 版で 24 になるそうな。 [ruby-core:94068] [Bug #16030]

[9026e12f93] Aaron Patterson 2019-10-17 20:30:09 UTC

拡張ライブラリ json の generator (JSON エンコードする処理)で JSON::SAFE_STATE_PROTOTYPE という定数を C の拡張ライブラリ部分で参照するのに最初の参照時に static 変数にキャッシュしておいてそれ以降そちらを参照するようにしていたのをやめて、毎回 rb_const_get() を呼ぶようにしています。 GC.compact での移動に対応するためみたいです。

[1d564acedc] Aaron Patterson 2019-10-17 20:35:26 UTC

9026e12f93bb0f3f63d7449cdb5eabb2e660088f と同様に拡張ライブラリ json で定数 Regexp::MULTILINE の内容を static 変数にキャッシュしていたのをやめています。こっちは単にこの変数すでに参照されていなかったみたいです。

[5ca5529d22] Seiei Miyagi 2019-10-17 16:34:18 UTC

標準添付ライブラリ racc で生成する ruby スクリプトでクラス名の名前空間がネストしている時? に module X ... end の end の行のインデントがずれてて警告が出るのを修正しています。 https://github.com/ruby/ruby/pull/2571

[c3b64a86bc] Yusuke Endoh 2019-10-16 07:31:41 UTC

標準添付ライブラリ optparse でオプション名を間違えた時に did_you_mean.gem を使って近い名前のオプションの候補を表示するようにしています。

[ce7942361d] Nobuyoshi Nakada 2019-10-17 17:51:15 UTC

hash.c の ID ベースのテーブルを指定するための変数 identhash を rb_hashtype_ident と改名して static 宣言を外し、gc.c で ObjectSpace::WeakMap の実装に使うテーブルの初期化時に使うようにして st_init_numtable() のかわりにするようにしています。 [ruby-core:94101] [Feature #16035]

[095cdca15b] Nobuyoshi Nakada 2019-10-18 05:03:28 UTC

ObjectSpace::WeakMap の finalizer 用のコールバックを rb_obj_method() で Method オブジェクトとして作るのではなくて rb_func_lambda_new() で C の関数を wrap した Proc オブジェクトとして作るようにしています。

[e50b8949fa] Nobuyoshi Nakada 2019-10-18 05:59:26 UTC

template/unicode_norm_gen.tmpl で numbered parameter と解釈される _2 のようなローカル変数を使っているところがあって警告が出てたので変数名変更しています。

[46fa301e82] Nobuyoshi Nakada 2019-10-18 06:15:59 UTC

c3b64a86bcd7773c081f5049115c57ec73d7a76a の続きで標準添付ライブラリ optparse で did_you_mean.gem を使った補完候補表示するのにメッセージ部分を独自に書いてたのを DidYouMean.formatter.message_for というメソッドを流用するようにしています。

[d4e52f672c] Nobuyoshi Nakada 2019-10-18 06:19:26 UTC

c3b64a86bcd7773c081f5049115c57ec73d7a76a の optparse に補完候補を出す機能追加でのテストに近いオプションがひとつもなくてただのエラーになるケースのテストを追加しています。

[e29e49abf0] Nobuyoshi Nakada 2019-10-18 07:43:40 UTC

続きで標準添付ライブラリ optparse で did_you_mean.gem を使う際に DidYouMean.formatter が DidYouMean::PlainFormatter じゃなかったら DidYouMean::PlainFormatter に設定しなおすようにしています。しかしインスタンス変数の @formatter にはセットしなおしてないけどいいのかな。
[追記]インスタンス変数 @formatter は teardown で元に戻すためのバックアップなのでこれで良かったようです。[/追記]

[b4d308b419] Nobuyoshi Nakada 2019-10-18 08:39:16 UTC

さらに続きで標準添付ライブラリ optparse で did_you_mean.gem のインスタンスを作ったりするのは例外を rescue して message が呼ばれた時に行うようにしています。これは rescue してそのまま無視されたり message が呼ばれないっていう場合に余計なことをしないためなんだろうか。

[e2b719bed6] Nobuyoshi Nakada 2019-10-18 08:46:53 UTC

さらにさらに続きで標準添付ライブラリ optparse で did_you_mean.gem を使って候補を出すために追加した処理で AmbiguousOption 例外が発生するパターンでも対応するようにしています。

[ddad1fb229] Yusuke Endoh 2019-10-18 08:53:17 UTC

NEWS ファイルに c3b64a86bcd7773c081f5049115c57ec73d7a76a 以降の対応による標準添付ライブラリ optparse の did_you_mean.gem を使った候補表示の機能追加について追記しています。

[58e2ca31db] Kazuhiro NISHIYAMA 2019-10-18 11:24:36 UTC

e50b8949fad96a30226e4122172822a2a4c7301d で警告除去のため template/unicode_norm_gen.tmpl のローカル変数名を変更したのですが _2 と _2_ のように変更してましたが、これは元々代入するけど使わないものを警告避けのため _ ではじまる変数名にしてただけなので、どちらも _ という1文字の変数に変更しています。