ruby-trunk-changes 2020-04-14

今日は 1行メソッド定義に右代入を書けるようにする変更や MJIT の C 実装関数 inline 化に向けての変更などがありました。

[67bcac879a] Nobuyoshi Nakada 2020-04-13 09:44:33 UTC

def m(x) = ... による1行メソッド定義の本体部分に右代入を書けるようにしています。うわぁ、これはなかなか慣れない…。

[c28e230ab5] Burdette Lamar 2020-04-13 13:57:10 UTC

Hash.new や Hash.try_convert の rdoc 用コメントのサンプル追加などして説明を追記しています。

[a6f7458ea8] Benoit Daloze 2020-04-13 16:23:39 UTC

c9b3aa84be6577a9df8a0a1ee12715b114a10d9b の Process.clock_getres の rdoc 用コメントでバグがあると追記したところで実際に問題が観測された clock の種類と OS について列挙しています。 [ruby-core:97609] [Bug #16740]

[fb40495cd9] git 2020-04-13 16:25:13 UTC

version.h の日付更新

[b9d3ceee8f] Takashi Kokubun 2020-04-13 19:17:45 UTC

MJIT で C 実装メソッドの inline 化(ってことは直接関数を呼び出すってことだろうか)の布石として VM_METHOD_TYPE_CFUNC のメソッド呼び出しを直接 vm_call_cfunc() を呼ぶ最適化を行うようにしています。この変更は実際には optcarrot でのベンチマークは遅くなるそうで、コンパイル時間が伸びるからか、コードサイズが大きくなって命令キャッシュの利用が非効率になるかかも、とのことですが、最終的な C 実装メソッドの inline 化に向けて一旦入れるとのこと。

[310ef9f40b] Takashi Kokubun 2020-04-14 03:32:59 UTC

b9d3ceee8f8e4fade1eddc0c18abee59f9c1eee7 の続きで MJIT コンパイルした C 実装メソッド呼び出しでキーワード引数の処理などが不要な時のショートカットを追加しています。 #3027

[c79e3a5957] Kazuhiro NISHIYAMA 2020-04-14 03:38:30 UTC

Regexp#match と String#match の rdoc 用コメントの call-seq にブロックを渡したケースについて追記しています。

[9fa24018b7] Nobuyoshi Nakada 2020-04-14 04:10:28 UTC

common.mk で ext/ripper/ripper.c を生成する時のコマンドで make を実行する時に環境変数 LANG=C を設定するようにしています。生成される y.output に日本語などが混じらないようにするためらしいです。

[f883d6219e] Takashi Kokubun 2020-04-14 04:37:42 UTC

benchmark/ ディレクトリ内の vm1_xxx と vm2_xxx の prefix を vm_xxx に統一いています。 #3028

[70b7304f03] Takashi Kokubun 2020-04-14 06:08:24 UTC

MJIT のテストで AppVeyor での Visual Studio 12.0 で precompiled header の作成がうまくいかないらしくて、テストを skip させるため VS のバージョンチェックや MJIT がちゃんと動くかの確認をするメソッドを追加しています。

[e667750364] Takashi Kokubun 2020-04-14 06:11:44 UTC

70b7304f036a55d526e3c67fe31ad3ce949ae13f で追加した VS のバージョンや MJIT がうまく動くかのチェックのために追加したメソッドをちゃんと呼んでなかったので修正しています。

[7a85d31c29] Nobuyoshi Nakada 2020-04-14 05:49:48 UTC

拡張ライブラリ date で Cygwingcc での警告抑制のための明示的キャスト追加。

[f888626552] Takashi Kokubun 2020-04-14 06:48:39 UTC

70b7304f036a55d526e3c67fe31ad3ce949ae13f の MJIT テスト skip のために Visual Studio のバージョンをチェックするメソッドで RbConfig::CONFIG['MJIT_CC'] をチェックしてたのを MJIT コンパイルを試した時のエラー出力に "x64-mswin64_120" が含まれていることをチェックするように変更しています。 AppVeyor で MJIT_CC が設定されていなかった模様。

[a520ee4763] Nobuyoshi Nakada 2020-04-14 10:47:17 UTC

parse.y の arg のアクションで value_expr() を呼び出してましたが、そのノードである arg_rhs のアクションで既に呼び出してたので省略しています。