ruby-trunk-changes 2020-04-10

今日は => による右代入と Endless method definition という一行メソッド定義の記法という新しい文法が experimental というステータスで追加されました。またクラス変数で警告を出していた挙動を例外発生に変更しています。

[614d816a1f] Nobuyoshi Nakada 2020-04-10 01:37:15 UTC

io.c の io_fwritev()、io_writev()、rb_io_writev() の argv 引数に const 修飾子を追加しています。

[230efaf2ae] git 2020-04-10 01:38:38 UTC

version.h の日付更新

[63a5412db7] Nobuyoshi Nakada 2020-04-10 01:52:33 UTC

fd0222caedf1be56faa004656bbf145522abbe68 の rb_uninterruptible() の変更で Kernel#p の複数の引数の処理のあいだ割り込みを抑制してたのを、1つの出力(と改行)のあいだのみ割り込みを抑制するようにしています。なんで複数引数まとめて抑制してたのかなとは思った。 r38225 の変更の前後では IO まわりの割り込みの変更がいくつかありますが、Kernel#p で複数引数まとめて割り込み抑制した動機についてはチケット参照などはなくよくわからないですね。

[443389effc] Koichi Sasada 2020-04-10 02:20:35 UTC

9e6e39c3512f7a962c44dc3729c98a0f8be90341 の include/ruby/ruby.h のヘッダの分割で大量のヘッダファイルに分けられた影響でビルドがめっちゃ遅くなったということで、ruby/3/compiler_since.h, ruby/3/warning_push.h, ruby/3/has/attribute.h などいくつか冗長な include をしていたところを削っています。 また include/ruby/3/compiler_is.h にはファイル全体の #ifndef と #define で重複した #include で定義を省く guard を追加しています。 [ruby-core:97757] [Bug #16772]

[d94960f22e] Koichi Sasada 2020-04-10 04:33:52 UTC

common.mk の依存関係を更新しています。

[1b2d351b21] Nobuyoshi Nakada 2019-06-11 13:57:33 UTC

しれっと "=>" による右代入(val => var でローカル変数 var に val の評価値が代入される)が追加されています。 "=>" 衝突が激しそうだけど大丈夫かな。parse.y の変更というか追加は割と簡素ではありますが。 [ruby-core:93126] [Feature #15921]

[4b853932ea] 卜部昌平 2020-04-09 06:47:44 UTC

mjit_worker.c で -Wdeprecated-declarations オプションを無視させる pragma を __GNUC__ が定義されていたら効くようにしてましたが icc では __GNUC__ が定義されてるけどこのオプションは存在せずエラーになる? みたいなので preprocessor の条件に __has_warning("-Wdeprecated-declarations") も追加しています。

[133ae0807d] 卜部昌平 2020-04-09 06:55:55 UTC

include/ruby/3/has/builtin.h で RUBY3_HAS_BUILTIN___builtin_unreachable を定義する時に値を忘れてたのを修正しています。これが 6163a4e1b33ed7df27d0c37e835ce04407857a16 で +0 を追加しないといけなかった理由ですね。

[e43237b115] 卜部昌平 2020-04-10 01:19:39 UTC

configure でコンパイラの組み込み関数 __builtin_unreachable() の有無のチェックを GCC 系のコンパイラのみ行なうようにしてましたが、icc でも存在するらしいので常にチェックしてみるようにしています。

[75802bcff1] 卜部昌平 2020-04-09 07:25:17 UTC

configure でチェックする警告関係のコンパイラオプションの -diag-disable に渡す警告の id に 1684 と 2312 を追加しています。 ポインタと VALUE の変換時にでる警告を無視するためみたいです。

[d69c532685] 卜部昌平 2020-04-10 01:23:17 UTC

Oracle Developer Studio のコンパイラの時に unreachable code の警告を抑制するために -erroff というコンパイラオプションを試すようにしています。警告抑制のための組み込み関数などはないのでオプションで unreachable code の警告を全て抑制するしかないそうです。

[3e92785fd6] 卜部昌平 2020-04-09 07:07:29 UTC

include/ruby/3/assume.h で icc での警告抑制のため RUBY3_ASSUME の定義に警告番号 2261 を無視させる pragma の一緒に定義させるようにしています。

[4e7d84cf87] 卜部昌平 2020-04-09 03:22:54 UTC

include/ruby/3/core/rstring.h で未初期化の const 修飾子をもつメンバーがあるというのが icc で警告になるので pragma でこの警告を部分的に抑制させるようにしています。

[defc0ee9d1] 卜部昌平 2020-04-10 04:55:08 UTC

同じく C++ 用ヘッダのテストのための拡張ライブラリ ext/-test-/cxxanyargs/cxxanyargs.cpp でも警告抑制のための pragma を追加しています。

[900e83b501] Jeremy Evans 2020-03-27 22:08:52 UTC

クラス変数の扱いで警告の対象になっていたトップレベルでのクラス変数と、子クラスで宣言されてたクラス変数に親クラスで上書きした時の挙動を RuntimeError 例外発生に変更しています。うーん、まあ長年警告を出してたようだからいいのかな。 [ruby-core:85749] [Bug #14541]

[878e21c6cd] Nobuyoshi Nakada 2020-04-10 08:28:02 UTC

1b2d351b216661e03d497dfdce216e0d51474664 で追加した => での右代入の NEWS エントリに [EXPERIMENTAL] と追記しています。 [ruby-core:93126] [Feature #15921]

[e8f53692ca] Nobuyoshi Nakada 2020-04-01 14:58:02 UTC

1行でメソッド定義する Endless method definition なる記法が追加されました。これ April fool のジョークとして作られたチケットだったみたいですけど本当に入ったんだ。

def foo(x) = x * x

のように def と代入記号で定義します。これも NEWS エントリには [EXPERIMENTAL] がつけられています。 [ruby-core:97652] [Feature #16746]