ruby-trunk-changes 2022-12-21

今日は Enumerator.product の細かな挙動の変更や Fiber local storage の仕様の変更、GC のチューニングなどがありました。

[c00f7cfb9b] Yusuke Endoh 2022-12-17 09:29:24 UTC

NEWS の拡張ライブラリ socket についての変更が組み込みクラスのセクションにあったので標準添付ライブラリのセクションに移動しています。

[950dc16989] Yusuke Endoh 2022-12-17 10:04:55 UTC

NEWS の coverage に関する項目も標準添付ライブラリのセクションに移動しています。

[25635bbcee] Yuta Saito 2022-12-20 07:32:14 UTC

NEWS の WASI プラットフォーム対応についての項目にリンクを追加しています。

[c72a748b27] Nobuyoshi Nakada 2022-12-20 04:33:57 UTC

win32/Makefile.sub にビルドディレクトリがソースディレクトリと異なっていて BASERUBY を利用可能な時の revision.h の依存関係を追加しています。 nmake で VPATH が期待したように動かない問題の対策だそうです。

[80e56d1438] Peter Zhu 2022-12-20 14:06:29 UTC

GC の Variable Width Allocation の対応で major GC が頻繁に発生してしまう可能性があったようなので slot のサイズ毎の heap のページ数の拡張の条件を調節しています。

[cf0b413ef8] Takashi Kokubun 2022-12-20 17:05:58 UTC

irb の組み込みコマンド debug で bundled gems の debug.gem を Gemfile.lock に記述がなくても読み込むためのハックで拡張ライブラリの拡張子を RbConfig::CONFIG['DLEXT'] を考慮するようにしています。

[b2bf5d237b] Takashi Kokubun 2022-12-20 17:06:44 UTC

irb のバージョンを 1.6.2 に更新しています。

[3ded50a36c] git 2022-12-20 17:08:54 UTC

b2bf5d237ba5f2d1ebaf12d164064c に追随して NEWS の default gems のバージョンリストを更新しています。

[88040063d0] Jean Boussier 2022-12-20 08:25:05 UTC

doc/packed_data.rdoc に Array#pack で指示子のバイト幅からあふれた数値を pack した時に上位ビットは特に警告なく無視されることについて追記しています。 [ruby-core:111339] [Feature #19245]

[45175962a6] Benoit Daloze 2022-12-20 16:59:46 UTC

0436f1e15a8e79ffef5ea412ac1312cbf9f063e6 で導入された Fiber local storage の実装で Fiber#new の storage キーワード引数に false を渡すと親 Fiber の storage を引き継ぐという仕様を削除しています。そんな仕様あったのか、見落していた。 https://bugs.ruby-lang.org/issues/19078#note-30 [Feature #19078]

[d557f17974] Benoit Daloze 2022-12-20 17:10:57 UTC

Fiber local storage の Fiber#storage= を実行した時に experimental カテゴリの警告を出力するようにしています。 [Feature #19078]

[0efa36ac06] Benoit Daloze 2022-12-20 17:21:43 UTC

45175962a6fd74ab2e9ba92f1280f3987af25494 の続きで Fiber local storage へのアクセスがその Fiber の実行コンテキストでないところから呼ばれたら例外を発生させるようにしています。 [Feature #19078]

[ae53986834] Peter Zhu 2022-12-20 20:06:06 UTC

GC.latest_compact_info の rdoc 用コメントのインデント修正。

[790b3f7bbd] Peter Zhu 2022-12-20 20:07:11 UTC

GC.latest_gc_info の rdoc 用コメントのインデント修正。

[63fe03aa4e] Peter Zhu 2022-12-20 20:09:14 UTC

GC.latest_compact_info と GC.latest_gc_info の rdoc 用コメントの call-seq の戻り値の記述を単に hash とだけ書くように変更しています。

[9f4472cad7] Peter Zhu 2022-12-20 20:16:36 UTC

GC 関連の rdoc 用コメント内でモジュールとしてでなく一般名詞(?)としての GC という記述がクロスリファレンスにならないようエスケープを追加しています。

[39e70eef72] Peter Zhu 2022-12-20 20:18:36 UTC

GC.compact の rdoc 用コメントのマークアップ修正。

[4495dea153] Benoit Daloze 2022-12-20 21:10:37 UTC

Fiber local storage の rdoc 用コメントの修正/追記など。

[33debffdd3] Benoit Daloze 2022-12-20 22:02:25 UTC

Fiber local storage に関する rdoc 用コメントで語彙の統一のための修正。

[47988e63d6] Sorah Fukumori 2022-01-08 05:03:02 UTC

標準添付ライブラリ readline の子プロセスを起動するテストで ruby コマンドを決め打ちで書いてたところがあったので EnvUtil.rubybin を利用するようにしています。

[2b96119fc0] Nobuyoshi Nakada 2022-12-20 23:34:23 UTC

Time#isdst の rdoc 用コメントのインデント修正。

[afd46429fc] Yuta Saito 2022-01-19 06:14:02 UTC

WASI プラットフォーム対応のための configure 用のマクロ定義 tool/m4/ruby_wasm_tools.m4 で環境変数 WASI_SDK_PATH がセットされてない時に無視せず configure 時のエラーにするようにしています。また CC/LD/AR/RANLIB などの変数に WASI_SDK_PATH を追加する時に既存の変数があったらそれも加味するようにしています。

[502ca37dde] Nobuyoshi Nakada 2022-12-21 05:07:54 UTC

標準添付ライブラリ optparse で引数のオプションに正規表現リテラルライクな記法をした時のオプションの u/e/s/n などの対応を追加しています。 Encoding を指定するオプションなんてあったんですね。

[1e989c49a8] Mau Magnaguagno 2022-12-21 05:28:48 UTC

MJIT の ruby 実装による MJIT::Compiler#cast_offset メソッドの実装で文字列を組み立てて String#to_s で変換してビット表現を作っていたのをシフト演算子で処理するようリファクタリングしています。 https://github.com/ruby/ruby/pull/6967

[9f42ee3e52] Nobuyoshi Nakada 2022-12-21 05:32:05 UTC

cont.c の C の関数定義のスタイル修正。

[1a24442193] Nobuyoshi Nakada 2022-12-21 06:18:34 UTC

拡張ライブラリ socket のテストで MinGW 環境での無視する例外の追加をしていたところを mswin 環境でも同じ例外を無視するように条件に追加しています。

[e894ff5ec1] Hiroshi SHIBATA 2022-12-21 05:19:17 UTC

gems/bundled_gems の net-imaprbs のバージョンを更新しています。

[684fa46ee6] Hiroshi SHIBATA 2022-12-21 09:57:34 UTC

NEWS から内容が空のセクションを削除しています。

[308ccbaeb2] Akinori MUSHA 2022-12-21 09:19:19 UTC

Enumerator.product がコールバックブロックに複数の引数を渡すようにしていたのを配列として渡すようにしています。ブロックパラメーターは受けるほうが複数で渡しているのが配列だと自動で splat するので Enumerator.product(...){|a,b,c| ... } みたいな記法だと従来と変化はないと思いますが引数が 1つだけの時には渡されるものが変化すると思います。 Enumerator.product(ary){|a,| ... } みたいに書いておけば要素だけ取得できそう。またこれは Enumerator.product() と引数なしで呼び出した時に [nil] になってたのを [[]] と一貫性のある結果にするための変更みたいです。

[cc4c28ec2e] Akinori MUSHA 2022-12-21 10:13:15 UTC

Enumerator.product にブロック渡しで呼び出した時の戻り値を作成した Enumerator::Product でなく nil にしています。