ruby-trunk-changes 2019-07-20

今日は昨日の array.c のマクロの変更の再修正やメソッド引数まわりのドキュメントの整理などがありました。

[3e8d4ff3e5] Yusuke Endoh 2019-07-19 14:41:24 UTC

ae750799c1b28b06d02e50cd26450b9903516526 で array.c で FL_TEST() のかわりに FL_TEST_RAW() をつかって、かわりに RB_TYPE_P() を含んだ assert() を追加してたのを assert 部分を assert_T_ARRAY() という専用の関数に切り出しています。どうやら RB_TYPE_P() が結構複雑な式に展開されるのでそれを assert() にいれてさらに関数マクロ内に入れて、とかしていたせいか gccコンパイル時に大量のメモリを消費してしまっていたそうで、それを解消するためだそうです。

[0a16ff9f83] Yusuke Endoh 2019-07-19 14:50:30 UTC

3e8d4ff3e571bd556898efd94badb66a5dadf4d2 で切り出した assert_T_ARRAY() は should_be_T_ARRAY() と改名して assert() は呼び元で実行するようにしています。assert() の失敗した位置がわからなくなるので assert はマクロ側に戻しているようです。

[de18328192] aycabta 2019-07-19 17:53:40 UTC

irb の completion のためにグローバル変数を取得してたところで true, false, nil といったキーワードもグローバル変数の仲間として追加しています。ふーむ、どっちかというと local_variables に混ぜたほうがいいのではないかな(字面的に)。

[57b7bfad9e] git 2019-07-19 17:54:41 UTC

version.h の日付更新

[71d21f3c75] Jeremy Evans 2019-07-19 16:58:20 UTC

doc/syntax/methods.rdoc に必須キーワード引数についてのドキュメントを追記しています。 [ruby-core:57380] [Bug #8952]

[bf2f84b2ff] Jeremy Evans 2019-07-19 18:18:23 UTC

同じく doc/syntax/methods.rdoc に省略可能引数のデフォルト値の評価順序について(左から右)追記しています。 [ruby-core:57175] [Misc #8905]

[7e2677675d] Jeremy Evans 2019-07-19 18:20:08 UTC

doc/syntax/methods.rdoc のブロックなしで Proc.new をしてそのメソッドのブロックを暗黙のうちに取り出す記法についての記述を非推奨になっているので削除しています。

[ceeb1535dd] Jeremy Evans 2019-07-19 18:23:00 UTC

doc/syntax/methods.rdoc のブロックの yield とブロック引数を受け取って call を呼ぶ場合のパフォーマンスについての記述を削除しています。こんなことまで syntax に書いてあったのか。

[c945d115a5] Jeremy Evans 2019-07-19 18:36:12 UTC

doc/syntax/methods.rdoc にメソッド定義に begin なしの ensure, else も書けることを追記しています。 rescue 節のことだけ書かれてて抜けてたみたいです。

[d304f77c58] Aaron Patterson 2019-07-19 22:12:02 UTC

6bd49b33c859e3893318b8ceb1f3e0dd0988144f や 12762b76cba8ac4623a6c16e1fe60efafa3b7d1c で GC.compact 中の gc_compact_after_gc() の呼び出し前後で GC を抑制するようにしてましたが、gc_compact_after_gc() の中の gc_update_references() の呼び出し前後まで絞っています。また GC.enable の状態を保持しておいて元に戻すようにしています。

[77bb79b8cf] Yusuke Endoh 2019-07-20 00:08:34 UTC

3e8d4ff3e571bd556898efd94badb66a5dadf4d2 と同様に assert() の中に複雑な式を書かないようにするため ELTS_SHARED および RARRAY_EMBED_FLAG のフラグチェックをしている部分を should_not_be_shared_and_embedded() という関数に切り出し、この関数呼び出しを assert() の中に入れるようにしてコンパイル時のメモリ使用量を抑制するようにしています。assert() の展開ってそんなに大きくなるんだなぁ。

[8a38eff2bd] Takashi Kokubun 2019-07-20 06:13:02 UTC

利用する benchmark-driver.gem のバージョンを更新しています。

[56b957e88a] Takashi Kokubun 2019-07-20 06:27:57 UTC

再度 benchmark-driver.gem の利用するバージョンを更新しています。 make run での NameError を修正しているようです。

[1392b821b9] Takashi Kokubun 2019-07-20 06:32:36 UTC

benchmark/lib/load.rb の先頭に使いかたの説明コメントを追記しています。

[81fc3becc7] Yusuke Endoh 2019-07-20 06:42:59 UTC

file.c の statx_notimplement() の宣言に NORETURN() マクロを利用して clang での警告? を抑制しています。

[e7b5b9144a] Takashi Kokubun 2019-07-20 06:44:10 UTC

.travis.yml の 19d592dc82a31adf0bb6f027392cae69615c2394 の修正後も make up に失敗した時のリトライが効いてないらしいので常に --debug を付けて実行するようにしてみています。

[c584dd8460] Samuel Williams 2019-07-20 07:44:49 UTC

.travis.yml の Fiber の coroutine 実装を copy や ucontext にした時のテストを cron only の設定を追加して毎回ビルドしないようにしています。