ruby-trunk-changes 2020-05-14

今日は Fiber.new に blocking キーワード引数が追加され、ブロックする処理で自動的に scheduler (あらかじめ登録しておく)を使って Fiber 切り替えを行うモードが利用できるようにする変更や、1行メソッド定義の記法で rescue を書けるようにする文法変更などがありました。

[8bd27c547c] Yusuke Endoh 2020-05-13 15:44:35 UTC

拡張ライブラリ json の parser で文字(バイト列)の 0 との比較で警告が出てたので明示的な unsigned char へのキャストを追加しています。このコードは ragel というツールが生成してるので make した時に生成後の書き換えルールで置換するようにしています。

[65c5a39578] git 2020-05-13 15:51:04 UTC

version.h の日付更新

[d4acf254e3] Hiroshi SHIBATA 2020-05-13 12:58:27 UTC

bundler のテストで ruby 本体に同梱している状態での bundler.gemspec ファイルのパスを切り替えるようにしてたのを、build_path 配下に移動してテスト実行するようにしています。

[35bbbc751d] Hiroshi SHIBATA 2020-05-13 13:05:45 UTC

ea517cfe23fece12345d76be8f05abad7d5a46fe で bundler のテストで ruby 同梱版では skip するようにしたテストで .bundle ディレクトリの削除を相対パスではなく bundled_app メソッドで求めたパスで指定するようにして skip をとりやめています。

[978e691c86] aycabta 2020-05-12 05:47:03 UTC

拡張ライブラリ readline のテストで Readline.completion_case_fold を変更するものを元の設定を保存しておいて ensure 節で復旧させるように修正しています。

[ca1f6b3eae] aycabta 2020-05-12 12:17:43 UTC

標準添付ライブラリ reline のテストで teardonw で Reline.delete_text を読んでバッファをクリアしておくようにしています。

[68a7c8ad57] aycabta 2020-05-12 22:21:44 UTC

標準添付ライブラリ reline の Reline.completion_proc= や Reline.output_modifier_proc=, Reline.prompt_proc=, Reline.auto_indent_proc=, Reline.dig_perfect_match_proc= などのコールバック登録するメソッドで nil が渡された時に ArgumentError を発生させていたのをやめています。 respond_to?(:call) でチェックしてたのですが nil には特別な意味があるので。

[03a492fe45] aycabta 2020-05-12 22:25:57 UTC

標準添付ライブラリ reline のテストの setup で Reline の各種コールバック設定用メソッド(Reline.completion_proc= など)で nil をセットしておくようにしています。

[4a620aff8d] aycabta 2020-05-14 03:27:13 UTC

readline のテストで Readline.completer_quote_characters や Reline.basic_word_break_characters などの設定を書きかえるテストでも ensure 節で元の設定を復旧させるようにしています。

[0a52015da7] Nobuyoshi Nakada 2020-05-14 08:15:03 UTC

node.h の code_loc_gen() の引数に const 修飾子をつける修正。

[336119dfc5] Nobuyoshi Nakada 2020-05-14 08:19:39 UTC

tool/extlibs.rb から Downloader.cache_file を呼ぶところで cache directory を渡すのにオプション引数で渡していたのを通常引数で渡すようにインターフェース変更に追随しています。また戻り値が Pathname なので to_path で文字列化するようにしています。

[0e3b0fcdba] Samuel Williams 2020-05-14 10:10:55 UTC

Fiber を作成する時に blocking キーワード引数を追加して、これに false を指定することで IO や Mutex など block する処理で自動的に Thread.scheduler で取得できるようにした Thread ごとに scheduler というオブジェクトを使って別の Fiber に切り替えることができるようにしています。デフォルトの Scheduler 実装というのは提供されないようで自分で用意するみたいですね。 [Feature #16786] https://github.com/ruby/ruby/pull/3032

[634eeb4353] Nobuyoshi Nakada 2020-05-14 10:57:39 UTC

0e3b0fcdba70cf96a8e0654eb8f50aacb8024bd4 で追加されたテスト……だけじゃなくて csv のテストもですが行末の空白除去。あれ、行末空白除去の bot は動かなかったのかな。

[d7d0d01401] Nobuyoshi Nakada 2020-05-14 08:27:48 UTC

1行メソッド定義の記法 (def meth(x) = ...) に rescue 節というか後置 rescue が書けるようにしています。うーむ、1行メソッド本当にいるかな……。