ruby-trunk-changes 2022-09-15

今日は YJIT の最適化や splat つきのメソッド呼び出しの JIT コンパイル対応追加、rubygems の不具合修正などがありました。

[f2429f0af5] Nobuyoshi Nakada 2022-08-19 06:22:22 UTC

YJIT を有効にしていると不要でも miniruby のビルドが毎回走ってしまうのを回避するため yjit/yjit.mk の依存関係の書きかたを変更しているようです。

[e1a9d88494] Nobuyoshi Nakada 2022-09-14 04:46:45 UTC

f2429f0af57536a354159f08aac729d6e4cdef38 の続き。 yjit/yjit.mk の libyijt.a のビルド後に touch コマンドでファイルの更新日時を更新するようにしています。 Rust のビルドでキャッシュが効いててファイル変更がない場合があるためとのこと。更新がないのならそれはそれでいいような気もしますが……。

[075df960c9] Nobuyoshi Nakada 2022-09-14 06:23:04 UTC

e1a9d8849403afea04ca2e11f97245590dcc1597 のさらに続き。 yjit/yjit.mk で touch コマンド実行するところを変数にして touch している理由についてコメントを追記しています。

[f512df7398] Kenta Murata 2022-09-14 13:17:39 UTC

configure に --with-gmp-dir オプションを追加して OPT_DIR 変数にセットするようにしています。 OPT_DIR を上書きしちゃっていいのかな? と思ったけど --with-opr-dir の前に書いてあるから --with-opt-dir が指定されたらそっちは追加するようになってるので大丈夫なのか。 また --without-gmp オプションが指定されたら --with-gmp-dir の指定も無効にするようにしています。 https://github.com/ruby/ruby/pull/6366

[960db13c47] "S.H" 2022-09-14 14:10:21 UTC

parse.y の kwd_append() 関数内の処理を opt_arg_append() という関数に委譲するようにリファクタリング

[2e25b85a7e] Kenta Murata 2022-09-14 12:20:32 UTC

f512df73986c74e2f4bd65ca642879a0618da213 の追加修正。やっぱり --with-gmp-dir の指定を OPT_DIR にセットする時に上書きじゃなくて追加にするようにしています。ただこのため --without-gmp の指定があった時に OPT_DIR を戻すというのはされなくなっています(空に戻してたので)。 https://github.com/ruby/ruby/pull/6366

[8f37e9c918] Takashi Kokubun 2022-09-14 14:27:52 UTC

YJIT の機械語生成時に使用するレジスタやメモリの bit 幅が小さい結果だけ必要なときにわざわざ and していたのを直接必要な bit 幅で扱うように最適化しています。 https://github.com/ruby/ruby/pull/6359

[758a1d7302] Jimmy Miller 2022-09-14 14:32:22 UTC

YJI はこれまで *args による配列を展開した引数渡しがサポートされていなかったみたいでその対応を追加しています。 https://github.com/ruby/ruby/pull/6341

[b6a9e68391] Nobuyoshi Nakada 2022-09-14 14:08:24 UTC

common.mk に noarch-fake.rb のターゲットを追加して touch コマンドで空ファイルを生成するようにしています。確か 2767cb282531be10c6393d3d7c48fcdd2935ca4d で tool/make-snapshot でパッケージの作成時に空ファイルを作るようにしてましたがリポジトリのソースツリーからのビルドでも必要だったみたいです。

[0953ea64a2] git 2022-09-14 15:32:30 UTC

version.h の日付更新

[fb2e9053b3] Nobuyoshi Nakada 2022-09-14 15:47:46 UTC

Travis-CI のビルド時に gems/src/ ディレクトリを作成しておくようにしています。

[d5cdc2edd0] Nobuyoshi Nakada 2022-09-14 15:58:54 UTC

Travis-CI での arm 版のビルド時に事前にインストールするサードパーティのライブラリに libyaml-dev:armhf を追加しています。

[f98d6d3f38] John Hawthorn 2022-09-14 20:15:55 UTC

YJIT で respond_to? メソッドの呼び出しを専用の関数呼び出しに展開するように対応を追加しています。 https://github.com/ruby/ruby/pull/6363

[513a11b477] Jemma Issroff 2022-09-14 20:48:40 UTC

benchmark/ にインスタンス変数についてのベンチマークを追加しています。

[ae2e8d364f] Nobuyoshi Nakada 2022-09-14 16:31:34 UTC

irb のヒストリファイルの保存についてのテストで利用する一時ディレクトリ名に pid を含めたけど Dir.mktmpdir が生成する時に含めてくれてるので削っています。

[752ae81ed1] Nobuyoshi Nakada 2022-09-14 16:33:17 UTC

irb のヒストリファイルのテストでファイルができてるかどうかの確認の assert を assert_not_send を使うようにしてよりわかりやすいエラーメッセージが得られるようにしています。

[d152ac677c] Nobuyoshi Nakada 2022-09-15 00:25:16 UTC

GitHub Actions の CodeQL を使ったチェックに lib/syntax_suggest の配下は無視させるように設定を追加しています。時間がかかるためみたいです。ファイルサイズ的にはそんなにすごく大きなライブラリじゃないんですけどね。

[ec0d9a6a6f] Hiroshi SHIBATA 2022-09-15 02:22:09 UTC

bundler のテスト用の lockfile の PLATFORMS の指定に arm64-darwin-22 というのを追加しています。最新の macOS でのテストのためとのこと。

[6b2b9e0019] Hiroshi SHIBATA 2022-09-15 02:23:38 UTC

ec0d9a6a6f5da97a6727629ee8bd6c282c519697 に続いて bundler のテスト用の lockfile の PLATFORMS に x86_64-darwin-21 を追加しています。あれ、arm と x86_64 でバージョン番号が違う?

[bf72afa766] Nobuyoshi Nakada 2022-09-15 00:59:05 UTC

bundler で Persistent::Net::HTTP::Persistent というクラスを継承してモンキーパッチしたクラスを利用していたのをやめています。古い TLS バージョンに対して警告を出力するためとのことですが RubyGems.org が古い TLS バージョンを拒否するようになったので不要になったとのこと。

[68a5b0f086] Kevin Newton 2022-09-06 16:33:23 UTC

rubygems でパッケージを展開する時にファイルの mode を設定する時に下位16bit を越えたビットが立ってるような値が指定されてても無視するようにしています。おかしな tar パッケージを展開した時に RangeError が発生するのを抑制するためみたいです。しかしそういうおかしなパッケージならエラーになったほうがいいような気もしますが、パッケージを作成した環境によっては正常な手順で作成された tar パッケージでも起こりえるということみたいです。