ruby-trunk-changes 2019-09-20

今日はメンテナのいない標準添付ライブラリをいくつか消す変更や C++ の拡張ライブラリサポートのためのヘッダの強化などがありました。

[e0c56b45a4] Nobuyoshi Nakada 2019-09-19 13:09:43 UTC

a3daf8e49a36dc5501b020a882d611676a6ad264 で C++ 用ヘッダでメソッド定義の関数の引数の数が間違っているのがちゃんとエラーになるのを確認するための Makefile の記述の生成を extconf.rb にやらせていたのを depend ファイル内に記述するように変更しています。 nmake 対応みたいです。

[82f25404ff] Nobuyoshi Nakada 2019-09-19 14:44:37 UTC

compile.c の COMPILE_RECV() というマクロで private_recv_p() が偽の時の COMPILE() の結果によらず評価値を 0 にしていたのを COMPILE() のエラーを返すようにして呼び元でチェックを追加しています。

[e13b09c450] Nobuyoshi Nakada 2019-09-19 14:45:09 UTC

compile.c で COMPILE_ERROR() と return でエラー処理していたのを専用のマクロ EXPECT_NODE_NONULL() を使うようにリファクタリング

[5e3771aad4] git 2019-09-19 15:20:35 UTC

version.h の日付更新

[9c0d5e51cb] Nobuyoshi Nakada 2019-09-15 14:28:26 UTC

メソッド定義用の関数を rb_define_method() などなどの関数群に渡す時の引数チェックのために GCC 拡張を使った宣言をたくさん並べているところをまとめて行う RB_METHOD_DEFINITION_DECL() というマクロを追加しています。また C++ 用の template を使った宣言も同時に生成するようにしています。

[17a1366399] Nobuyoshi Nakada 2019-09-18 13:52:41 UTC

C++ 拡張ライブラリ用ヘッダ include/ruby/backward/cxxanyargs.hpp に rb_define_virtual_variable()、rb_define_hooked_variable() などのフックつき変数定義用の関数も追加しています。

[7fbd2f7cc2] Dylan Thacker-Smith 2019-07-02 14:06:54 UTC

private メソッドは receiver を省略した記法でしか(__send__ メソッド経由とかでも呼べますが通常のメソッド呼び出しの構文では)呼べませんが、receiver が self の場合は省略したのと同様の扱いで呼べるようにしています。これいいですねー。 [ruby-core:69711] [Feature #11297] [ruby-core:94511] [Feature #16123]

[d583df5259] Nobuyoshi Nakada 2019-09-19 17:16:17 UTC

7fbd2f7cc247ee66e877ab3c88f0274834c6b6c7 の変更での rubyspec のテスト変更に ruby version による guard を追加しています。 [ruby-core:69711] [Feature #11297] [ruby-core:94511] [Feature #16123]

[e6378cdcd8] Nobuyoshi Nakada 2019-09-19 17:17:58 UTC

7fbd2f7cc247ee66e877ab3c88f0274834c6b6c7 の追加変更で代入記号つきのメソッドも private メソッドを self.foo= のように明示的に self を receiver として書けるようにしています。あ、これは別に対応が必要なのか。 [ruby-core:69711] [Feature #11297] [ruby-core:94511] [Feature #16123]

[b80df6e8e0] Nobuyoshi Nakada 2019-09-19 17:32:50 UTC

private メソッドの呼び出しに明示的に self.foo や self.foo= のように self のみ receiver を書けるという仕様変更を NEWS ファイルと doc/syntax/assignment.rdoc、doc/syntax/modules_and_classes.rdoc のドキュメントに反映しています。 [ruby-core:69711] [Feature #11297] [ruby-core:94511] [Feature #16123]

[d3c6fe65e3] Nobuyoshi Nakada 2019-09-20 00:25:30 UTC

make checkout-github-### (### は pull request の番号を入れられる)のターゲットで可変部分を参照する変数名を修正しています。

[45bac62845] Nobuyoshi Nakada 2019-09-20 00:31:55 UTC

make benchmark/% (% の部分は可変)で任意の benchmark 配下のスクリプトを実行するターゲットを追加しています。

[422ae594d9] Nobuyoshi Nakada 2019-09-20 01:29:24 UTC

Array#flatten や #flatten! の実装で途中に利用する st_table 構造体が途中で例外が発生した時などに解放されずメモリリークする可能性があったので Hash オブジェクトで wrap して GC 経由で解放できるようにしています。

[a3b8501614] Hiroshi SHIBATA 2019-09-20 03:12:37 UTC

標準添付ライブラリ cmath を削除しています。メンテナのいない標準ライブラリは外そうという動きがあるようです。 [ruby-core:94954] [Feature #16170]

[67a6662032] Hiroshi SHIBATA 2019-09-20 03:42:53 UTC

同じく標準添付ライブラリ scanf を削除しています。 [ruby-core:94954] [Feature #16170]

[3b56a0934f] Hiroshi SHIBATA 2019-09-20 03:56:18 UTC

同じく標準添付ライブラリ shell を削除しています。 [ruby-core:94954] [Feature #16170]

[37c0839425] Hiroshi SHIBATA 2019-09-20 05:06:22 UTC

標準添付ライブラリ sync を削除しています。 [ruby-core:94954] [Feature #16170]

[9d25c652a9] Hiroshi SHIBATA 2019-09-20 05:21:04 UTC

標準添付ライブラリ thwait を削除しています。 [ruby-core:94954] [Feature #16170]

[1de242de0f] Hiroshi SHIBATA 2019-09-20 05:22:32 UTC

37c083942509dd7e0d8b7ccd3575936a2017c400 の標準添付ライブラリ sync の削除時に tool/sync_default_gems.rb のコメントの消し忘れを修正しています。 [ruby-core:94954] [Feature #16170]

[2683171994] Nobuyoshi Nakada 2019-09-20 06:50:42 UTC

7fbd2f7cc247ee66e877ab3c88f0274834c6b6c7 の private なメソッドを self.foo のように呼べるようにする変更で NEWS や doc/syntax/assignment.rdoc で "." までを receiver としてマークアップしてたのを修正しています。 [ruby-core:69711] [Feature #11297] [ruby-core:94511] [Feature #16123]

[d56a3c0635] Nobuyoshi Nakada 2019-09-20 07:55:16 UTC

e0c56b45a41f052223e23d222ca49c7e0225923e で C++ で引数の数を間違った関数でメソッド定義する拡張ライブラリのビルドが失敗するのを確認するためのターゲット生成を ext/-test-/cxxanyargs/depend へ extconf.rb での生成から移動した時に ruby スクリプト内からコピーしたのでエスケープ避けのため行継続のためのバックスラッシュが二重になったままだったのを修正。またターゲット名も修正しています。

[04c53a1d03] Nobuyoshi Nakada 2019-09-20 08:05:52 UTC

d56a3c063532906158cc0427a42133fadda75cde の追加修正。 ビルド失敗を確認するコマンドで実行する make コマンド名も ruby に渡す引数を shell で変数展開させるようにしてたのを子プロセスに引数で渡すようにしています。ファイルパスに空白が含まれてた場合に分割されてしまうので ruby 内からさらに make 実行する時に配列で引数を渡すようにするため。

[4ffcadd39c] Takashi Kokubun 2019-09-20 08:44:16 UTC

RubyVM.reset_debug_counters や RubyVM.show_debug_counters メソッドの定義のための関数 rb_debug_counter_reset() と rb_debug_counter_show() が引数を受け取らないように宣言されているため、メソッド定義系関数の引数の数のチェックでひっかかっていたのを修正しています。デバッグ用なので USE_DEBUG_COUNTER が定義されてないと使われないので通常のビルドだと気がつかなかったんですね。

[cb1f9fe918] Nobuyoshi Nakada 2019-09-20 07:48:42 UTC

C++ の拡張ライブラリ向けヘッダのテスト用の拡張ライブラリにさらに引数の数のバリエーションを増やしています。またコールバック関数の引数個数ごとに定義するマクロ内で使っている RB_METHOD_DEFINITION_DECL_M1() というマクロの展開する可変長引数を受け取る関数を使うバージョンの定義にも C++ 向けの対応を入れている? みたいです。

[740a98fe10] Nobuyoshi Nakada 2019-09-20 10:03:43 UTC

cb1f9fe9184c67f9a99f6a9702559293613b7e80 のさらに追加修正で RB_METHOD_DEFINITION_DECL_M3() というマクロを追加して関数の引数に (...) と書いたものも許容するようにしています。あれ、これいいのか?