ruby-trunk-changes 2019-06-20

今日は Complex#<=> メソッドの追加や racc の default gem 化などがありました。

[2abe548f35] Samuel Williams 2019-06-19 14:05:04 UTC

b24603adff8ec1e93e71358b93b3e30c99ba29d5 からの VM スタックのマシンスタック内での確保の変更で thread_start_func_2() での rb_execution_context_t の初期化の前に GVL 確保をするように修正しています。

[65944e96d3] Yusuke Endoh 2019-06-19 14:10:40 UTC

racc のテストで実際に racc 起動してコード生成させるテストでタイムアウトを伸ばしています。

[b9ef35e4c6] Jeremy Evans 2019-06-05 04:41:02 UTC

Complex#<=> の比較演算子メソッドを追加しています。どういう比較するのかと思ったら Complex は虚数部が 0 の時だけ比較に使って、そうでない時は nil を返すようにしています。なんか <=> で暗黙に nil を返すのやめようという運動がちょっと前にあったような気がするけど、これはいいのかな? [ruby-core:92694] [Bug #15857]

[fdfe51d169] git 2019-06-19 19:07:31 UTC

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

[208cc6e3d0] git 2019-06-19 19:07:35 UTC

version.h の日付更新

[a0af60c7f2] Jeremy Evans 2019-06-13 14:55:26 UTC

rubyspec から Float::NAN を含む配列を比較した時のテストを削除しています。これは undefined behavior だということ。 [ruby-dev:50715] [Bug #15432]

[91c4ef0151] Samuel Williams 2019-06-19 23:31:22 UTC

構造体 rb_execution_context_t の mark 処理で cfp も NULL のタイミングができたのでチェックして NULL の時にアクセスしないようにしています。

[25049a6e81] Samuel Williams 2019-06-19 23:32:08 UTC

thread_start_func_2() などにデバッグ出力の追加と VM_ASSERT() でのチェック追加。また ruby_thread_set_native() を呼ぶタイミングを th->ec->machine.stack_{start,maxsize} の設定後に移動しています。

[626483721a] Samuel Williams 2019-06-19 23:56:06 UTC

rb_fiber_close() にて vm_stack をクリアするのと同時に ec->cfp の明示的な NULL リセットを追加しています。

[6bf1285b20] Samuel Williams 2019-06-20 00:07:15 UTC

25049a6e818d879aecb88379753f1e215b915f93 で追加した VM_ASSERT() の式の変数名 typo 修正。

[dbc2b89bc0] Samuel Williams 2019-06-20 01:41:18 UTC

rb_execution_context_t の vm_stack と cfp の両方をクリアする rb_ec_clear_vm_stack() という関数を導入して thread_cleanup_func_before_exec() でこれを呼ぶようにしています。

[199310997f] git 2019-06-20 01:41:46 UTC

dbc2b89bc042d73e60aeb7d56686aa28d82e2622 の行末の空白除去。

[15c4f6aed2] Samuel Williams 2019-06-20 02:16:08 UTC

dbc2b89bc042d73e60aeb7d56686aa28d82e2622 で追加した thread_cleanup_func_before_exec() からの rb_ec_clear_vm_stack() の呼び出しをやっぱり if(0) のブロック内に入れて一時的に? 実行しないようにしています。

[7d9d1ed463] Samuel Williams 2019-06-20 02:55:43 UTC

15c4f6aed29b4f9f8d2c911548ac87756239b592 やはっぱりやめて rb_ec_clear_vm_stack() は呼び出すんだけどその中で ec->cfp のクリアはしないようにしています。これ dbc2b89bc042d73e60aeb7d56686aa28d82e2622 で別の明示的に ec->cfp = NULL してたところも rb_ec_clear_vm_stack() の呼び出しにするようにしているんだけどいいのかな。

[c26c514494] Samuel Williams 2019-06-20 03:30:29 UTC

91c4ef01512d1ba285ccb3c3cb03e611257790e8 以降の一連のコミットを revert しています。

[e4cafa393f] Samuel Williams 2019-06-19 23:31:22 UTC

91c4ef01512d1ba285ccb3c3cb03e611257790e8 以降の一連のコミットのリトライ。えーと結局違うのは…コメントと thread_start_func_2() での ec->cfp の VM_ASSERT() を削っただけですね。

[c4c47b792d] aycabta 2019-06-20 06:56:10 UTC

reline の Reline::LineEditor#input_key から auto indent ありの複数行変数の処理を process_auto_indent というメソッドに切り出して @previous_line_index をチェックして early return するのを追加しています。コメントによると up/down キーによる行の移動だけの時は動かさないようにしているようです。

[45e939f5ad] Hiroshi SHIBATA 2019-06-20 05:31:41 UTC

racc に gemspec ファイルをして追加して default gem 化しています。

[71ebf6d8e5] Hiroshi SHIBATA 2019-06-20 06:00:40 UTC

tool/sync_default_gems.rb の racc の同期処理で cparse 用のサブディレクトリを掘るように修正しています。

[5bbfca7b1d] Hiroshi SHIBATA 2019-06-20 06:00:54 UTC

racc の不要なファイル lib/racc/parser-text.rb を削除しています。

[557bcd8774] Hiroshi SHIBATA 2019-06-20 06:59:20 UTC

NEWS ファイルに racc のバージョン更新とコマンド追加について追記しています。

[3aa8691d52] Hiroshi SHIBATA 2019-06-20 07:10:24 UTC

doc/maintainers.rdoc に racc のメンテナ追加と doc/standard_library.rdoc での racc の記述を default gem のところに移動しています。

[e6fbdde229] Kazuhiro NISHIYAMA 2019-06-20 08:40:08 UTC

557bcd877490092c826a56789d78dc73f8ad0321 の NEWS ファイルのエントリの typo 修正。

[e31602b78d] Nobuyoshi Nakada 2019-06-20 08:41:01 UTC

test/racc/helper.rb の警告除去のためメソッド呼び出しに明示的なかっこを追加しています。

[3077cb6912] Nobuyoshi Nakada 2019-06-20 09:20:38 UTC

同じく test/racc/helper.rb で $VERBOSE を弄っていたので begin-ensure で囲んで ensure 節で復旧させるようにしています。

[f607e43352] Samuel Williams 2019-06-20 08:29:35 UTC

thread_cleanup_func_before_exec() で fork 後に main 以外の全 Thread の root fiber の状態を FIBER_TERMINATED にセットするようにしています。 しかしこれの呼び元を調べてて気がついたんですが rb_thread_atfork_before_exec() って関数今はどこからも呼ばれてないみたいですね。 rb_thread_atfork() 経由で呼ばれてるので fork 時に呼ばれるようですが。

[9e7a8a4351] Samuel Williams 2019-06-20 11:12:42 UTC

a6a4e86029f16415767b579e62691f09b1fb6075 で /build* を無視するように .gitignore に追加してましたがディレクトリの時だけ無視するように最後に "/" を追加しています。