ruby-trunk-changes 2023-11-13

今日は M:N Thread に対応して Thread のイベントコールバックを呼び出す C API の仕様変更や rubygems/bundler の変更などがありました。

[76dc327eef] KJ Tsanaktsidis 2023-11-07 11:06:33 UTC

objspace_reachable_objects_from_root() という関数で RB_VM_LOCK_ENTER()/RB_VM_LOCK_LEAVE() で VM 全体のロックを取るようにしています。 multi Ractor 対応かなと思いましたが後で f1b95095d6635567cc5820b3eb40d9618faa73ed で revert されていました。

[9a62fd3cba] KJ Tsanaktsidis 2023-11-07 11:08:34 UTC

ObjectSpace.dump_all を複数の Ractor で? 呼び出すと異常終了することがあったということで reachable_objects_from_callback() で rb_ractor_t::mfd の値を保存しておいて復旧させるようにしています。しかし後で a1887f4dc2e62455a605944468e59e647f698f1a で revert されていました。

[43b8b88751] Vít Ondruch 2023-11-09 14:59:18 UTC

rubygems のテストでエラー時にエラー内容がわかりやすいようにエラーメッセージについての assertion を最初にするようにしています。

[ea7cde64fb] David Rodríguez 2022-02-09 18:21:23 UTC

bundler の Bundler::LazySpecification の dependencies という属性を代入可能にしています。

[636b70d2a6] David Rodríguez 2022-02-09 18:31:49 UTC

bundler の Bundler::LazySpecification で required_ruby_version と required_rubygems_version という属性も追加しています。

[196d1bf56e] David Rodríguez 2022-02-10 09:05:46 UTC

bundler の Bundler::LazySpecification の生成時に new メソッドの引数で source を渡すようリファクタリングしています。

[bd6aaa78c3] David Rodríguez 2022-07-08 12:20:50 UTC

bundler の Bundler::SpecSet#merge というメソッドが未使用なので削除しています。

[58b0a67432] David Rodríguez 2023-03-06 16:58:13 UTC

bundler のテストでヘルパーメソッドを切り出すリファクタリング

[f273132bc0] David Rodríguez 2023-03-16 16:23:19 UTC

bundler の Bundler::LazySpecification.from_spec というメソッドを追加するリファクタリング

[59b361aaca] David Rodriguez 2023-10-20 08:22:51 UTC

bundler のテストのヘルパーメソッドを切り出すリファクタリング

[435eb56f61] David Rodríguez 2023-03-17 13:18:30 UTC

bundler で Gemfile.lock に開発環境の platform が書かれてしまって本番環境にデプロイした時に動かないみたいなよくある問題への対策のなにからしいですが詳細はよくみてません。

[54511303a4] David Rodríguez 2023-10-26 20:11:34 UTC

rubygemsruby の 2.7 以前のバージョンのサポートを落として古い ruby のために書かれていたコード類を削除しているようです。

[50482cd1e5] David Rodríguez 2023-10-26 20:12:02 UTC

bundler でも ruby の 2.7 以前のサポートを切って古い ruby 対応のためのコードを削除しています。

[a4d80eee17] David Rodríguez 2023-10-26 20:17:09 UTC

rubocop のチェック時の想定する ruby バージョンも 3.0 以降に引き上げてその結果の指摘を反映させているみたいです。主に正規表現を freeze していたのをやめています。デフォルトで freeze されるようになったからですね。

[c7bf511cbf] David Rodríguez 2023-10-27 18:43:26 UTC

bundler の gemspec ファイルの spec.required_rubygems_version を 3.2.3 以降に引き上げています。

[e6c84d05d0] David Rodríguez 2023-10-27 18:44:45 UTC

bundler で不要な dup での複製を削っています。

[3757d9027c] David Rodríguez 2023-10-27 18:50:20 UTC

rubygems の実装でも不要な dup での複製を削っています。

[e2d7e53c5c] David Rodríguez 2023-10-27 18:52:01 UTC

rubygems で文字列リテラルに前置の "+" をつけて fstring 化していたのをやめています。magic comment の frozen_string_literal: true がついているので不要ということかな。

[5bdbe242b3] David Rodríguez 2022-10-25 13:21:26 UTC

bundler で gem の development dependency が Gemfile で上書きされている時? の警告出力を追加しているようです。

[28f7a46f44] Vít Ondruch 2023-11-09 15:34:27 UTC

rubygems のテストで assertion の順序をいれかえてエラー時の内容がわかりやすいものが最初に assertion にひっかかるようにしています。

[5bb7562872] Vít Ondruch 2023-11-10 14:14:13 UTC

rubygems のテストで Gem のインスタンス変数 @default_specifications_dir の設定を変更しています。よくわかりませんが環境依存のテストのエラー対策のためみたいです。

[952de171c0] Sorah Fukumori 2023-11-12 22:57:04 UTC

tool/make-snapshot で version.h の RUBY_PATCHLEVEL_STR マクロを置換するための正規表現で # のあとの空白を許容するようにしています。 68df43788dc237a1071f02b2d82768f844696315 の変更で空白が入ってから置換できなくなっていたようです。

[44a6a13cbe] Nobuyoshi Nakada 2023-11-13 06:59:03 UTC

doc/timezones.rdoc の Time.new の引数に渡す timezone を指定するオブジェクトに関する説明を修正しています。

[4376a17552] Nobuyoshi Nakada 2023-11-13 07:04:49 UTC

doc/timezones.rdoc の markup のためのタグの閉じ忘れを修正。

[9ca41e9991] Jean Boussier 2023-11-09 12:56:29 UTC

Thread のライフサイクルのイベントのコールバック関数を呼び出すための rb_thread_execute_hooks() という関数で未使用だった rb_internal_thread_event_data_t という型の引数に Thread オブジェクトの VALUE を渡すようにしてイベント発生元の Thread を明示的に渡すようにしています。コミットログによると M:N Thread の導入により rb_nativethread_self() などで native thread から Thread が 1:1 対応しなくなるのでコールバック関数側にどの Thread のイベントなのか知らせる必要ができたということみたいです。

[a1887f4dc2] Jean Boussier 2023-11-13 07:13:33 UTC

9a62fd3cbae2ebb60e2f9cad782af1ad18db4319 の ObjectSpace.dump_all の同時実行対応を revert しています。 9ca41e999159096cb0872b4babbb94bf5d1af4ce の修正も関係しているのかな?

[f1b95095d6] Jean Boussier 2023-11-13 07:13:33 UTC

76dc327eeffefe02577999fe5f8215f762a581b6VM 全体のロック追加も revert しています。これも 9ca41e999159096cb0872b4babbb94bf5d1af4ce の修正によって不要になったということかな?

[50a5b76dec] Yuta Saito 2023-11-11 22:18:01 UTC

WASI 環境向けの実装で rb_jmpbuf_t は Asyncify という Emscripten の機能を使っているととても大きなサイズの構造体になることがあるのでスタックオーバーフローを引き起こすことがあるとのことで heap からメモリ領域を確保するようにしています。

[8e64c87f64] Nobuyoshi Nakada 2023-11-08 04:35:44 UTC

bundler の rubygems 拡張で必要に応じて明示的な require "rubygems" をするようにしています。