ruby-trunk-changes 2019-11-23

今日はソースディレクトリが git リポジトリになっていることを前提としていたビルドプロセスの修正や GC.compact の性能の改善、拡張ライブラリ tracer の互換性の改善などがありました。

[994435d0ef] Vít Ondruch 2019-11-22 08:47:30 UTC

e1b234148829f65bea9f5ecc7018beb782ea6023 の依存関係更新のうち ext/psych/depend の部分を revert しています。 Fedora での psych のビルドに外部の libyaml を使うのがうまくいかなくなったとのこと。なるほど ext/psych/yaml/ 内のヘッダに依存してしまうとだめか。 [ruby-core:95908] [Bug #16359]

[053f78e139] Yusuke Endoh 2019-11-22 14:56:18 UTC

rb_gvar_readonly_setter() の宣言を internal.h に追加しています。 emscripten でのビルドに必要だったとのこと。

[d7f100226d] Kazuhiro NISHIYAMA 2019-11-22 16:29:53 UTC

default gem の gemspec のテストで git に依存しているものを skip するための判定で git --version を使っていたのを git rev-parse に変更。 git --version では git がインストールされてさえいれば動いてしまいますがここで判定したいのはカレントディレクトリが git の working copy 内であるということなので不十分でした。

[271cb9acd2] Kazuhiro NISHIYAMA 2019-11-22 16:55:29 UTC

defs/gmake.mk の REVISION_LATEST を抽出するコマンドで git log が出力するエラーメッセージを /dev/null にリダイレクトして抑制するようにしています。

[144bff43fc] git 2019-11-22 16:58:08 UTC

version.h の日付更新

[3f4199b0af] John Hawthorn 2019-11-20 22:07:20 UTC

gc.c の gc_compact() から gc_compact_after_gc() の呼び出しで use_verifier という引数を TRUE に固定して呼んでたのを同名の引数を委譲するように修正しています。

[26fd8d962c] John Hawthorn 2019-11-20 22:18:40 UTC

GC.compact の処理で struct heap_page のリストをソートするために pin されているオブジェクト数を数える処理を比較のたびに count_pinned() を呼び出していたのが非効率なので、struct heap_page に pinned_slots というメンバーを追加してソート前に全 page ぶんカウントしてセットしておくようにしています。

[8e743fad4e] John Hawthorn 2019-11-21 19:05:48 UTC

GC.compact で使う struct heap_page 内で pin されているオブジェクト数を数える count_pinned() 自体も bitmap のほうをみて立っている bit を数えるという方法にして軽量化しています。 T_ZOMBIE も数えるというのもこれで吸収できるのかな、と思ったらちゃんとコミットログにその言及があって、それは temporary objects で small in number のはずだからまあええやろ、という感じらしくて、まあ、機能的に厳密なソートが必要なわけでないのならいいのか(多分効率的な compaction のためのヒントとして使ってるのだろう)。

[1ee010a317] aycabta 2019-11-22 20:20:23 UTC

標準添付ライブラリ tracer でブロック引数として定義していたものを add_filter(p = nil, &b) のように通常引数+ブロック引数として定義して両方受け付けるようにしています。 e6f8382a766a4e27e008d8cf753c6589a3eb6f85 の変更前は add_filter(p=proc) のようにしていて省略時には自動的に渡されたブロックを capture するテクニックが使われていたのが、proc がブロックを自動的に受け取る機能が警告の対象になったので add_filter(&p) に変更されてて、互換性が壊れていたので一応両方受け取れるように非互換性を緩和しているようです。

[b0614a0f96] aycabta 2019-11-22 20:44:35 UTC

1ee010a3171978007a4550e8077f1e4b646bd80a と同様に標準添付ライブラリ tracer の Tracer.set_get_line_procs も通常引数とブロック両方受け取れるようにしています。

[818708edab] Takashi Kokubun 2019-11-22 22:22:33 UTC

GitHub Actions の macOS と MJIT 用の設定の Slack 通知で未使用の変数の参照の削除や情報の追加。

[9318e1ff3e] Kazuhiro NISHIYAMA 2019-11-23 02:41:27 UTC

b0614a0f968d40fb1bad31592fc9a607dbac447d で追加した標準添付ライブラリ tracer の Tracer.set_get_line_procs のテストで dummy_script のファイルパスを File.realpath を通して symbolic link を解決しておくようにしています。

[b563439274] Nobuyoshi Nakada 2019-11-23 07:00:39 UTC

ceb9e276b934a8a63299b0b96d2c430c9854de7f で make check の最後に(たぶん依存関係の追加を促すため?) master からの差分のうち "#include" を含むものを抽出して表示する処理を git コマンドが使えてソースディレクトリが git リポジトリ内である場合に限るように事前のチェックを追加しています。