ruby-trunk-changes 2022-09-11

今日は Encoding#replicate メソッドの deprecated 警告追加と、MJIT の修正とそれに関連して拡張ライブラリ fiddle の修正などがありました。

[c722597103] Nobuyoshi Nakada 2022-09-10 08:19:14 UTC

common.mk で sed コマンドを使う時に引数をシングルクオートでくくって渡していたところをダブルクオートまたはクオートなしにしています。 Windows 環境で GnuWin32 版の sed を使っているとシングルクオートが扱えないそうです。

[f641179525] Nobuyoshi Nakada 2022-08-28 07:28:41 UTC

win32/Makefile.sub で生成する config.status で NULLCMD を ":" 固定でセットしていたのを NULLCMD 変数を利用するようにしています。

[14bcf69c9c] Benoit Daloze 2022-09-03 10:46:57 UTC

Encoding#replicate メソッドで deprecated 警告を出力するようにしています。3.3 からこのメソッドは削除する予定とのこと。 [ruby-core:109371] [Feature #18949]

[c22a668580] git 2022-09-10 17:03:41 UTC

version.h の日付更新

[aa8a3b2358] Takashi Kokubun 2022-09-10 23:59:27 UTC

MJIT が worker 用の子プロセスを fork するための関数 rb_mjit_fork() で rb_thread_atfork() を呼び出して他の Thread を停止するようにしています。また MJIT 有効時の割り込み処理 rb_threadptr_execute_interrupts() で子プロセスの終了処理をするのを main Ractor だけにするように修正しています。

[7232f264df] Takashi Kokubun 2022-09-11 01:14:56 UTC

GitHub Actions の MinGW 環境向け workflow でテスト時の make の -j オプションを渡さないようにしています。

[106744107b] Takashi Kokubun 2022-09-05 07:06:43 UTC

拡張ライブラリ fiddle の定数 Fiddle::PackInfo::PACK_MAP でポインタ型と unsigned の整数型の pack 用の指示子を修正しています。signed の時と同じになってたみたいです。

[472e7b8518] Takashi Kokubun 2022-09-11 06:39:32 UTC

MJIT の C binding で値のやりとりのための Array#pack に渡す指示子に 106744107b485a371ed788fe590c6ce778de16df で修正していた拡張ライブラリ fiddle の Fiddle::PackInfo::PACK_MAP を独自に修正して使っていたのを直接利用するようにしています。

ruby-trunk-changes 2022-09-10

今日は主に YJIT の生成するコードの最適化の変更などがありました。

[848037cadd] Kevin Newton 2022-09-09 15:37:41 UTC

YJIT の Rust 実装で aarch64 アーキテクチャ向けの機械語生成時のオペランドを表す構造体(っていうのかな?)を追加してコード整理するリファクタリングをしているようです。 https://github.com/ruby/ruby/pull/6315

[2a08a39d7d] git 2022-09-09 15:38:09 UTC

version.h の日付更新

[5b5c627d37] Maxime Chevalier-Boisvert 2022-09-09 22:41:19 UTC

YJIT の x86_64 向けの機械語生成の冗長な命令を削る最適化をしているようです。 https://github.com/ruby/ruby/pull/6348

[518301883e] Lars Kanis 2022-09-09 17:32:20 UTC

MinGW でのビルドエラー修正のため cygwin/GNUmakefile.in で $(RBCONFIG) に fake.rb を利用するようにしています。 cross compiling でなくても fake.rb が必要になることがあるんですね。

文字列オブジェクトの coderange が ENC_CODERANGE_BROKEN になっていることを判定するマクロ is_broken_string() があるのに直接比較しているところがあったので is_broken_string() を利用するようにリファクタリングしています。

[d319184390] John Hawthorn 2022-09-05 22:20:08 UTC

YJIT の中間 IR 生成時の不要な分岐命令をなくす最適化。

[5e39b3b844] John Hawthorn 2022-09-09 04:51:39 UTC

同じく YJIT で中間 IR を生成する時に不要な分岐命令を抑制する最適化。

[92b907d12d] Benoit Daloze 2022-09-03 13:47:49 UTC

ruby のテスト用のライブラリ test/unit で Warning[:deprecated] = true をセットして deprecated 警告が常に出力されるようにしています。また環境変数 BACKTRACE_FOR_DEPRECATION_WARNINGS が設定されていたらさらに Warning.warn を再定義してバックトレースを標準エラー出力に出力するようにしています。

ruby-trunk-changes 2022-09-09

今日は文字列の連結の最適化、Windows でのビルドエラー修正、YJIT の生成する機械語の最適化、1行パターンマッチの不具合の修正、パッケージ作成時の拡張ライブラリが利用する外部ライブラリの同梱をやめる変更などがありました。

[cd1724bdde] Jean Boussier 2022-09-08 10:43:03 UTC

rb_str_concat_literals() という文字列リテラルの連結に使う関数で C の文字列バッファと Encoding と coderange を指定して連結する rb_enc_cr_str_buf_cat() という関数を使っていたのを String オブジェクトの連結する rb_str_buf_append() を呼び出すようにしています。 rb_str_buf_append() はその中で receiver の String オブジェクトの Encoding が ASCII_8BIT や UTF-8 だった時にショートカットがあってこちらを呼ぶほうが高速になるようです。

[b7fa78b0f3] Jean Boussier 2022-09-08 12:07:43 UTC

vm_insnhelper.c の vm_objtostring() という関数で recv 引数が既に T_STRING 型オブジェクトだったらそれを返すのをメソッドの探索の前にして不要な処理をスキップするようにしています。

[55fef084da] Nobuyoshi Nakada 2022-09-05 11:17:05 UTC

Windows 環境で ftruncate(3) のかわりに chsize() という API を利用するコードがあったけどこれは使われなくなっていたとのことで preprocessor 分岐と不要になったコードを削除しています。

[e2ccb316b4] Nobuyoshi Nakada 2022-09-05 11:23:27 UTC

off_t という型を直接使用していたところを rb_off_t を利用するようにしています。 Windows 環境で型の衝突によるビルドエラーが起きることがあったみたいです。 [Bug #5317]

[7a849e1903] YO4 2022-09-02 15:53:09 UTC

Windows 版の fd が端末か確認する関数でキー入力を確認する時に下位 1 byte 部分だけチェックしていたのが Unicode 文字だと下位 1 byte が 0 で誤判定する可能性があったとのことで修正しています。

[81e7573a64] YO4 2022-09-02 16:03:10 UTC

7a849e1903f3943351773190a1e39e0445b55204 の続きで Windows 版で端末判定する関数でキーの押下イベントでなく KeyUp のイベントでも判定できるように処理を追加しています。

[28030f7b54] YO4 2022-09-07 13:45:43 UTC

81e7573a64b0544da7172966b88e797033b1eae6 のさらに続きで判定のために比較している定数を VK_MENU というマクロ(?)を参照するようにリファクタリングしています。

[6d93644ba1] git 2022-09-08 15:46:21 UTC

version.h の日付更新

[e4f5296f06] Nobuyoshi Nakada 2022-03-31 00:39:16 UTC

拡張ライブラリ fiddle のために libffi を、拡張ライブラリ psych のために libyaml をパッケージに同梱するためにダウンロードしてパッチを当てる指示をするファイル ext/fiddle/extlibs と ext/psych/extlibs を削除しています。3.2 からは外部ライブラリの同梱はやめると。

[35cfc9a3bb] Kevin Newton 2022-09-08 21:09:50 UTC

YJIT の Rust 実装で機械語の mov 命令を減らす最適化を行なっているようです。 https://github.com/ruby/ruby/pull/6342

[59eadf3d25] Nobuyoshi Nakada 2022-09-09 02:35:47 UTC

tool/ln_sr.rb で Windows 環境では symlink の作成に強い権限が必要なので Errno::EACCES が発生することがあるのでこれを無視するように rescue の対象に追加しています。

[db0e0dad11] Kazuki Tsujimoto 2022-09-09 05:00:27 UTC

パターンマッチの後置 in や "=>" による 1行マッチングで Hash のキーにマッチさせる時に文法エラーになっていた不具合を修正しています。 [ruby-core:109813] [Bug #18990]

[2dcaeb75ff] Nobuyoshi Nakada 2022-09-09 02:51:11 UTC

ruby 実装の組み込みメソッド定義を C の関数にする時に使う RB_BUILTIN_FUNCTION() で通し番号が負のものは番兵として最後に置いているエントリなので name メンバーの値を NULL にするようにしています。呼び元で NULL を渡している引数を preprocessor の #_name で展開しているのがコンパイラによっては問題になるのかな。

[be56033248] Nobuyoshi Nakada 2022-09-09 02:52:57 UTC

template/prelude.c.tmpl で各種 prelude.rb を C のソースコード内に埋め込む時にコメントを処理する正規表現を変更しています。 rdoc 用コメントの対応のためみたいです。

[56e5210cde] Aaron Patterson 2022-09-09 06:19:23 UTC

MJIT 用に libclang を使った C の binding を生成する tool/mjit/bindgen.rb で C のソースコードをパースしてマクロの展開をするシンプルな処理をもう少し複雑なマクロに対応するため専用のクラスを導入して C の部分的なパーサー? とその結果の AST から ruby 実装への変換用のクラスを実装しています。 https://github.com/ruby/ruby/pull/6343

[9faa9ced96] Nobuyoshi Nakada 2022-09-09 05:13:42 UTC

ruby 実装による組み込みメソッドの ruby スクリプト内で require と require_relative をサポートして、コンパイルした ISeq を prelude.c に埋め込む時に先に指定のライブラリの .rbinc を #include するソースを吐き出すようにしています。

[aff6534e32] Kazuki Yamaguchi 2022-09-08 13:12:02 UTC

string.c の rb_str_update() から str_modify_keep_cr() の呼び出しを削除しています。必要な時は他の処理の途中で呼び出されるので冗長なだけでなく不要なコピーがされることがあったとのこと。

[cfe10e482e] Nobuyoshi Nakada 2022-09-09 09:58:07 UTC

Struct#new の rdoc 用コメントにキーワード引数 keyword_init: true を指定した時に作成された Class からインスタンス作る時の引数の指定についての記述を変更しています。

[b350053ae4] David Rodríguez 2022-09-07 21:01:03 UTC

rubygems の依存関係解決の優先度で使う platform 判定で =~ の右辺値と左辺値をいれかえてます。NilClass#=~ を消したんだっけ、と思ったけどそんなことはなかったので、spec.platform のオブジェクトに特有の実装があるのかな。

ruby-trunk-changes 2022-09-08

今日は主に ripper のビルドのための依存関係の修正や id.h の生成方法のリファクタリングなどビルドプロセスの変更がありました。

[24fd2f73d0] David Rodríguez 2022-09-07 05:13:04 UTC

rubygems と bundler を upstream から最新版を同期しています。

[b1efdcee6e] git 2022-09-08 02:25:32 UTC

version.h の日付更新

[332d29df53] Nobuyoshi Nakada 2022-09-08 02:49:21 UTC

Kernel#Integer と String#to_i の rdoc 用コメントに基数の指定に 0 を指定した時(prefix を利用する)と負の数値を指定した時(絶対値を基数として使うが prefix があったらそちらを優先して引数の指定は無視する)の挙動について追記しています。負の数値を指定できるの知らなかった。

[26c4230404] Nobuyoshi Nakada 2022-09-06 09:57:31 UTC

win32/setup.mak で BASERUBY の実行チェックする時に --disable=gems オプションをつけるようにしています。

[e76a550876] Nobuyoshi Nakada 2022-09-06 11:22:21 UTC

win32/mkexports.rb で Cygwin や MSys 環境でのシンボル名の変換の時に行末の CR を削る必要があったみたいで String#chomp! の呼び出しを追加しています。

[70e6be2b05] rm155 2021-07-20 01:48:33 UTC

標準添付ライブラリ ipaddr の定数に格納する文字列オブジェクトを freeze するようにしています。複数 Ractor 環境での動作のため。

[78af05ba0f] rm155 2021-07-27 16:47:31 UTC

標準添付ライブラリ forwardable でも定数に格納するバージョン番号の文字列を freeze しておくようにしています。これも Ractor 対応のためみたいです。

[7400628cb0] Xin Li 2022-09-08 08:37:37 UTC

qsort_r(3) が利用可能な時にはそっちを使うので qsort_s(3) の wrapper である ruby_qsort() の定義をしないように preprocessor 分岐を追加しています。 [ruby-core:109845] [Bug #18997]

[a977c66312] Nobuyoshi Nakada 2022-09-08 06:25:05 UTC

id.h を生成するテンプレート template/id.h.tmpl で組み込みの Symbol の ID の開始オフセットとして 128 という固定の値を使って数値を決めてたのを defs/id.def でデータ生成する時点で決めておいてテンプレートに使う数値をデータとして渡すようにしています。実際の ID が変わるというよりロジックをテンプレート内から外に出したというリファクタリングかと思います。

[bcf82b7c26] Nobuyoshi Nakada 2022-09-08 06:36:04 UTC

tool/id2token.rb で parse.y から拡張ライブラリ ripper 用の ripper.y に変換するための処理をする時に id.h に依存せずかわりに defs/id.def を利用するようにしています。 ext/ripper/ripper.c の生成時に id.h に依存するのをやめるためとのこと。コミットログによると id.h はビルドディレクトリにできるけど ripper.y, ripper.c はソースディレクトリ内で生成するので、ソースディレクトリに作るもの(パッケージに含まれるもの)がビルドディレクトリに作られるものに依存するのはよくない、ということだそうです。id.h もパッケージに含まれるものなんだけどなんでビルドディレクトリに作られるんだろう。

[e0cd466ae7] David Rodríguez 2022-09-08 10:10:34 UTC

bundler のテストの未使用の変数の警告抑制のため不要な代入を削除しています。

ruby-trunk-changes 2022-09-07

今日は MJIT のコンパイル処理をフックするメソッドの変更やデバッグ用のメソッドの追加、拡張ライブラリ psych の Date/DateTime のダンプ時の暦の扱いの修正(変更)などがありました。

[51022b8e06] Nobuyoshi Nakada 2022-09-06 15:04:28 UTC

MJIT を有効にしてビルドしている時に thread.c に #include <sys/wait.h> を追加しています。 FreeBSD で必要だったとのこと。

[a9c85c0c45] git 2022-09-06 15:05:24 UTC

version.h の日付更新

[87ef90909b] Takashi Kokubun 2022-09-06 20:54:37 UTC

MJIT の ruby 実装 mjit_compiler.rb のデバッグ用のメソッドを削除しています。そのかわり(?) RubyVM::MJIT::Compiler.rb_iseqw_to_iseq という ISeq を C の binding に変換するメソッドを追加しています。

[4c1f6750f2] Antonio Paulino 2022-08-29 19:00:07 UTC

rubygems の gem info コマンドの --version オプション指定時の不具合修正。

[d5752f73d2] Takashi Kokubun 2022-09-06 21:21:00 UTC

RubyVM::MJIT::Compiler.rb_vm_insn_encode というクラスメソッドを追加して VM 命令のアドレスを得ることができるようにしています。デバッグ用途のメソッドみたいです。

[bfa6d0f6d7] Hiroshi SHIBATA 2022-09-07 00:41:28 UTC

8cd6f2a0872e74c6cc089d2a4f8140483080c67a の修正で FreeBSD で拡張ライブラリ socket のテストをスキップするのに omit を使っていたのですが ensure 節のあるテストメソッドだったので、テストメソッドの定義自体を後置 unless で削るようにしています。

[cbdde8e0c5] Nobuyoshi Nakada 2022-08-09 00:22:53 UTC

拡張ライブラリ psych で YAML に Date や DateTime をダンプする時にカレンダーの種類をグレゴリオ歴を前提として扱うようにしています。

[1b034d66f5] Chad Wilson 2022-09-03 16:18:15 UTC

拡張ライブラリ psych の JRuby 版のときに使う snakeyaml というライブラリ? のバージョンの指定を更新しています。セキュリティ関係の修正みたいですね。

[3a575d13d5] Nobuyoshi Nakada 2022-09-06 04:45:45 UTC

configure 時に cross compiling する時には BASERUBY が必須なのでなかったら明示的にエラーにするようにしています。

[6a43245e6c] Nobuyoshi Nakada 2022-09-06 06:13:27 UTC

common.mk の enc.mk の生成ルールで enc/make_encmake.rb を実行するために fake.rb を利用するように書いてたのを $(BOOTSTRAPRUBY_COMMAND) (≒BASERUBY) を利用するようにしています。

[f24c65ea7e] Takashi Kokubun 2022-09-07 01:25:16 UTC

b726c06e7eeafff52e368179dbe79a11b1aff975 で RubyVM::MJIT::Compiler.compile メソッドを定義した時に MJIT の JIT コンパイルの挙動をフックできるようにした時に check_unit_queue() の処理をスキップさせるよう考慮が必要だったみたいなのでこの関数の先頭に分岐を追加しています。

[e6b47f2fb0] Nobuyoshi Nakada 2022-09-07 01:27:29 UTC

拡張ライブラリ psych のテストの一部をカレンダーの種類についての考慮の修正で実行除外する必要がなくなったので test/excludes/Psych/TestDateTime.rb を削除しています。

[f0661bf3a0] Takashi Kokubun 2022-09-07 01:40:22 UTC

MJIT の実装で mjit_add_iseq_to_process() の先頭で b726c06e7eeafff52e368179dbe79a11b1aff975 で追加した --mjit=pause を指定して precompiled header の作成などを遅延した時の考慮を追加しています。

[496bdf01e2] Takashi Kokubun 2022-09-07 01:46:49 UTC

同じく b726c06e7eeafff52e368179dbe79a11b1aff975 で追加した --mjit=pause による MJIT の準備の遅延化に追随した対応。

[cac0dcfbff] Takashi Kokubun 2022-09-07 05:26:29 UTC

b726c06e7eeafff52e368179dbe79a11b1aff975 で MJIT のコンパイル処理をフックするために定義するクラスメソッドとして RubyVM::MJIT::Compiler.compile をチェックするようにしてましたが、RubyVM::MJIT.compile をチェックするように変更しています。見逃してましたけどこの近くのコメントをみると RubyVM::MJIT.compile って書いてありましたね。

[1f91dcdab3] Nobuyoshi Nakada 2022-09-06 06:15:47 UTC

6a43245e6cda89eddd105f5a6e0182a7229657af で enc.mk 作成のために使うようにしてた変数 BOOTSTRAPRUBY_COMMAND の定義を common.mk に移動して、このコマンドで起動する ruby に渡すオプション(-r./xxx-fake)の変数の定義を template/Makefile.in や win32/Makefile.sub に分割するようにしています。sub make に変数を伝播させなくても良いようにするためとのこと。

[35c493ecf5] Nobuyoshi Nakada 2022-09-07 05:41:37 UTC

4d469472e2fda05cbdef98ce2a1fe945f2355f51 で tool/make-snapshot で cross compiling 時の cross.rb の内容を警告でダンプするようにしていたのを --verbose を指定している時だけ出力するようにしています。

ruby-trunk-changes 2022-09-06

今日は主に MIT の実装の修正の続きや FreeBSD で失敗するテストのスキップ追加などがありました。

[6bc6c8d031] David Rodríguez 2022-09-05 06:54:22 UTC

bundler のテストで Windows 環境で default gems の fiddle の不具合回避のために入れてたコードが不要になったとのことで削除しています。

[27eb7158ee] Takashi Kokubun 2022-09-05 15:23:53 UTC

MJIT の実装で Primitive.cexpr! に渡すための変数が ruby レベルでは未使用のため警告されてしまうので変数を介さないようにしたりアンダースコアではじまる変数名に変更したりして回避しています。

[ca172540d0] git 2022-09-05 15:27:06 UTC

version.h の日付更新

[63ed61e322] Takashi Kokubun 2022-09-05 15:37:07 UTC

mjit_init() の先頭で RubyVM::MJIT::Compiler という定数が定義されているかチェックして、未定義だったら MJIT 無効化するようにしています。

[2657d8efb9] Hiroshi SHIBATA 2022-09-06 01:40:56 UTC

標準添付ライブラリ set の gemspec ファイルの version を 1.0.3 に更新しています。

[6d10865cc2] git 2022-09-06 01:42:25 UTC

2657d8efb9d38761c1e09f54fadea41fcc08d090 に追随して NEWS の default gems のバージョンリストの set のバージョンも更新しています。

[f4dbfa0f04] Takashi Kokubun 2022-09-06 06:40:12 UTC

定数の再代入時の警告のテストが MJIT を有効にすると失敗するとのことで調査のあいだ一時的にスキップするようにしています。

[f6925fab85] Takashi Kokubun 2022-09-06 02:43:46 UTC

コマンドラインオプション --mjit-wait が指定されて JIT コンパイルを待つ場合は子プロセスを fork せずにそのまま実行するようにしています。

[5b3bd91fcb] Takashi Kokubun 2022-09-06 03:33:51 UTC

コマンドラインオプション --mjit=pause を追加して pre-compiled header の生成などの MJIT の起動時の準備を遅延させることができるようにしています。

[341b40bd0c] Takashi Kokubun 2022-09-06 03:57:24 UTC

MJIT の C 実装の関数で RubyVM::MJIT::Compiler や RubyVM::MJIT::C などの定数の値を毎回 rb_const_get() しているのを mjit_init() 内で取得した結果をグローバル変数に格納してこれを使いまわすようにしています。

[b726c06e7e] Takashi Kokubun 2022-09-06 04:31:07 UTC

MJIT で RubyVM::MIT::Compiler に compile という特異メソッドを定義した場合に JIT コンパイルの処理をこのメソッドの実装に委譲するようにしています。

[4214023309] Takashi Kokubun 2022-09-06 06:59:05 UTC

5b3bd91fcba7224e9ece54c862dc96461cf4bf79 および b726c06e7eeafff52e368179dbe79a11b1aff975 で MJIT のオプション情報を保持する構造体 struct mjit_options にメンバーを追加したので MJIT の ruby 実装からの C の binding のためのスクリプト lib/mjit/c_32.rb および lib/mjit/c_64.rb をこれに追随させています。 lib/mjit/c_32.rb のほうのメンバー名が1つ typo してますね。

[3f9125aaba] Takashi Kokubun 2022-09-06 07:09:29 UTC

4214023309ec68f49b30d8a1ee691b05ce75e287 の lib/mjit/c_32.rb の変更でメンバーのオフセットが間違ってたみたいで修正しています。

[03ae415d50] Takashi Kokubun 2022-09-06 07:22:43 UTC

ということで 4214023309ec68f49b30d8a1ee691b05ce75e287 の lib/mjit/c_32.rb の変更の typo 修正。

[8cd6f2a087] Hiroshi SHIBATA 2022-09-06 07:02:06 UTC

標準添付ライブラリ drb と socket のテストで FreeBSD でランダムに失敗するものは FreeBSD ではスキップするようにしています。

[29bc3e0daf] Hiroshi SHIBATA 2022-09-06 07:24:55 UTC

bootstraptest/test_io.rb でも FreeBSD でランダムに失敗するものをスキップするようにしています。

[c664264c07] David Rodríguez 2022-09-05 05:05:44 UTC

bundler のテストで default gems の syntax_suggest の追加に対応しています。

[1f77cc3894] David Rodríguez 2022-09-06 04:46:21 UTC

bundler のテストで ruby core でテストしている時の失敗の対策のために default gems の set のバージョン指定を追加しています。コメントの Molinillo ってなんだろ? [追記] bundler で利用している依存関係解決のためのライブラリみたいですね。[/追記]

ruby-trunk-changes 2022-09-05

今日は主に MJIT の実装を ruby 実装+libclang による C binding に移行する変更や cross compiling 向けビルドプロセスの修正の続きなどがありました。

[76664905a5] Nobuyoshi Nakada 2022-09-04 14:49:56 UTC

common.mk の fake.rb のルールで $(arch) が "noarch" だった時にルールを無視させるようにしています。 2767cb282531be10c6393d3d7c48fcdd2935ca4d で tool/make-snapthot で noarch-fake.rb というファイルを作成するようにしたことの対応のようです。

[e83183b498] git 2022-09-04 15:00:20 UTC

version.h の日付更新

[51291ade70] Nobuyoshi Nakada 2022-09-04 15:16:47 UTC

file.c の rb_utimensat() の定義の前後に RBIMPL_WARNING_PUSH()/RBIMPL_WARNING_POP() のマクロで局所的に警告を抑制するようにしているところでセミコロンが不要だったので削除しています。

[f6d569b7c0] Takashi Kokubun 2022-09-05 01:21:56 UTC

MJIT で mjit worker のために fork する時に rb_fork() を直接つかわずに rb_mjit_fork() という関数を定義してこれを使うようにして disable_child_handler_before_fork() や before_fork_ruby() などの fork 前後に必要な処理の呼び出しを追加しています。

[68a092a469] Nobuyoshi Nakada 2022-09-05 02:00:20 UTC

template/fake.rb.in で fake.rb 生成する時の処理の変更ですが、そもそもここで何しているかよくわかってないので難しいですね……。

[85a483169f] Nobuyoshi Nakada 2022-09-05 02:09:24 UTC

tool/make-snapshot で 2767cb282531be10c6393d3d7c48fcdd2935ca4d で作るようにした noarch-fake.rb を空ファイルでなく require_relative 'cross' というのを書いておくようにしています。 cross.rb なんて作られるっけ? cross compiling の時だけかな?

[1420333455] Nobuyoshi Nakada 2022-09-05 02:25:42 UTC

68a092a4691efc8aba9a8ae7b27c2ad51c840bf9 の template/fake.rb.in の変更の再修正。 RUBY_DESCRIPTION_WITH_{MJIT,YJIT} の設定のデフォルトを version.h の RUBY_DESCRIPTION の定義を使うようにしているみたいです。

[f7cf641469] David Rodríguez 2022-05-09 08:40:23 UTC

bundler の platform の musl 環境対応の修正。

[45fe7f7575] Mike Dalessio 2022-09-03 17:30:07 UTC

bundler の bundle add サブコマンドに --path オプションを追加して Gemfile に gem を直接ローカルのファイルパス指定で追加できるようにしています。

[4d469472e2] Nobuyoshi Nakada 2022-09-05 04:08:23 UTC

68a092a4691efc8aba9a8ae7b27c2ad51c840bf91420333455ba335f46887ee7a06c4ee95faa37ad の template/fake.rb.in の変更や 85a483169f8381bec08ff2c9a9fc66167fc8a84a の tool/make-snapshot の再々修正。というかデバッグのため tool/make-snapshot で cross.rb の内容を警告メッセージにダンプするようにしています。

[277498e2a2] Takashi Kokubun 2022-09-05 04:44:52 UTC

f7cf641469161c3770b58f79e08e312512212aa8 の bundler の musl 環境向け再修正でテストが失敗しはじめたとのことで nil チェックを追加して回避しています。

[3767c6a90d] Takashi Kokubun 2022-09-05 04:53:46 UTC

MJIT の worker の実装を組み込みメソッドの ruby 実装の機構を使って ruby スクリプトとして実装するようにしています。しかしそこから呼ぶ C の実装は組み込みメソッド定義用の ruby 側で用意した機構ではなくて libclang と ffi-clang というライブラリを利用して独自に呼んでいるみたいです。これにより自動生成する C の VM コードから MJIT 関連の実装が削除されています。まあなんか独自に頑張るより既存の仕組みにのっかったほうがメンテナンス性などでいいよねってことですかね。 https://github.com/ruby/ruby/pull/6028

[3eca1e438d] Hiroshi SHIBATA 2022-09-05 00:15:30 UTC

bundler に upstream から最新版? をマージしています。

[967fe334bb] Takashi Kokubun 2022-09-05 06:22:51 UTC

3767c6a90d8970f9b39e9ed116a7b9bbac3f9f26 の MJIT の実装の変更の ruby 実装から C の型の定義を取り込む時に s390x も 64bit 環境の定義を使うように修正しています。

[d77c037a16] Takashi Kokubun 2022-09-05 06:25:26 UTC

3767c6a90d8970f9b39e9ed116a7b9bbac3f9f26 および 967fe334bb7f503788816df475970b8b0c3ffb3e の再修正で MJIT の実装で 64bit 環境かどうかの判定を RUBY_PLATFORM でルールベースで判定するのではなくて fiddle を使って直接的に判定するようにしています。

[c2986f7d28] Takashi Kokubun 2022-09-05 07:26:24 UTC

3767c6a90d8970f9b39e9ed116a7b9bbac3f9f26 で MJIT の実装を ruby 実装に変更した時に追加された ruby スクリプトのテンプレート tool/ruby_vm/views/mjit_instruction.rb.erb でメソッドの第1引数に * がついてるのが警告になるので明示的な引数のかっこを追加しています。

[06eb9af8c0] Takashi Kokubun 2022-09-05 08:06:37 UTC

make mjit-bindgen という make ターゲットを追加して tool/mjit/bindgen.rb を実行して C の関数呼び出しのためのスクリプト生成するようにしています。また GitHub Actions の workflow を新たに追加して make mjit-bindgen を実行するようにしています。 https://github.com/ruby/ruby/pull/6327

[cb26917d1c] Takashi Kokubun 2022-09-05 08:17:12 UTC

configure で MJIT のサポート外とするプラットフォームに Solaris を追加しています。

[fb769aaa14] Takashi Kokubun 2022-09-05 06:12:37 UTC

doc/mjit/mjit.md を削除して doc/mjit.md に移動しビルド方法などを追記しています。

[915cbdb226] Takashi Kokubun 2022-09-05 09:02:13 UTC

Solaris に続き s390x でも MJIT をサポートしないようにしています。

[113581d288] Hiroshi SHIBATA 2022-09-05 10:05:23 UTC

標準添付ライブラリ set の gemspec ファイルの version を 1.0.3.dev に更新しています。

[4331d4bbf0] git 2022-09-05 10:06:58 UTC

NEWS の default gems のバージョンリストにも set を追加しています。

[a8a7c9d05d] Nobuyoshi Nakada 2022-09-05 09:21:29 UTC

doc/regexp.rdoc の \K についてのドキュメントに後読みを使った時との共通点だけでなく差異(マッチ位置の offset がどこになるか)についても追記しています。 [ruby-core:99580] [Bug #17120]