ruby-trunk-changes 2022-03-02

今日は主に WASI 向けのビルドのための修正などがありました。

[33dadb2c8a] Yuta Saito 2022-03-01 12:27:41 UTC

dln.c の abi_check_enabled_p() の定義の条件に USE_DLN_DLOPEN が定義されてるかまたは Windows 環境(_WIN32 が定義されている)という条件を追加しています。 WASI 向けビルドで未使用関数の定義の警告を抑制するためとのこと。

[210f29a6bf] Peter Zhu 2022-03-01 14:42:32 UTC

33dadb2c8aeaaa03f90e4b0f2613031633aa8751 の再修正で abi_check_enabled_p() の定義の条件から _WIN32 の定義は抜いています。Windows ではサポートされないとのこと。

[25ad9eabc7] Peter Zhu 2022-03-01 14:44:39 UTC

ABI チェックの有無を示す RUBY_DLN_CHECK_ABI を 0 or 1 に定義するのではなくて利用可能な時にだけマクロ定義するというのに変更して #if のかわりに #ifdef でチェックするようにしています。

[a0e3da9ecc] Benoit Daloze 2022-03-01 15:49:23 UTC

シグナルハンドラ内での Thread#status のテストでシグナルが来るまで待つための sleep が短かすぎて失敗することがあったみたいで sleep 0.1 してたところを無引数の sleep にして割り込まれるまでずっと待つようにしています。

[7790905536] git 2022-03-01 15:50:19 UTC

version.h の日付更新

[fb724a887a] Peter Zhu 2022-02-28 14:39:16 UTC

拡張ライブラリ objspace の ObjectSpace.dump で空の配列の時に配列の要素が struct RVALUE 内に embed されているかどうかのフラグの出力も抑制されていたので常に表示するように変更しています。

[7a6ba30c24] Burdette Lamar 2022-03-01 16:45:18 UTC

doc/encoding.rdoc に Stream Encoding (IO などの default_external, default_internal のこと)のサンプルのセクションを追加しています。 https://github.com/ruby/ruby/pull/5610

[4bdb4a1873] Burdette Lamar 2022-03-01 18:07:54 UTC

IO の rdoc 用コメントのサンプルコードに全体的に IO#close でちゃんと閉じておくように追記しています。後始末は大切ですね。 https://github.com/ruby/ruby/pull/5615

[1289721892] Peter Zhu 2022-03-01 18:38:48 UTC

include/ruby/internal/abi.h に C++ソースコードから #inclue した時のための extern "C" のブロックの追加をしています。

[f7491e89b9] "S.H" 2022-03-02 00:27:30 UTC

compile.c で LINK_ELEMENT::type をチェックするのに直接メンバーを参照してたのを IS_LABEL() や IS_INSN() といったマクロを利用するようにリファクタリングしています。

[32ad8df9d1] Yuta Saito 2022-03-01 05:23:44 UTC

enc/depend の enc/trans/ 配下のソースコードコンパイルのためのターゲットがソースディレクトリ以外でのビルド時に自動生成される C ソースコードがソースディレクトリ配下にできてしまうというのを修正しているようです。が後に revert されています。

[0c90ca4dd0] Yuta Saito 2022-02-25 11:08:31 UTC

Dir.glob などの実装で使うファイルタイプを示す型の変換のためのマクロ IFTODT() が定義されていない時に dir.c で自前の IFTODT() の定義をするようにしていましたが、IFTODT が定義されていても DT_UNKNOWN が未定義の場合には独自実装のマクロで上書きするようにしています。DT_XXX は定義されているけど IFTODT() が未定義という環境(WASI)でうまくいかなかったそうです。

[fd2e1d3c4a] Kazuhiro NISHIYAMA 2022-03-02 04:05:36 UTC

標準添付ライブラリ rdoc の lib/rdoc/store.rb でキャッシュファイルから Marshal.load でオブジェクトをロードする時に IO#read で全体を読み込んでから渡していたのですが、Marshal.load は IO を受け取ることもできるので IO のまま渡して逐次読み込みさせるようにしています。

[2b5097b890] Yuta Saito 2022-02-25 02:08:45 UTC

rb_f_notimplement() の定義の本体を rb_f_notimplement_internal() という関数に切り出してこれを呼び出すだけという関数として定義するようにしています。 rb_f_notimplement() には通常の可変長引数を受け取るメソッド定義の関数にさらに marker という引数が追加された signature になっててそのまま rb_definemethod() などに渡すと型の不一致が起きるので、marker を省いた rb_f_notimplement_internal() を定義してこれを rb_method_definition_set() で利用するようにするためのようです。

[db740b7e5c] Nobuyoshi Nakada 2022-03-02 09:19:01 UTC

32ad8df9d1e07e1b2435a8890d070802fcd2989f の enc/depend の変更を revert しています。 tar パッケージなど生成されたソースコードがソースディレクトリ配下にある状態でのソースディレクトリ以外でのビルドが逆に失敗するようになってしまっていたため。

[f07f476518] Nobuyoshi Nakada 2022-03-02 09:37:53 UTC

test/excludes/TestGem.rb を追加して test_looks_for_gemdeps_files_automatically_from_binstubs というテストを一時的に除外するようにしています。