ruby-trunk-changes 2019-08-13

今日は ObjectSpace::WeakMap の GC.compact 対応の漏れの追加修正、VM 関係の関数群に rb_execution_context_t や rb_objspace_t を明示的に引数に渡してグローバルな変数から取得する位置を呼び元へ引き上げていくような変更などがありました。

[8d302c914c] Yusuke Endoh 2019-08-12 14:12:27 UTC

String#sub および String#gsub の rdoc 用コメントに後方参照の記法および文字列リテラル内ではバックスラッシュがエスケープに使われるのでたくさんバックスラッシュを書かないといけない点についての追記をしています。

[edd2538268] Takashi Kokubun 2019-08-12 14:36:42 UTC

.github/workflows/check_branch.yml というファイルを追加して pull request の親ブランチが master でないとエラーにするようにしています。

[b8b5e7d5be] Nobuyoshi Nakada 2019-08-12 10:39:04 UTC

defs/gmake.mk の pull-github コマンドで git filter-branch でコミットログに pull request の参照を追加するのをやめています。 git notes に書くようにしたので不要になったってことでしょうか。

[4d3fb24736] git 2019-08-12 15:51:04 UTC

version.h の日付更新

[957bdfbab8] Aaron Patterson 2019-08-12 16:21:37 UTC

8d302c914c15af4a29c8b8af801281fa117a7ad2 の String#sub と String#gsub の rdoc 用コメントの英文を修正しています。

[4e418a6c06] Takashi Kokubun 2019-08-12 16:29:37 UTC

edd25382687c840f10eec23d72fa08ebd3515fbf で追加した .github/workflows/check_branch.yml のコメントにこのジョブの目的を追記しています。

[76a928bac2] Aaron Patterson 2019-08-09 23:05:42 UTC

RubyVM::InstructionSequence の中のキーワード引数のデフォルト値を保持する VALUEGC.compact での移動に対応しているのに pin してたので pin なしの mark 関数を使うように修正しています。

[6749682f82] Aaron Patterson 2019-08-09 23:27:43 UTC

33d7a58ffb193cb2ca200ff5b3c649a72d190d21 の ObjectSpace::WeakMap の GC.compact による移動対応で wmap_compact() で struct weakmap::final メンバーの移動対応が漏れてたので修正しています。

[e688ab26c7] git 2019-08-12 16:34:36 UTC

76a928bac2f37e7aa631a6b6dd5320920d6c1b42 のインデントのタブを空白に展開。

[3979f22cc1] Takashi Kokubun 2019-08-12 16:45:10 UTC

.github/workflows/check_branch.yml のヘッダコメントに master ブランチは GitHub から git.ruby-lang.org の cgit への動機も試験的に開始していることを追記しています。 [Misc #16094] https://github.com/ruby/ruby/pull/2350

[404850e134] Jeremy Evans 2019-08-12 02:42:59 UTC

組み込み例外クラスである fatal の rdoc 用コメントに fatal は rescue で捕捉できないと書かれてましたが、実際には自分で raise したら rescue できるので削除しています。まあでも自分で raise することはないし rb_fatal() の場合は TAG_FATAL で JUMP するので、こいつは rescue はできないはず。 [ruby-core:67297] [Bug #10691]

[aac4d9d6c7] Aaron Patterson 2019-08-12 20:09:21 UTC

GC.compact で移動できるオブジェクトを mark する関数 rb_gc_mark_no_pin() を rb_gc_mark_movable() に改名しています。

[0c2d81dada] Nobuyoshi Nakada 2019-08-12 08:44:30 UTC

ruby のプロセス終了時の処理 ruby_finalize_0() および ruby_finalize_1() をそれぞれ rb_ec_teardown() と rb_ec_finalize() と改名して rb_execution_context_t を引数に受け取るようにして中で GET_EC() を使うのを避けるようにリファクタリングしています。また rb_trap_exit() も rb_vm_trap_exit() と改名し引数に rb_vm_t を受け取るようにしています。そして rb_exec_end_proc()、rb_gc_call_finalizer_at_exit()、rb_trap_exit()、rb_clear_trace_func() の宣言は include/ruby/backward.h に移動して deprecated にマークしています。

[917d766508] Nobuyoshi Nakada 2019-08-12 13:33:46 UTC

gc_verify_internal_consistency() を VALUE でなく rb_objspace_t* を引数に受け取るようにして、メソッド定義に使う関数は gc_verify_internal_consistency_m() と改名しています。

[ac656bc2bd] Nobuyoshi Nakada 2019-08-13 00:43:11 UTC

gc.c の profiling 用のフラグに GPR_DEFAULT_REASON という定数を追加して gc_compact() と gc_compact_after_gc() からの rb_gc() 呼び出しをこの定数を渡した garbage_collect() 呼び出しに変更しています。これもメインはフラグの定数追加というより gc_compact() から rb_gc() ではなく直接 garbage_collect() を呼ぶようにして引数の objspace で rb_objspace_t を指定するようにするのが主眼のような気がします。

[aec93417f0] git 2019-08-13 00:50:34 UTC

0c2d81dada88b5a3946c3162187df4223bfe6b4f のインデントのタブを空白に展開。

[0c1c42c43a] Nobuyoshi Nakada 2019-08-13 01:33:19 UTC

gc.c の gc_check_references_for_moved() の引数も VALUE から rb_objspace_t* に変更しています。なんか元の引数は dummy で呼び元でも常に Qnil を渡してましたが objspace を引数で指定するようにしている変更の一環のようです。

[2f744f53c1] Nobuyoshi Nakada 2019-08-13 01:56:21 UTC

ObjectSpace の全オブジェクトを traverse する objspace_each_objects() は引数に struct each_obj_args へのポインタを VALUE として渡してましたが、そのメンバーを直接引数として受け取るようにして、さらに rb_objspace_t も引数で受け取るようにしています。これも引数で明示的に受け取るようにしてグローバルな rb_objspace を使うのを避けるようにする変更の一環ですかね。

[c215a6f282] Nobuyoshi Nakada 2019-08-13 02:03:54 UTC

r60856 で常に 1 を定義するようにした ENABLE_VM_OBJSPACE ですが、もう定義自体を削除して preprocessor による分岐も消しています。

[f78916e3c1] git 2019-08-13 02:20:39 UTC

2f744f53c17cd1534c685d6c5f57af66ac5f8322 のインデントのタブを空白に展開。

[0d1af9f942] Nobuyoshi Nakada 2019-08-13 03:24:15 UTC

make commits で git notes のデフォルトの refs も push するようにしています。

[75d9fa8b07] Nobuyoshi Nakada 2019-08-13 03:24:55 UTC

tool/lib/vcs.rb の VCS.detect の第1引数を省略可能にして、デフォルトでカレントディレクトリ(".")を利用するようにしています。

[ffab84fa3e] Kazuhiro NISHIYAMA 2019-08-13 06:27:46 UTC

標準添付ライブラリ csv の rdoc 用コメントの typo 修正。

[d0b2e6412e] Nobuyoshi Nakada 2019-08-13 06:39:49 UTC

ruby_cleanup() の本体部分を引数に rb_execution_context_t* を受け取る rb_ec_cleanup() という関数として切り出して呼び元で明示的に GET_EC() で ec を取得するようにしています。

[e75e548cf9] Nobuyoshi Nakada 2019-08-13 12:11:58 UTC

defs/gmake.mk に make spec/bundler/xxx で bundler のテストのうち指定したファイルのみ実行するターゲットを追加しています。