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 のテストのうち指定したファイルのみ実行するターゲットを追加しています。

ruby-trunk-changes 2019-08-12

今日は Ubuntu および Windows 環境でのテストも GitHub Actions を利用するようにする変更などがありました。

[11a09d78c1] Hiroshi SHIBATA 2019-08-11 10:12:38 UTC

.github/workflows/ubuntu.yml を追加して GitHub Actions で Ubuntu でのテスト実行も行うようにしています。

[cfb192a7b9] Hiroshi SHIBATA 2019-08-11 10:33:03 UTC

.github/workflows/macos.yml および .github/workflows/ubuntu.yml に make test-bundled-gems の実行も追加して bundled gems のテストを GitHub Actions で行うようにしています。

[fc97aa9313] Hiroshi SHIBATA 2019-08-11 22:07:54 UTC

.github/workflows/ubuntu.yml で $HOME ディレクトリおよび /usr/share 配下の owner 以外の書きこみ権限を落として World writable 警告の除去をするようにしています。

[e96321d006] Hiroshi SHIBATA 2019-08-11 22:25:11 UTC

.github/workflows/ubuntu.yml から make check の実行を削除しています。test-all および test-spec は他の CI ツールでカバーしてるからなくてもいいってことかな。

[8a8f680f01] Hiroshi SHIBATA 2019-08-11 23:23:27 UTC

bb2f24251f011d64d369d78f344e298cc9486473 で rubyspec で一部のテストを skip させるために環境変数 CI というのを使うようにしていましたが GITHUB_ACTION という環境変数が使えるのでそれをみるようにしています。また rubyspec の context のタグが non_windows という名前であいまいだったので no_color_tty として色付けができない場合の skip だとわかるようにしています。

[ed9d59afc8] Hiroshi SHIBATA 2019-08-12 00:01:00 UTC

rubyspec の Process.setproctitle のテストを GitHub Actions でさらに Linux の時だけ skip させるためにタグを追加しています。

[bf1f872991] Hiroshi SHIBATA 2019-08-12 03:08:42 UTC

azure-pipelines.yml から GitHub Actions で実行するようにした Ubuntu でのテストを削除しています。 https://github.com/ruby/ruby/pull/2340

[63d3c4fecd] git 2019-08-12 03:59:08 UTC

version.h の日付更新

[b1ad628cdf] Takashi Kokubun 2019-08-12 04:45:55 UTC

.travis.yml の make test-all の実行を travis_wait コマンド経由で実行するようにしています。 -v を消したので復活させてているみたいです。

[2b3d84d584] Nobuyoshi Nakada 2019-08-11 16:04:21 UTC

51d9d0f8887820ce52234c80d78388b002e6e628 で defs/gmake.mk の fetch-gibhub コマンドで既に Pull Requests のブランチが存在するかチェックするのに git log を使っていましたが git rev-parse を利用するように変更しています。

[4f10a61eaa] Takashi Kokubun 2019-08-12 05:30:42 UTC

GitHub Actions でもやはり公式のアクションでのリポジトリの clone は失敗することがあるので、tool/travis_retry.sh を tool/ci_retry.sh に改名して独自のコマンドとしてリトライ付きで git clone するようにしています。

[b1ef14176b] Takashi Kokubun 2019-08-12 05:35:49 UTC

4f10a61eaaf5bfe7e4c53edc79c5e27a7bd1ae33 でリトライつきで git clone しようとしましたが、git clone 前にはまだ tool/ もないわけなので、リトライはあきらめて git clone するようにしています。また tool/ci_retry.sh のファイル名も tool/travis_retry.sh に戻しています。

[0d0ff8277f] Nobuyoshi Nakada 2019-08-12 06:13:09 UTC

include/ruby/intern.h から rb_trap_exec() の prototype 宣言を削除しています。公開されてるヘッダですがずいぶん前から存在しなくなってた関数なのでほぼ使われてないのではないかと。

[765cc17c08] Sho Ito 2019-08-11 15:11:34 UTC

irb の man page を更新してオプションの説明などを追加しています。

[d5250808e1] Takashi Kokubun 2019-08-12 07:36:56 UTC

.github/workflows/macos.yml で homebrew でインストールする openssl のバージョンを 1.1 に固定するようにしています。

[5ee11a95ff] Takashi Kokubun 2019-08-12 08:44:02 UTC

.github/workflows/macos.yml で brew update に timeout とリトライつきで実行するようにしています。Travis-CI でもよく失敗しているので予防的に? 対処しているようです。

[927a43a503] Takashi Kokubun 2019-08-12 08:46:11 UTC

.github/workflows/macos.yml では (Travis-CI では必要だった) ccache のインストールが不要だったみたいなので HomeBrew でのインストールを削っています。

[5edf921e9b] Takashi Kokubun 2019-08-12 08:55:57 UTC

5ee11a95ffbf194a73d1bea300a35f5d6250d203 の brew update の timeout とリトライは timeout コマンドが GitHub Actions の macOS 環境に存在しなかったようなので revert しています。

[066a3498c6] Nobuyoshi Nakada 2019-08-12 10:01:57 UTC

tool/lib/vcs.rb のリリース時に ChangeLog を生成するためにコミットログを出力するときに git log に --notes=commits を指定して git notes も出力するようにしています。 9fe7e042f50ba7bcd7b64e48b4e6077eeead2861 で pull requests を merge した時に git notes でその参照を残すようにしたのでそれも取り込めるようにしているようです。

[f9149c5596] Takashi Kokubun 2019-08-12 10:13:30 UTC

NEWS ファイルのリポジトリsvn から git への移行についての記述のちょっとした変更。

[1bec27f05b] Takashi Kokubun 2019-08-12 10:52:37 UTC

.travis.yml の sudo apt-get update に exec をつけて子プロセスを生成しないようにしています。 travis_retry に終了ステータスを正しく認識させるためとのこと。

[bbc5e97b95] Hiroshi SHIBATA 2019-08-12 09:06:06 UTC

.github/workflows/windows-2016.yml を追加して Windows 環境でのビルドも GitHub Actions へ移行しています。 GitHub Actions 最強か。

[981f0be6ff] Hiroshi SHIBATA 2019-08-12 09:17:57 UTC

bbc5e97b959ba526036f0f6c95682c1721a87130 で追加した .github/workflows/windows-2016.yml は configure.bat までしかしていなかったので nmake でビルドまでするようにしています。

[040bf4c0a6] Hiroshi SHIBATA 2019-08-12 09:33:22 UTC

さらに .github/workflows/windows-2019.yml という設定も追加して Windows 2019 という環境(たぶん Windows 自体というよりコンパイラのバージョンの違い?)でもビルドするようにしています。

[0fd0f74508] Hiroshi SHIBATA 2019-08-12 09:56:01 UTC

.github/workflows/windows-2016.yml と .github/workflows/windows-2019.yml を .github/workflows/windows.yml にマージして 1ファイルで両方の環境に対応するようにしています。

[8d50bf40d9] Hiroshi SHIBATA 2019-08-12 10:08:51 UTC

.github/workflows/windows.yml にさらに nmake test までするステップを追加しています。

[ab3ab07b28] Hiroshi SHIBATA 2019-08-12 10:12:29 UTC

azure-pipelines.yml を削除して Windows 環境のテストを GitHub Actions へ移行しています。

[188381053c] Hiroshi SHIBATA 2019-08-12 10:40:46 UTC

.github/workflows/windows.yml の configure 時に --disable-install-doc オプションを追加しています。速度のためかな。 https://github.com/ruby/ruby/pull/2346

[a5f9306065] Takashi Kokubun 2019-08-12 11:20:37 UTC

.travis.yml で tool/travis_retry.sh つきのコマンドで bash に渡したコマンドラインで sudo を使っていたものは外側の bash 自体に sudo をつけるように修正しています。

[e6a0a954c9] Takashi Kokubun 2019-08-12 11:40:13 UTC

MJIT のメソッドの inline 化についてのテストを1つ追加しています。

[d96feee37c] Nobuyoshi Nakada 2016-09-30 11:38:23 UTC

拡張ライブラリ date では timezone のリストを lookup する関数を生成するために gperf を使ってましたが、そのオプションに --ignore-case を追加して大文字小文字を無視するようにしています。あとはよく変更を調べてませんが date_zone_to_diff() で文字列のコピーを抑制するようにしているそうです。

[3fc10eff1e] Nobuyoshi Nakada 2016-09-30 11:49:58 UTC

さらに拡張ライブラリ date で使う gperf の -E オプションを削っています。定数の定義に enum を使うオプションみたいです。と、いうのはメインの変更ではなくて ext/date/date_parse.c で MAX_WORD_LENGTH を超えたバッファを確保しないように修正? しています。

ruby-trunk-changes 2019-08-11

今日も主に GitHub Actions やその他の CI ツールのデバッグ用変更などがありました。

[52bd4716b4] Nobuyoshi Nakada 2019-08-10 14:19:24 UTC

rational.c の rb_numeric_quo() に第1引数が Complex の時のショートカットも追加しています。

[c21c001733] Nobuyoshi Nakada 2019-08-10 07:36:10 UTC

.travis.yml の macOS 向けビルドでデバッグのために make の -j オプションを削っていたのを戻しています。

[0609087a6b] Takashi Kokubun 2019-08-10 14:57:20 UTC

.travis.yml の macOS でのビルド時の make test-all のオプションに -v を追加していたのを消しています。

[46df7fe91f] Nobuyoshi Nakada 2019-08-10 14:45:49 UTC

make commits で common.mk を sed コマンドで書き換える時も tool/prereq.status を利用するようにしている? みたいです。

[d29bccb39b] Nobuyoshi Nakada 2019-08-10 14:47:31 UTC

test/webrick/test_httpauth.rb のインデント修正のみ。

[7ee948c3a1] git 2019-08-10 15:45:23 UTC

version.h の日付更新

[2990c2cc3e] Hiroshi SHIBATA 2019-08-10 21:12:46 UTC

b39efb163dd97a6b2c92cac3d2b1c19f898d0c04 と似てますが rdoc のテストでも capture_output というメソッドのかわりに capture_io を利用するように変更しています。

[f731cc0984] Kazuhiro NISHIYAMA 2019-08-11 01:15:05 UTC

tool/lib/test/unit.rb でファイル名の suffix チェックに正規表現を使っていたのを String#end_with? を利用するように変更しています。埋め込む文字列に正規表現のメタキャラクタがあった場合の escape が漏れてたので修正でもあります。

[6017e81b03] Kazuki Tsujimoto 2019-08-11 02:00:24 UTC

gens/bundled_gems の power_assert のバージョンを 1.1.5 に更新しています。

[e7996e0fd6] Hiroshi SHIBATA 2019-08-10 21:26:17 UTC

.github/workflows/macos.yml に make test-bundler の実行も追加して GitHub Actions で bundler のテストするようにしています。

[c685679e25] Hiroshi SHIBATA 2019-08-10 22:32:30 UTC

さらに .github/workflows/macos.yml で make test-all と make test-spec を分けてたのを make check でまとめて実行するようにしています。

[bb2f24251f] Hiroshi SHIBATA 2019-08-10 23:10:40 UTC

rubyspec で Windows で skip するテストを環境変数 CI がセットされている時も skip するようにして、GitHub Actions でこの環境変数をセットすることで skip させるようにしています。 ANSI のカラーコードが GitHub Actions でサポートされてないから、とのこと。

[91fcd87f5c] Hiroshi SHIBATA 2019-08-10 21:55:31 UTC

.github/workflows/macos.yml のチェックアウト時の fetch-deps をさらに 50 まで増やしています。

[053bee64cb] Hiroshi SHIBATA 2019-08-11 01:49:22 UTC

azure-pipelines.yml から make test-all test-spec test-bundler のタスクを削除しています。 GitHub Actions でするようになったから Azure Pipelines ではしないようにしたということでしょう。 https://github.com/ruby/ruby/pull/2336

[1c7eadf754] Takashi Kokubun 2019-08-11 05:15:48 UTC

今度は appveyor.yml の make test-all の時のオプションに -v をつけるようにしています。デバッグのため。

[51d9d0f888] Nobuyoshi Nakada 2019-08-11 06:42:16 UTC

defs/gmake.mk で定義している GitHub から pull request のブランチをとってくる fetch-github コマンドで既に同じ名前のローカルブランチが作成済みだったら git branch でブランチ作成するだけにしています。

[9fe7e042f5] Nobuyoshi Nakada 2019-08-11 07:19:31 UTC

同じく defs/gmake.mk の pull-github コマンドで git rebase するようにしているんですが、git rebase に --exec なんてオプションがあるんですね。 git notes でコミットのコメントを外に付けるようにしているみたいです(ruby trunk changes のコメントも git notes で保存しています)。

ruby-trunk-changes 2019-08-10

今日は多重代入の後ろに後置 rescue が付いた時の解釈を変更する文法の変更や Array#join の結果が小さい時の省メモリ化などがありました。

[3ddbba84b5] Yusuke Endoh 2019-08-09 13:48:20 UTC

ef64ab917eec02491f6bf7233a4031a8c35385e3 で 1024 に増やした STACKFRAME_FOR_CALL_CFUNC の値をさらに 2048 を倍に増やしています。 RubyCI をみるとどうやらこれ以降直ってるみたいですね。

[c9eb8f82e9] Nobuyoshi Nakada 2019-08-09 11:20:36 UTC

enc/gb2312.c から ruby/ruby.h と ruby/encoding.h の #include を削除して enc/depend ファイルも更新しています。

[314b50d7c0] Nobuyoshi Nakada 2019-08-09 14:10:06 UTC

io.c と vm_dump.c で unix.h や ucontext.h といったシステムヘッダの #include でファイルをダブルクオートで括ってたので <> で括るように修正しています。 C のお作法ですね。

[a8ba22cd32] Yusuke Endoh 2019-08-09 15:01:36 UTC

c9eb8f82e9febeb634a23bec6aeea915eb25fe26 の #include 削除で enc/gb2312.c のコンパイルがエラーになったので revert しています。

[8d7e0159c0] git 2019-08-09 15:04:06 UTC

version.h の日付更新

[88db6fa479] Nobuyoshi Nakada 2019-08-09 16:04:39 UTC

c9eb8f82e9febeb634a23bec6aeea915eb25fe26 のリトライ。 Init_gb2312() で rb_enc_register() の呼び出しをしてたのを関数定義ごと消して ENC_REPLICATE() マクロによる登録に変更しています。

[cecae8593a] Nobuyoshi Nakada 2019-08-09 16:05:09 UTC

a8ba22cd323d481eb8bd08ebca0fab8f1dbfc2f9 で一緒に revert された enc/depend の更新も再度コミットしています。

[53b3be5d58] Jeremy Evans 2019-08-09 03:02:54 UTC

代入文に後置 rescue が付いていた場合、通常は代入文の右辺に後置 rescue が付く(例外発生時に後置 rescue に書かれた式の値が代入される)のですが、左辺値が配列を splat して代入する多値っぽい代入になっていた場合は代入文全体に対して後置 rescue が付くという文法になっていたので、通常の代入の時と合わせて右辺値に後置 rescue が所属するように文法を修正しています。なるほどー、確かに一貫性としても使い勝手としてもこちらのほうが良さそう。非互換だけど…。 [ruby-core:54120] [Feature #8239] [ruby-core:54338] [Bug #8279]

[162cf2879a] Nobuyoshi Nakada 2019-08-09 16:39:36 UTC

88db6fa4793da3724c0128e53cfe1abead1774f8 で enc/gb2312.c の Init_gb2312() 関数ごと消してましたが、やっぱりこのエントリ関数を消すのはまずかった(static link する時にこまるらしい)ので、空っぽの関数を復活させています。

[b1678338e5] ohbarye 2019-08-09 16:56:40 UTC

cgi および net/http のコメントや rubyspec の it のタイトルの英文法修正。

[9d298b9dab] John Hawthorn 2019-06-26 16:52:30 UTC

Array#join の結果を格納するための文字列オブジェクトを生成するのに rb_str_buf_new() を使ってましたが、これは指定のサイズが小さくても最低でも 127 bytes はヒープからメモリを確保してしまうので、rb_str_new() で capa を必要なサイズを指定して生成してから rb_str_set_len() で len をセットするようにして、不要なメモリ確保を抑制するようにしています。

[789776be08] iain barnett 2019-08-04 04:37:54 UTC

String#unpack1 の rdoc 用コメントに unpack との違いを強調するサンプルを追加しています。

[49f88eb2f1] Takashi Kokubun 2019-08-10 00:34:13 UTC

.github/workflows/workflow.yml の on に push を追加して pull request 以外でもビルドが走るようにしているようです。

[6902824729] Masato Ohba 2019-08-10 00:28:37 UTC

benchmark/vm_thread_pass.rb のコメントの typo 修正。

[07e42e88d9] Nobuyoshi Nakada 2019-08-10 02:26:23 UTC

require 関係の benchmark スクリプトでファイルを作成するのに File.open + puts を使ってたのを File.write メソッドを利用するようにリファクタリングしています。

[ab31693af1] Nobuyoshi Nakada 2019-08-10 02:38:49 UTC

marshal.c で Encoding の dump の時に :E という symbol のために毎回 rb_intern() していたのを Init_marshal() で static 変数に格納しておいてそれを使うように修正しています。

[3c3783ac88] git 2019-08-10 02:43:07 UTC

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

[ffdef3674a] Nobuyoshi Nakada 2019-08-10 04:18:41 UTC

ab31693af109022ecc0a01107067d5c84675807a の続きで Marshal.dump でオブジェクトの "E" という名前のインスタンス変数(@ で始まってないので内部的に作られるものなので気をつけてればないと思いますが)は Encoding のために利用されているため dump しないようにしていたのですが、もしあったら警告するようにしています。

[98c22c78e4] Nobuyoshi Nakada 2019-08-10 04:56:18 UTC

complex.c で f_real_p() は fun1() マクロでメソッド呼び出しする関数定義に展開されてたのを、引数が Integer, Float, Rational, Complex の時の最適化を含む関数定義に変更しています。

[d69ffa4d93] Nobuyoshi Nakada 2019-08-10 05:30:34 UTC

同じく complex.c の f_quo() も fun2() マクロによる定義を、第1引数が Integer, Float, Rational の時の最適化を含む関数定義に変更しています。このため numeric.c の static 関数だった flo_div() は static を消して rb_float_div() に改名しています。

[c5fbe2a19f] Nobuyoshi Nakada 2019-08-10 06:48:39 UTC

.travis.yml で 330e3f19c32dc6b0c287b7845c796e7e4a3ed575 で切り出した tool/travis_retry.sh に渡すオプションを env の変数としてまとめています。

[5e3fb0b357] Nobuyoshi Nakada 2019-08-10 07:33:32 UTC

.travis.yml の macOS でのたまにあるビルドの問題のために 676df311d90990a4666adb5b1db4c7aa6b080e57 で追加した全ファイルの mtime を touch で揃える処理を macOS のみでなく全ての環境で行うようにしています。

[9b203959d5] Takashi Kokubun 2019-08-10 10:19:22 UTC

GitHub Actions の設定ファイル .github/workflows/workflow.yml を .github/workflows/macos.yml と移動して name という設定を追加しています。

[e43b3bb442] Takashi Kokubun 2019-08-10 10:28:07 UTC

GitHub Actions の macos.yml の設定で push は master のみテスト対象にするようにしています。

[6205f95539] Takashi Kokubun 2019-08-10 10:29:39 UTC

e43b3bb442836c8064637a7d46c05ad16a4e0115 で pull request のほうは全ブランチを対象にするためワイルドカードとして * を書いてましたが、クオートしておくようにしています。

[59a8003ac5] Takashi Kokubun 2019-08-10 10:33:11 UTC

.github/workflows/macos.yml の jobs.macos.name の設定は削除しています。

[b3903ef2a1] Takashi Kokubun 2019-08-10 10:38:27 UTC

.github/workflows/macos.yml の jobs の下のラベルは macos から latest に変更して、環境変数の表示などのデバッグ用? コマンドは削っています。また make test や make test-all の実行には name 属性で表示名を設定しています。

[a6c5ce7a9b] Takashi Kokubun 2019-08-10 10:39:00 UTC

.github/workflows/macos.yml の repository checkout のオプションの fetch-depth を 5 から 20 に増やしています。

[00e7ef7e8d] Nobuyoshi Nakada 2019-08-10 10:49:21 UTC

.travis.yml の make test や make leaked-globals の実行時に -o オプションをつけて showflags の実行を抑制しています。

[c1c8577088] Takashi Kokubun 2019-08-10 11:25:58 UTC

e43b3bb442836c8064637a7d46c05ad16a4e0115 で .github/workflows/macos.yml の pull requests に対する設定で branches のかわりに誤って paths が指定されてしまっていたので修正しています。

ruby-trunk-changes 2019-08-09

今日は clone した Module/Class の配下の定数参照が inline cache で誤ってヒットしてしまって間違った値を参照してしまう可能性がある不具合の修正などがありました。

[b1594ca3d6] Takashi Kokubun 2019-08-08 11:37:12 UTC

fa29f65416f1fb3d734a279855728bb0616dbb34 でデバッグのために V=1 --debug を追加した appveyor.yml の msys2 のビルドですが -j オプションによる並列化もデバッグのために削除してみています。

[3d87b774c4] Nobuyoshi Nakada 2019-08-08 12:08:00 UTC

load.c の rb_load_internal0() で rb_execution_context_t にアクセスするのに th->ec を使ってましたがローカル変数に代入してるのでその変数のほうを使うようにしています。

[76bd0714cf] Nobuyoshi Nakada 2019-08-08 12:26:31 UTC

b004d3e8300ba803d4a499148fa4fc6a690149e6 の load したスクリプト内での捕捉されない例外で TracePoint の :raise イベントが重複して発火するという不具合の修正ですが、require で同様の問題が修正されてないままだったようなので追加修正しています。 コミットメッセージのチケット番号は違うやつみたいです。たぶんこっちが正解。 [ruby-core:92880] [Bug #15885]

[2a6d7fad13] Takashi Kokubun 2019-08-08 13:03:00 UTC

appveyor.yml で pacman でインストールしているパッケージの不要なものを消したり順番を移動したりしています。 ビルド失敗の回避のためとのこと。

[995c2e9536] Nobuyoshi Nakada 2019-08-08 13:17:22 UTC

b004d3e8300ba803d4a499148fa4fc6a690149e6 および 76bd0714cf1140ffd64bf564446c76c54f2c4870 の追加修正。 rb_load_internal0() から処理を切り出して load_iseq_eval() という関数を作って rb_require_internal() から rb_load_internal() のかわりにこれを呼び出すようにして、require の時にネストした EXEC_TAG() の処理がされるのを避けるようにしています。

[a9b9f9d157] Takashi Kokubun 2019-08-08 13:35:11 UTC

fa29f65416f1fb3d734a279855728bb0616dbb34 および b1594ca3d6b72edb60927418482652ce93209499 の appveyor.yml のデバッグ用の変更を revert して V=1 の追加のみ残しています。

[a206738762] Nobuyoshi Nakada 2019-08-08 13:40:09 UTC

make update-deps で作成される一時ディレクトリの削除コマンドを追加しています。

[ad3f7a3667] Nobuyoshi Nakada 2019-08-08 15:06:08 UTC

require_internal() で rb_thread_t の top_wrapper と top_self というメンバーを退避しておいて top_wrapper を 0 にリセットしてから実際の require 処理して最後に復帰させるようにしています。 th->top_wrapper ってなんだろ。記憶にないなぁ。

[c0f4943840] git 2019-08-08 15:16:24 UTC

version.h の日付更新

[830fd04181] Nobuyoshi Nakada 2019-08-08 16:27:52 UTC

compile.c の enum の宣言の最後の要素の後にカンマを追加しています。 C99 に移行したのでこれが許されるようになったので。

[050b932152] Alan Wu 2019-08-08 02:15:45 UTC

RubyVM::InstructionSequence#to_binary に pattern match で使う例外クラスの対応が入ってなくて SEGV する恐れがあったのを修正しています。 https://github.com/ruby/ruby/pull/2325 [ruby-core:94201] [Bug #16088]

[57288f5dbd] git 2019-08-08 16:32:30 UTC

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

[c7acb37248] Aaron Patterson 2019-08-08 18:29:15 UTC

GitHub Actions を有効にするために .github/workflows/workflow.yml という空ファイルを追加しています。

[71efad1ed3] Koichi Sasada 2019-08-09 02:00:34 UTC

Module/Class が dup で複製されると、その配下の定数の参照が inline cache で共有されてしまい、誤った定数を参照してしまうことがある不具合の対策として RCLASS_CLONED という bit flag を追加して vm_get_const_key_cref() で cref の親のどこかにこのフラグが立ってたら ic->ic_cref にセットしておくようにしています。特異クラスの時の特別扱いと同じ処理を使って誤った inline cache 利用を抑制するようにしています。 [ruby-core:92849] [Bug #15877]

[4e9382a827] git 2019-08-09 02:11:18 UTC

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

[0176e74d6c] Takashi Kokubun 2019-08-09 02:39:20 UTC

common.mk の class.o から gc.h への依存関係が足りてなかったので追加しています。 d0ef5c21fb91f7a82910fc71d4d8e1a801266232 で追加した Travis-CI で update-deps 実行してみて追加漏れを検出するやつで検出されたみたいです。

[a9fd57056c] Koichi Sasada 2019-08-09 04:02:31 UTC

拡張ライブラリ ripper のテストで使用メモリ制限つきで実行するところで MJIT 有効化時には 1.5 倍にしていたのを 2倍にまで増やすようにしています。

[37eefb11fb] Koichi Sasada 2019-08-09 04:08:01 UTC

0176e74d6c3de4a71424d9bc0bc63c408550b488 で class.o から gc.h への依存関係を追加してましたが、そもそも #include "gc.h" 自体が不要だったみたいで削除しています。

[54bdfe27f3] Aaron Patterson 2019-08-08 15:28:49 UTC

.github/workflows/workflow.yml に Pull Request に対する macOS 上でのテスト実施のジョブ定義を追加しているようです。

[cb390e87dc] Aaron Patterson 2019-08-08 20:29:02 UTC

54bdfe27f361c0cccb9d16f32e5796b47d017134 に追加して GitHub Actions で make test-spec と make leaked-globals (ってこのターゲットなんだっけ?)の実行もするようにしています。 https://github.com/ruby/ruby/pull/2327

[6bf8db9a07] Koichi Sasada 2019-08-09 04:57:47 UTC

gc.h で宣言されていた rb_obj_info_dump() および vm_debug.h で宣言されていた ruby_debug_breakpoint() とその別名であるマクロ bp() の宣言を interna.h に移動して gc.h の #include を減らしています。また rb_obj_info_dump() の wrapper である rp() というオブジェクトを表示するデバッグ用のマクロを追加しています。

[3b39cc6b03] Koichi Sasada 2019-08-09 05:11:24 UTC

6bf8db9a07e95820705f7ec119f4038a529182ef で thread.c から #include "gc.h" を削除したのは消しすぎだったので戻しています。

[26cf4c91ad] Koichi Sasada 2019-08-09 06:23:35 UTC

Fiber のテストで使う invoke_rec というユーティリティメソッドで EnvUtil.invoke_ruby に渡すタイムアウト値を大幅に(6時間に)伸ばしています。 macOS でのデバッグ用とのこと。

[3cbd56d574] Koichi Sasada 2019-08-09 07:08:15 UTC

make test-all に変数 TESTS でテストファイルを指定した時の補完処理に test_ という prefix がなかったら補完して探すという機能も追加しています。つまり test_pp.rb を指定するのに TESTS=pp.rb でもいいってことですね。

[a4a2dd7942] Kazuhiro NISHIYAMA 2019-08-09 07:29:43 UTC

a6e32855d079e8f3806d8be8a5f5cf7b3a967133 の標準添付ライブラリ reline のクオートにマッチさせる正規表現マッチの省略で開きクオート文字の参照を取り出すのに $& のかわりに $~ を使うように変更して MatchedData を保存してしまってたので戻しています。

[ef64ab917e] Yusuke Endoh 2019-08-09 08:31:19 UTC

gc.c の STACKFRAME_FOR_CALL_CFUNC という定数を 838 から 1024 に増やしています。 去年も r59676 で 512 から増やしてるので徐々に増えてってるみたいですね。 macOS の Mojave で Fiber のテストが止まらなくなる現象が置きるのを回避するためみたいです。てことは安定版にも入れたほうがいいのかなーと思ったけど RubyCI をみるとまた Mojave で別のエラーで失敗しているみたいですね。

[63384591e2] Koichi Sasada 2019-08-09 08:48:47 UTC

26cf4c91ad357fe6c8fc2247abe980dbf9a5b331 を revert して 6時間まで伸ばしたテストのタイムアウトを戻しています。なるほどたぶんこのタイムアウト延長でどこで止まってるか調査してたんですねきっと。

ruby-trunk-changes 2019-08-08

今日は require/load したスクリプトから捕捉されない例外が発生した時の TracePoint の :raise イベントの発火についての不具合修正などがありました。

[330e3f19c3] Takashi Kokubun 2019-08-07 12:47:03 UTC

.travis.yml のリトライ用の処理を tool/travis_retry.sh というシェルスクリプトに切り出して .travis.yml の記述を完結にしています。

[0d2aa6fec9] Takashi Kokubun 2019-08-07 13:11:52 UTC

make benchmark で使う benchmark-driver.gem のバージョン(GitHub のタグ)を v0.14.20 に更新しています。

[58dec9625c] Yusuke Endoh 2019-08-07 13:22:52 UTC

enum.c で不要だった transient_heap.h の #include を削除しています。

[67cde179c5] Hiroshi SHIBATA 2019-08-07 13:29:02 UTC

tool/sync_default_gems.rb で default gems の upstream のコミットを cherry-pick する機能で、コミットメッセージの先頭が "Auto Merge" のものも除外するようにしています。 bundlerbot による自動マージのコミットはこのメッセージではじまるみたいです。

[f5481e35ab] Hiroshi SHIBATA 2019-08-07 13:30:10 UTC

同じく tool/sync_default_gems.rb の upstream repo からの cherry-pick 機能でうまく cherry-pick できなかった commits を列挙する前に区切りの見出しみたいなのを表示して見易くしています。

[0cf6bfca78] Yusuke Endoh 2019-08-07 13:42:42 UTC

hash.c から既に不要になっていた gc.h の #include を削除しています。

[3229e0583f] Yusuke Endoh 2019-08-07 13:54:38 UTC

0cf6bfca7866a0205ba6d603cca7c87f4db0065e の再修正。 HASH_DEBUG が真の時にはまだ gc.h が必要だったので preprocessor による分岐つきで #include "gc.h" を残すようにしています。

[f82633b6a6] Yusuke Endoh 2019-08-07 13:56:52 UTC

array.c からも gc.h は不要になってたので #include を削除しています。

[fa29f65416] Takashi Kokubun 2019-08-07 15:10:26 UTC

appveyor.yml で mingw 上でのビルドのデバッグのため mingw32-make 実行に変数 V=1 とオプション --debug を追加しています。

[2f3795113d] git 2019-08-07 15:11:34 UTC

version.h の日付更新

[70fd099220] Aaron Patterson 2019-08-06 19:23:30 UTC

debug counters というのは VM や組み込みクラスのプロファイリングなどの目的でイベントやオブジェクト数などをカウントするやつですが、デバッグ用に指定するとプロセス終了時に値をダンプします。このコミットでは RubyVM.show_debug_counters というメソッドを生やして途中でも現状のカウンタを表示するようにしています。

[1c7d3a13ca] Gannon McGibbon 2019-03-11 19:07:52 UTC

こんなのあったっけ……と思い出せないのですが RubyVM.USAGE_ANALYSIS_XXX 系の特異メソッド群に USAGE_ANALYSIS_INSN_START、USAGE_ANALYSIS_OPERAND_START、USAGE_ANALYSIS_REGISTER_START、USAGE_ANALYSIS_INSN_RUNNING、USAGE_ANALYSIS_OPERAND_RUNNING、USAGE_ANALYSIS_REGISTER_RUNNING といったメソッドを追加して調査用のフックを有効化できるようにしています。 https://github.com/ruby/ruby/pull/2258

[1ad0f4e593] Gannon McGibbon 2019-08-06 22:38:55 UTC

1c7d3a13caa718ef52ec6b55988b1459a002f965 に続いて RubyVM の特異メソッドに USAGE_ANALYSIS_INSN_CLEAR、USAGE_ANALYSIS_OPERAND_CLEAR、USAGE_ANALYSIS_REGISTER_CLEAR といった集計したデータをクリアするメソッドも追加しています。 https://github.com/ruby/ruby/pull/2258

[b39efb163d] Hiroshi SHIBATA 2019-08-08 08:19:23 UTC

test/benchmark/test_benchmark.rb で capture_io メソッドの結果の文字列の時間っぽいところをマスクして差分を検出しないようにしていたのをやめて capture_bench_output というメソッドのほうにその処理を移動しています。あと capture_output はたんに capture_io の alias にしています。

[20cb8e8aea] Yusuke Endoh 2019-08-08 08:34:50 UTC

main.c の先頭に Doxygen によるドキュメンテーション向けのコメントを追加しています。

[b004d3e830] Koichi Sasada 2019-08-08 08:53:36 UTC

require や load されたスクリプト内で例外が発生して、そのまま require/load 元に伝播する場合に TracePoint の :raise イベントフックが重複して起動されるという問題を修正しています。 require_internal() とかで例外発生を一旦捕捉してから再度 rb_exc_raise() してるのをやめているようです。 コミットメッセージのチケット番号は違うやつみたいです。たぶんこっちが正解。 [ruby-core:92880] [Bug #15885]

[29bdfeb0c6] git 2019-08-08 08:59:38 UTC

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

ruby-trunk-changes 2019-08-07

今日は最適化命令 opt_plus も MJIT の inline 化対象にする変更や Float::ROUNDS という定数を deprecated にする変更などがありました。

[b5146e375a] 卜部昌平 2019-08-06 03:56:18 UTC

346aa557b31fe96760e505d30da26eb7a846bac9 で opt_eq, opt_neq を leaf=true にしたのと同様に opt_plus も引数の型チェックを追加して leaf=true にして MJIT で inline 化できるようにしています。 https://github.com/ruby/ruby/pull/2321

[3e6b9926b7] git 2019-08-06 11:59:41 UTC

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

[a04e3585d3] Nobuyoshi Nakada 2019-08-06 14:00:29 UTC

ObjectSpace::WeakMap のメソッド実装で頻出する is_id_value() と is_live_object() のチェックを wmap_live_p() という static 関数に切り出すリファクタリング

[0ed298f382] Nobuyoshi Nakada 2019-08-06 14:39:14 UTC

time.c で Time#to_r の実装で整数化されてしまうのを防ぐように quov() から quor() という関数を切り出してこちらを使うようにしています。

[e89d9f3deb] Nobuyoshi Nakada 2019-08-06 15:02:21 UTC

Float::ROUNDS という丸めの方法を表す定数を deprecated にしています。こんな定数あったんだ……。 [ruby-core:94139] [Bug #16044]

[66a13413ee] git 2019-08-06 15:07:06 UTC

version.h の日付更新

[2d6b92c5f6] Takashi Kokubun 2019-08-06 16:26:02 UTC

.travis.yml で apt-get の source 追加にも addon を使わずに自前で apt-add-repository コマンドを呼びリトライ対応するようにしています。

[ef8c5161b4] Yusuke Endoh 2019-08-06 18:12:10 UTC

拡張ライブラリ ripper の Ripper::Lexer::State#| メソッドが誤って & メソッドと同じ定義になってたので修正しています。

[8877dbe400] Yusuke Endoh 2019-08-06 18:13:17 UTC

拡張ライブラリ ripper の Ripper::Lexer で配列への追加に Array#<< を使ってたところを push メソッドに変更しています。 consistency のためとのことなので ripper の他のところでは push だからそろえたってことですね。

[b839721ae7] Kazuhiro NISHIYAMA 2019-08-07 00:03:08 UTC

2d6b92c5f6b6343f34bb363604339f4bd7b951ac の .travis.yml での apt-add-repository コマンドのリトライの自前実装でコマンドの終了ステータスのチェックを "=" でなく "-eq" でチェックするようにしています。

[a0fe396555] Takashi Kokubun 2019-08-07 00:39:46 UTC

2d6b92c5f6b6343f34bb363604339f4bd7b951ac の .travis.yml での apt-add-repository のリトライ処理を if 文つかわないように書きかえています。

[1bf796c69d] Nobuyoshi Nakada 2019-08-06 23:57:22 UTC

拡張ライブラリ date の Date#step のテストで引数の limit になんか謎の整数を渡してたのを Date オブジェクトを渡すように修正しています。元のテストはいったい何をしてたんだろ。よく意図がわからない。

[e6901cea74] Nobuyoshi Nakada 2019-08-07 01:41:12 UTC

rubygems の Gem::BasicSpecification.default_specifications_dir の deprecated warning で代替として提示しているのが同じメソッドだったので、Gem.default_specifications_dir を提示するように修正しています。