ruby-trunk-changes 2020-04-03

今日は rubyspec の更新や default gems の同期用ツールの修正、標準添付ライブラリ webrick の生成する証明書の改善などがありました。

[69f698d85a] Nobuyoshi Nakada 2020-04-01 06:18:00 UTC

919b175afc389f8df6a3caa05ffdd28f5fc4bfca の 拡張ライブラリ etc で Struct の下に定義する定数の deprecated 化のリトライですが、また後で revert されています。

[5885550c8c] Nobuyoshi Nakada 2020-04-02 12:32:36 UTC

拡張ライブラリ etc の extconf.rb で rb_deprecate_constant() を libruby.a からリンクしようとするための hack らしいですが後に revert されています。

[736695cefb] git 2020-04-02 12:33:53 UTC

version.h の日付更新

[11ddfd4c91] Nobuyoshi Nakada 2020-04-02 12:59:33 UTC

5885550c8cb80fb8784598d3af1d90823f4f6604 の etc の extconf.rb の変更を revert。 --enabled-shared でビルドした時に動かない状態だったようです。

[bd0a7d8dd5] Nobuyoshi Nakada 2020-04-02 13:00:00 UTC

69f698d85ada116db5747873e53c597991bedff8 の etc による Struct 配下の定数の deprecated 化再度 revert。

[78b6eb9f9f] Nobuyoshi Nakada 2020-04-01 06:18:00 UTC

で、これが etc の定数 deprecated の最終版みたいです。 Struct の配下に追加する定数を deprecated にしています。そのための rb_deprecate_constant() の検出を extconf.rb に追加して、公開されてなかった時はあきらめてマクロでなにもしないようにしています。

[0540df3ed7] Nobuyoshi Nakada 2020-04-02 13:30:17 UTC

03ca90c732d4e2369d907d3b1b8d641ff4345f5a で追加した bundled gem のキャッシュを共有するための make ターゲット .bundle/cache で CACHE_DIR という変数の指すディレクトリも作成しておくようにしています。

[9ddf147237] Nobuyoshi Nakada 2020-04-02 13:53:26 UTC

internal/variable.h で rb_deprecate_constant() の prototype 宣言を export されるシンボルの定義位置に移動しています。確か mswin などではこれが厳密に判定されるんでした。

[0f57d66f9e] Sorah Fukumori 2020-04-02 15:49:12 UTC

標準添付ライブラリ webrickWEBrick::Utils#create_self_signed_cert で自己署名証明書を作成する時の extension の keyUsage という項目に digitalSignature, keyAgreement, dataEncipherment などを追記しています。コミットログによると Chrome の 75以降でサーバー証明書の keyUsage のチェックが厳密になったらしくて、WEBrick の簡易的な証明書による TLS アクセスが弾かれる? ようです。

[061eba0229] git 2020-04-02 16:08:19 UTC

version.h の日付更新

[242e58db2f] Nobuyoshi Nakada 2020-04-02 16:16:16 UTC

rubyspec に拡張ライブラリ etc の定義する Struct の配下の定数を参照しているところがあったので修正/削除しています。

[2544bf9452] Nobuyoshi Nakada 2020-04-02 16:04:30 UTC

parse.y に NEW_RIPPER() というマクロを追加して拡張ライブラリ ripper 用の NODE を生成するのに使うようにリファクタリング

[2a4049b23c] Nobuyoshi Nakada 2020-04-02 16:06:56 UTC

GC のために mark すべき VALUE を一時的に mark_stack_t というスタック構造に追加する push_mark_stack() で T_NIL, T_FIXNUM, T_NODE などの不正なオブジェクトが追加された時に異常終了させるようにしています。

[4ec32f869f] Benoit Daloze 2020-04-02 20:39:26 UTC

ruby/mspec に upstream から最新版をマージ。

[da05c1552e] Benoit Daloze 2020-04-02 20:39:28 UTC

ruby/spec に upstream から最新版をマージ。

[f49a24201c] Nobuyoshi Nakada 2020-04-03 00:42:52 UTC

rubyspec に古いバージョンの ruby のサポートを切る時のために ruby_version_is の guard を編集するためのツール spec/mspec/tool/remove_old_guards.rb というのがあったみたいなんですが、このツールで置換対象の ruby_version_is や ruby_bug などの guard の検索する正規表現でマッチ対象を広げるように修正しています。

[18f7d3c9a6] Nobuyoshi Nakada 2020-04-03 00:44:40 UTC

たぶん f49a24201c8bbcf9fcb4349174e468a673d14b98 で修正した spec/mspec/tool/remove_old_guards.rb を利用して rubyspec の ruby 2.4 サポートの削除を行なってます。追加で削除された guard は 1つだけですがなんかテストの追加もされていますね。[追記]テストは追加したんじゃなくて間違って消していたのを復活させたものだそうです。[/追記]

[ca0f68260e] Nobuyoshi Nakada 2020-04-03 00:47:19 UTC

rubyspec で platform による実行除外に guard を直で使っているところがあったので platform_is を利用するようにするリファクタリング

[3df764721a] Nobuyoshi Nakada 2020-04-01 09:36:54 UTC

default gem の更新を取り込むツール tool/sync_default_gems.rb で cherry-pick で upstream の commit を取り込む時に IO.popen のブロックとして read メソッドを呼び出すようにして fd の leak をさせないようにしています。なるほどー Symbol をブロック引数として渡すのが open 系でもこういうふうに使えるのか。

[668c97b72c] Nobuyoshi Nakada 2020-04-01 09:38:23 UTC

同じく tool/sync_default_gems.rb で upstream から同期する時に無視させるファイルのパターンに .github/ ディレクトリを追加しています。

[691a15ebc7] Nobuyoshi Nakada 2020-04-01 09:40:27 UTC

同じく tool/sync_default_gems.rb で IO.popen にブロックを渡してそこで readlines を呼び出してたのを Symbol のブロック引数渡しする記法にリファクタリング。また cherry-pick して conflict した場合に無視する対象のファイル群は reset してそれで通るようだったら(つまり conflict したのが無視するファイルであったら)通すようにしています。

[810d66f3e7] Kazuhiro NISHIYAMA 2020-04-03 05:37:28 UTC

ext/monitor/lib/monitor.rb のコメントの typo 修正。