ruby-trunk-changes 2022-04-07

今日は拡張ライブラリを含む bundled gems のビルドとインストールの対応のための変更や C 実装メソッドからの Kernel#binding 呼び出しを例外にする変更(リトライ)、finalizer の呼び出しの race condition 修正などがありました。

[8197ae35f9] Soutaro Matsumoto 2022-04-06 14:57:00 UTC

bundled gems の rbs のバージョンを 2.3.2 に更新しています。 https://github.com/ruby/ruby/pull/5762

[1f3448f524] git 2022-04-06 14:57:47 UTC

追随して NEWS の bundled gems のバージョンリストの rbs のバージョンも更新しています。

[717b20ee30] Burdette Lamar 2022-04-06 20:47:22 UTC

String#[] の rdoc 用コメントを doc/string/slices.rdoc に移動してサンプルにマルチバイト文字を利用しています。 https://github.com/ruby/ruby/pull/5769

[86411f69f3] git 2022-04-06 20:47:46 UTC

version.h の日付更新

[399ef463f7] Alan Wu 2022-04-06 21:03:39 UTC

ruby コアのテスト用の test/unit の並列テストの worker がクラッシュした時の警告メッセージの英文法修正。

[16e6d7d186] David Rodríguez 2022-04-06 19:51:00 UTC

rubygems のテスト用 helper で setup 時の一時ディレクトリ作成のタイミングを早めて setup 中に一時ディレクトリが必要になった時にエラーにならないように調整しています。

[21c8b9eb99] Alan Wu 2022-04-06 22:39:27 UTC

399ef463f7d28efdec207d34b2357608c66ee7a6 の再修正で ruby コアのテスト用の test/unit の警告メッセージの英文修正。

[3607657e1c] S-H-GAMELINKS 2022-04-06 12:50:01 UTC

io.c のコメントに Linux Kernel の変更(コミット)へのリンクを貼っていたものがリンク切れしていたようなので修正しています。

[db3d111c1d] Nobuyoshi Nakada 2022-04-05 14:24:00 UTC

拡張ライブラリを含む bundled gems 用の exts.mk のテンプレートで拡張ライブラリを .exts/ でなく .bundle/gems/ の配下に展開するように対応しています。

[17ce0b9b84] Nobuyoshi Nakada 2022-04-06 11:25:53 UTC

db3d111c1d1e90b400f1e737ded6a4e4bdf2cec8 の続き? で拡張ライブラリ用の Makefile のテンプレートで make all のターゲットの依存関係に gems も追加しています。たぶん拡張ライブラリを含む bundled gems 用?

[d7afaf21f2] Nobuyoshi Nakada 2022-04-06 11:28:00 UTC

ext/extmk.rb で拡張ライブラリを含む bundled gems のビルドした拡張ライブラリを作成するディレクトリを .bundle/extensions/ 配下にするようにしています。

[bb0a22a8c0] Nobuyoshi Nakada 2022-04-06 13:57:01 UTC

make extract-gems で bundled gems のパッケージを展開する時に .bundle/specifications というディレクトリに .gemspec ファイルが展開されるようにしています。

[5c1b76a3a5] Nobuyoshi Nakada 2022-04-06 16:44:43 UTC

tool/rbinstall.rb で bundled gems の拡張ライブラリのインストール対応を追加しているようです。

[bff12e1a9a] S-H-GAMELINKS 2022-04-05 13:36:48 UTC

configure.ac のコメント内の URL がリンク切れになってたようなので更新しています。

[0b091fdac6] Jeremy Evans 2022-04-07 02:14:03 UTC

343ea9967e4a6b279eed6bd8e81ad0bdc747f254 で入って d1d48cb690fdad855da94b2a2d11721428bc06ba で一旦 revert された C 実装のメソッドのフレーム内からの Kernel#binding で例外を発生させる変更のリトライ。前回との違いは多くはなくて Proc#curry で作られたメソッドの対応のため call_trace_func() および rb_tracearg_binding() での iseq のタイプのチェック追加しています。 [ruby-core:107106] [Bug #18487]

[5af507f527] Nobuyoshi Nakada 2022-04-07 03:19:18 UTC

rb_objspace_call_finalizer() で finalizer の呼び出しのために rb_objspace_t::heap_pages::deferred_final を参照する時に ATOMIC_VALUE_EXCHANGE() を用いて race condition が起きないようにしています。複数 Ractor 時に finalizer の呼び出しがされないオブジェクトができてしまう可能性があったのかな? だとすると 3.1 にはバックポートが必要そうです。

[21f006f5f7] Nobuyoshi Nakada 2022-04-07 06:03:24 UTC

template/exts.mk.tmpl で exts.mk の内容から変数代入を切り出してるところで 17ce0b9b846a065065008b5fb2e9f8ad13058fa1 の変更で extensions という変数への代入以外をスキップするようになってしまっていたので不要になってた next 文を削除しています。

[f2377e4caa] Kazuhiro NISHIYAMA 2022-04-07 07:47:07 UTC

doc/documentation_guide.rdoc の typo 修正。

[23090cf681] Nobuyoshi Nakada 2022-04-07 08:55:51 UTC

rubyspec の C API テスト用拡張ライブラリで Windows 以外の環境でのみ利用される変数や関数の定義を警告抑制のため #ifndef _WIN32 でくくるようにしています。

[9e58c3c519] Nobuyoshi Nakada 2022-04-07 10:07:24 UTC

rubyspec の C API ruby_native_thread_p() のテストのための拡張ライブラリの関数で pthread_join(3) に渡す変数を type aliasing の警告抑制のため void* 型に宣言して後で VALUE* にキャストして取り出すように変更しています。