ruby-trunk-changes 2020-10-26

今日は一行 pattern match の記法に in のかわりに => を使うようにする変更などがありました。

[e880d075f8] Nobuyoshi Nakada 2020-10-25 11:52:46 UTC

Dir.glob の rdoc 用コメントのパターン "**" の説明でファイル名まで含めてマッチするというのを明記しています。なるほど、チケットをみると "**" がファイルにもマッチしてておかしいみたいな起票ですがディクトリで止めたいなら "**/" ですね。しかしシェルとは挙動が違うということで(そして bashzsh でも異なるらしくて)、よくよくみると結構注意が必要なんですねこれ。 [ruby-core:100525] [Bug #17283]

[25a332f5cf] Nobuyoshi Nakada 2020-10-25 13:06:44 UTC

99e067eac6fd2babcdd56142493ef0396744af85 で MSVC でのコンパイル向けに修正してた #pragma の利用を削除して getpid(3) を wrap した ubf_pid() という関数を定義して使うようにして #pragma による警告抑制を不要にしています。

[ee54075a94] Marc-Andre Lafortune 2020-10-25 20:38:37 UTC

bootstraptest/test_ractor.rb の行末の空白除去。

[5e6f9fd83a] Marc-Andre Lafortune 2020-10-25 20:44:53 UTC

bootstraptest/test_ractor.rb の assertion のいくつかにコメントを追加しています。

[8376cae25a] git 2020-10-25 20:45:34 UTC

version.h の日付更新

[9c8f0a34df] Marc-Andre Lafortune 2020-10-25 22:09:51 UTC

bootstraptest/test_ractor.rb のコメントの sharable -> shareable の typo 修正。

[ff2276ef8c] Jeremy Evans 2020-10-25 22:56:10 UTC

variable.c および vm_insnhelper.c で rb_ractor_shareable_p() が偽の時に発生させる例外メッセージでも sharable -> shareable の typo 修正。

[b6d0b3dfaf] Nobuyoshi Nakada 2020-10-25 13:09:56 UTC

rubyspec の C API テスト用の拡張ライブラリで他にも #pragma GCC diagnostic を使っているところがあったので #ifdef __GNUC__ でくくるようにしています。

[396e921044] Nobuyoshi Nakada 2020-10-26 00:01:27 UTC

VM 用の C コードを生成するツールの一部の tool/ruby_vm/helpers/c_escape.rb でコメントアウトするメソッドでコメントアウトするコード片のなかにさらに /* */ のようなコメントがあった時に /* もエスケープしてネストしたコメント(実際には C の /* */はネストは考慮されないですが)にならないようにしています。

[3cb03a00a8] Nobuyoshi Nakada 2020-10-26 00:05:08 UTC

common.mk のコンパイル時にバイナリ内に埋め込む prelude の ruby スクリプトを列挙する変数 COMPILE_PRELUDE に ruby_vm/helpers/c_escape.rb も追加しています。template/prelude.c.tmpl が使ってるからとのこと。

[507af75415] Nobuyoshi Nakada 2020-10-26 00:09:45 UTC

Dir.glob の rdoc 用コメントのサンプルコードで File.join で連結してたところを直接 "/" で連結したリテラルを書くように変更しています。ああ、 C のコメントとして扱われてしまうから File.join してたけど 396e92104474921ee58ff75ff63d3db0d503dacc で対応したから不要になったということですね。

[ba24aee292] Benoit Daloze 2020-10-26 07:06:33 UTC

99e067eac6fd2babcdd56142493ef0396744af85 および 25a332f5cf295e4b72814c39d87b4b3e2967dd68 で rubyspec の C API テスト用拡張ライブラリに MSVC 向けの対応をしたものを revert して、この部分を利用するテスト自体を削除しています。

[3673c3eafc] Benoit Daloze 2020-10-26 07:20:48 UTC

spec/ruby に upstream からマージ。 Pathname.glob のテストが追加されています。

[fbb2d30ee6] Benoit Daloze 2020-10-11 11:51:34 UTC

rubyspec に ruby 実装された builtin function を利用したメソッド実装が UnboundMethod#source_location や Kernel#caller や Kernel#caller_locations でスタックトレースからソースコード位置を取得された時に <internal:〜> みたいな表示になることを確認するテストを追加しています。

[cffdacb15a] Benoit Daloze 2020-10-11 11:36:25 UTC

Kernel#warn の uplevel 引数でスキップするスタックフレーム数に ruby 実装された組み込みメソッドのぶん(<internal: ...> と表記されるもの)は無視させるようにしています。 [ruby-core:100357] [Bug #17259]

[52c630da00] Nobuyoshi Nakada 2020-10-26 09:00:24 UTC

pattern match の後置 in による 1行 pattern match を in のかわりに "=>" を使うように変更しています。ちょっと右代入っぽくなりますね。というか、このために右代入は入らないことになるようです。 https://github.com/ruby/ruby/pull/3703 [ruby-core:100371] [Feature #17260]

[69837229d7] Kenta Murata 2020-10-26 09:43:30 UTC

Kernel#Rational や Rational.convert で 2つの引数から Rational を作る時に両方の引数が Integer 以外の Numeric だった時にまず第1引数を Kernel#Rational で変換してから Numeric#/ メソッドで割るようにしています。第1引数が BigDecimal の時に結果が Integer の時と一致しなくなる場合があったようです。 https://github.com/ruby/ruby/pull/3702 [ruby-core:96942] [Bug #16518]