ruby-trunk-changes 2020-12-09

今日は標準添付ライブラリ prime や matrix の更新のほか Process.wait に non-blocking Fiber の scheduler 対応を追加する変更などがありました。

[30d4a7ad9a] Hiroshi SHIBATA 2020-12-08 12:42:03 UTC

doc/maintainers.rdoc の標準添付ライブラリのメンテナの項目に default gems になっているものは rubygems.org 上のリンクを追記しています。

[2427393b4d] Kenta Murata 2020-12-08 12:58:08 UTC

bd47a8d660ab33a20c5e28d0effcc29105c434e4 で fiddle のテストの macOS での libc, libm のパスの設定が冗長として消してたのを revert しています。一見冗長な代入は b7d86e330c76b4f9615511307e1c40f4f2937c83 で Big Sur 対応として入れられたもので必要でした。

[d5ffa4e9a4] Nobuyoshi Nakada 2020-12-08 10:32:33 UTC

Kernel#warn の rdoc 用コメントにキーワード引数 category について追記しています。

[2749123e21] Nobuyoshi Nakada 2020-12-08 10:33:43 UTC

警告メッセージの出力にフックする Warning.warn のデフォルトの実装で Warning[] でのカテゴリ毎の出力の抑制/有効化の判定を追加しています。あれ、ここで対応してないといけないんだっけ。あー C API での警告はいいけど ruby の Kernel#warn に category を指定した時の制御 が必要だったということか。

[ee194af2aa] Koichi Sasada 2020-12-07 15:42:20 UTC

Ractor の実体の構造体 struct rb_ractor_struct から一部のメンバーを struct rb_ractor_sync に切り出して埋め込むようにするなどのリファクタリング

[a4a92ae6d9] git 2020-12-08 16:41:06 UTC

version.h の日付更新

[2553c5f94a] Samuel Williams 2020-12-07 20:29:09 UTC

Process.wait を non-blocking Fiber で対応するために Process::Status を T_TYPEDDATA 型のオブジェクトとして定義しなおして(これ T_OBJECT だとだめなのかな)、non-blocking Fiber 用の scheduler 対応が Thread にあってなおかつ process_wait というメソッドが定義されていたらそれで待つようにしています。子プロセスを待つあたりは timer thread 削除の時にもいろいろあったからちょっと不安がありますね。まあほぼ scheduler の実装依存みたいなのでライブラリの実装の自己責任でしょうけど、この今のタイミングでつっこむの大丈夫かな……。

[27b6df9653] Marc-Andre Lafortune 2020-10-23 21:42:48 UTC

bootstraptest/test_ractor.rb の Ractor のテストに Ractor.make_shareable に渡したオブジェクトの freeze が呼ばれることを確認する assertion を追加しています。

[4f907a80f0] Nobuyoshi Nakada 2020-12-09 02:32:18 UTC

2553c5f94a5d51c2c5876b31e4c1521ad9be12f6 で存在しない関数 rb_socket_before_fork_func() の prototype 宣言が include/ruby/internal/intern/process.h に追加されてたのを削除しています。

[b419f90a8b] Nobuyoshi Nakada 2020-12-09 02:49:20 UTC

2553c5f94a5d51c2c5876b31e4c1521ad9be12f6 で見逃してましたが Process::Status.wait というメソッドを追加してたのを EXPERIMENTAL とマークして、ついでに公開関数を直接使わずに別の関数を作るようにするなどのリファクタリング

[dea600046a] Nobuyoshi Nakada 2020-12-09 04:10:28 UTC

bundler のテストで Refinements を使って Spec::Helpers#out の定義を上書きして不要なエスケープシーケンスを消すようにしています。

[1866d483dc] Marc-Andre Lafortune 2020-12-05 05:20:39 UTC

標準添付ライブラリ prime で Integer#prime? の実装を Miller-Rabin アルゴリズムというのを使った実装に変更して高速化を図っているようです。 [ruby-core:96600] [Feature #16468]

[b603085d2f] Marc-Andre Lafortune 2020-12-09 05:45:56 UTC

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

[47ff8de645] Marc-Andre Lafortune 2020-12-09 06:03:29 UTC

doc/maintainers.rdoc のメンテナの変更や名前の表記に非 ASCII 文字を使うようにする変更など。

[45b29754cf] Koichi Sasada 2020-12-09 05:49:06 UTC

newobj_init() のデバッグ用の assertion の部分に RB_VM_LOCK_ENTER_NO_BARRIER()/RB_VM_LOCK_LEAVE_NO_BARRIER() による VM 単位のロックを追加しています。

[6b264e833f] Marc-Andre Lafortune 2020-12-09 06:24:16 UTC

標準添付ライブラリ prime の gemspec ファイルもメンテナを変更しています。また spec.files から .travis.yml を削除しています。

[a7dccd08e7] Marc-Andre Lafortune 2020-09-26 19:49:43 UTC

標準添付ライブラリ matrix で Matrix#freeze した時に参照先の Vector も freeze するように変更して、Ractor でコピーせずに渡せるようにしています。

[150dbb656d] Marc-Andre Lafortune 2020-12-09 05:30:05 UTC

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

[cacdf2681d] Marc-Andre Lafortune 2020-12-09 09:21:00 UTC

a7dccd08e7c9cf0e5d0c0fdbe659ccc921624e6f で matrix のテストとして Matrix を Ractor 間で共有することができることを確認するテストを追加してましたが、コメントアウトしています。古い Ruby で動かないからかな。

[fad3023e94] Kenta Murata 2020-12-09 09:48:59 UTC

Range の始点/終端が Rational の時の Range#step が返す Enumerator::ArithmeticSequence で加算処理が Integer 前提になってて C の関数を直接呼んでたので、数値のクラスに応じた処理をする関数を新たに追加してこれを呼ぶように修正しています。 https://github.com/ruby/ruby/pull/3870 [ruby-core:100312] [Bug #17218]