ruby-trunk-changes 2021-12-23

今日は IO::Buffer の新規メソッド追加や blocking fiber 用の Scheduler のインターフェース(C API) の追加、rubygems と bundler の更新、拡張ライブラリ digest のインストール時のヘッダファイルインストールの修正などがありました。

[0d4bfbdbe1] Yuki Nishijima 2021-12-22 12:02:00 UTC

lib/did_you_mean.rb の Ractor の存在チェックしているところで定数名 typo していたのを修正しています。

[573d9d3a4a] Yuki Nishijima 2021-12-22 12:21:25 UTC

標準添付ライブラリ optparse のテストで did_you_mean の定数を参照しているところを定数名の変更に追随させています。一応別の gem なので新しいバージョンに追随するよりどちらでも動くようにしておいたほうが良さそうですね。

[243ecd176d] Burdette Lamar 2021-12-22 20:41:39 UTC

IO#read と IO#readpartial の rdoc 用コメントの手直し。 IO https://github.com/ruby/ruby/pull/5321

[91c5c1c132] git 2021-12-22 20:41:57 UTC

version.h の日付更新

[bed920f073] Samuel Williams 2021-12-22 23:20:09 UTC

blocking fiber 用の Scheduler のための C API に rb_fiber_scheduler_io_pread() と rb_fiber_scheduler_io_pwrite() を追加し、これを利用して IO::Buffer にメソッド #read, #pread, #write, #pwrite を新規追加しています。 read/write もまだなかったのか……。

[feaf4fbc3f] Yuki Nishijima 2021-12-23 00:43:39 UTC

標準添付ライブラリ did_you_mean のテストで Ractor 対応のテストがプロセスを multi Ractor モードにしてしまうので他のテストをエラーにしてしまうみたいなのでひとまず test/did_you_mean/test_ractor_compatibility.rb をファイルごと削除しています。

[fb1ab27f53] Hiroshi SHIBATA 2021-12-23 00:21:36 UTC

rubygems と bundler をそれぞれ 3.3.1 と 2.3.1 に更新しています。

[c529014b9d] git 2021-12-23 00:23:19 UTC

NEWS の default gems のバージョン記述部分の RubyGems と bundler の項目も追随して更新しています。

[de841e2e28] Yuki Nishijima 2021-12-23 01:08:07 UTC

ac4e0978ee4358430396403065eabe1aca05784f 以降の default gems の did_you_mean の upstream からの同期を再度 revert しています。まだテスト? などに影響があったみたいですね。

[1f94ae019f] git 2021-12-23 01:10:18 UTC

NEWS の default gems のバージョンの記述も did_you_mean のバージョンを再度戻しています。

[1527f7569b] Yuki Nishijima 2021-12-23 01:48:21 UTC

573d9d3a4a0f112379874cedf4e494515e4b3f15 の標準添付ライブラリ optparse のテストの did_you_mean のバージョンに追随した変更も revert しています。

[d5019949b5] Yusuke Endoh 2021-12-23 03:55:44 UTC

標準添付ライブラリ error_highlight のバージョンを 0.3.0 に更新しています。

[ddfbf531de] git 2021-12-23 04:01:26 UTC

NEWS の default_gems のバージョンの記述も error_highlight の更新に追随させています。

[95da41ee0a] Nobuyoshi Nakada 2021-12-23 05:29:56 UTC

GitHub Actions で default gems や bundled gems のバージョン情報を https://stdgems.org/ からダウンロードする時に curl のオプションに -R と -z を指定してキャッシュしているファイルから変更がなければダウンロードしないようにしています。

[25e417b773] Nobuyoshi Nakada 2021-12-23 05:49:10 UTC

GitHub Actions の default gems や bundled gems のバージョン情報をキャッシュする時の key に github.sha を含めるようにしています。

[ca032d5eea] Koichi Sasada 2021-12-23 06:51:13 UTC

vm_method.c の rb_vm_lookup_overloaded_cme() という関数は VM_CHECK_MODE マクロが 1以上の時だけ定義するようにして、gc.c の呼んでいたところは method entry の T_IMEMO オブジェクトを pin down する条件からの関数を削っています。厳密にはこの判定はあったほうがいいけど、pin down を余計にしても GC.compact で移動できないだけなので数が多くないという前提でそんなに問題はないという判断のようです。rb_vm_lookup_overloaded_cme() をこの位置で呼ぶのが実は NG だったので大丈夫なようにしようとするとロックが必要になるのでその時のオーバーヘッドとのトレードオフで判断したということですね。

[2da53b1468] Koichi Sasada 2021-12-23 06:45:09 UTC

gc.c の gc_finalize_deferred() で finalize_deferred() を呼ぶ前後の VM 全体のロックによる排他処理を削っています。 finalize_deferred() の中でロックしているのでここでは不要とのこと。

[c6cf19340a] Nobuyoshi Nakada 2021-12-23 07:09:02 UTC

標準添付ライブラリ pp の PP.width_for の rdoc 用コメントを追加して、PP.pp の rdoc 用コメントに端末幅のデフォルトは PP.width_for で決まるということを追記(というか 79 というマジックナンバーから変更)しています。 [ruby-core:78062] [Feature #12913]

[8f3b5a28d6] Yusuke Endoh 2021-12-23 08:47:38 UTC

gems/bundled_gems の typeprof のバージョンを 0.21.1 に更新しています。

[1eafa85206] git 2021-12-23 08:48:32 UTC

NEWS の bundled gems のバージョン記述も typeprof のバージョンを追随させています。

[bf1444e500] Nobuyoshi Nakada 2021-12-23 09:31:17 UTC

GitHub Actions での default gems や bundled gems の NEWS のバージョン一覧の更新を fork したリポジトリや pull request 内では実施しないようにしています。

[40a1af6151] Nobuyoshi Nakada 2021-12-23 11:12:45 UTC

拡張ライブラリ digest の extconf.rb でグローバル変数 $INSTALLFILES に digest.h のインストール用の指定を入れておくようにしています。default gem のインストール時にヘッダファイル ruby/digest.h がインストールされるようにするため。