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 のテストの未使用の変数の警告抑制のため不要な代入を削除しています。