ruby-trunk-changes 2023-11-08

今日は irb の prism/rbs を利用した新しい補完処理の実装追加や default gems の標準添付ライブラリのバージョン更新などがありました。

[8ef7f27321] Matt Valentine-House 2023-11-02 23:29:20 UTC

prism の更新と compile.c の対応。

[f8456b650b] Nobuyoshi Nakada 2023-10-30 12:19:44 UTC

macOS でのコンパイル時の警告を抑制するための wrapper スクリプト tool/darwin-cc に "ignoring duplicate libraries" という警告も抑制対象に追加しています。

[6031fdc632] Nobuyoshi Nakada 2023-10-30 12:20:22 UTC

configure で LIBS や LDFLAGS を設定する処理の darwin のセクションで dsymutils コマンドの名前を CC_NO_WRAPPER という tool/darwin-cc が不要な CC のファイル名を元にして警告の出ない dsymutils を探すようにしているみたいです。

[f2d6b41c8e] Nobuyoshi Nakada 2023-11-06 14:29:24 UTC

tool/darwin-cc にさらに macOS でのビルド時に無視する警告を追加しています。

[8becc889db] Nobuyoshi Nakada 2023-10-30 12:21:50 UTC

C API RARRAY_AREF() で GCC 13 での警告抑制のため RBIMPL_WARNING_IGNORED() で局所的にコンパイラの警告抑制するようにしています。

[1cfc853be6] Nobuyoshi Nakada 2023-11-05 11:08:58 UTC

vm_eval.c の rb_yield_refine_block() でも GCC 13 での警告抑制のためダミーの変数代入を追加しています。

[e8ef010a81] ima1zumi 2023-11-07 15:38:47 UTC

標準添付ライブラリ reline のバージョンを 0.4.0 に更新しています。

[96557bc276] git 2023-11-07 15:39:46 UTC

NEWS の default gems のバージョンリストの reline のバージョンも 0.4.0 に更新しています。

[a294bb844c] Jean byroot Boussier 2023-11-07 15:49:36 UTC

YJIT のインスタンス変数セットのコード生成の処理で Object Shapes の too complex 時の対応を追加しているようです。https://github.com/ruby/ruby/pull/8857

[9877f3ada8] Takashi Kokubun 2023-11-07 15:54:33 UTC

YJIT で呼び出すメソッドの ISeq が非常にシンプルで定数を返すようなものであった場合にメソッド呼び出しを省略して結果を展開するようにする最適化をするようにしています。 https://github.com/ruby/ruby/pull/8855

[1910bd4247] Nobuyoshi Nakada 2023-11-07 14:26:14 UTC

rb_fstring() で文字列のバッファサイズを実際の文字列長に合わせて resize する処理を struct RBasic::flags に STR_NOFREE フラグが立ってた場合は静的な領域なので resize 不可なのでスキップするようにしています。

[392238e3fd] Peter Zhu 2023-03-03 21:05:01 UTC

T_TYPEDDATA 型のオブジェクトに Variable Width Allocation によって拡張した slot にデータを埋め込んでしまうことができるようにしています。rb_data_type_t::flags に RUBY_TYPED_EMBEDDABLE というビットフラグを追加してこれで制御しているのでオブジェクト(インスタンス)単位での判定ではなくクラス(より正確には内部的な TypedData の型)ごとに埋め込みを使うかどうか制御しています。ただ埋め込めないサイズだった時は従来のヒープにメモリを確保する処理に fallback するので開放時やメモリ使用量の取得時には結局インスタンスごとに RTYPEDDATA_EMBEDDED_P() で判定するようにしています。 https://github.com/ruby/ruby/pull/7440

[aa6642de63] Peter Zhu 2023-11-07 18:22:48 UTC

392238e3fd76beb923de1ba3f8d8d6bd28c7030e で導入した T_TYPEDDATA 型オブジェクトで Variable Width Allocation による拡張 slot を利用してデータを slot 内に埋め込むのを Time クラスで利用するようにしています。

[a1c61f0ae5] Alan Wu 2023-10-16 22:35:26 UTC

YJIT の JIT コード生成の処理の Rust 実装で CodePtr という構造体(っていうのかな)で利用する変数の型を 32bit にしてメモリ節約しているようです。

[7367336c4e] Alan Wu 2023-11-07 22:46:24 UTC

YJIT の Rust 実装でメモリ不足時のための処理? が異常終了を起こす可能性があったのを修正しているようです。よくわからないですが。

[d12e881009] BurdetteLamar 2021-09-21 17:38:28 UTC

拡張ライブラリ json の rdoc 用コメントのサンプルの追加。

[55840d0a33] Ellen Marie Dash 2023-09-29 03:15:35 UTC

rubygems の Gem::Installer.at のテストで発生する予定の例外として Errno::EACCES も許容するようにしています。

[42cf1307c3] Vít Ondruch 2023-10-20 16:01:14 UTC

rubygems の Gem::Installer.new の :user_install というオプションの指定時の処理が冗長だったので整理しているようです。おそらく挙動の変化はないんじゃないかなと思います。

[d0ad90df68] Vít Ondruch 2023-10-23 15:13:33 UTC

rubygems の Gem::Installer の :user_install と :install_dir の指定のある時のテストを追加しています。

[bd5368fdec] Vít Ondruch 2023-10-23 14:19:59 UTC

rubygems のテストで利用している util_installer というヘルパーメソッドの user という省略可能な第3引数を削除しています。

[ca7444cc44] Vít Ondruch 2023-10-23 15:12:51 UTC

rubygems の gem install で --install-dir と --user-install というコマンドラインオプションを両方指定したらエラーにしていたのを許容するようにしています。

[2d719cd146] David Rodríguez 2023-10-25 19:30:43 UTC

rubygems の Gem::Installer#install の実装で Zlib::GzipFile::Error という zlib の例外を捕捉して Gem::InstallError を投げなおすようにしていたのを削っています。

[7f7a7f13ed] David Rodríguez 2023-10-26 16:44:20 UTC

bundler による rubygems の installer の拡張 Bundler::RubyGemsGemInstaller で pre_install_checks メソッドを再定義して Gem::FilePermissionError という例外は無視するようにしています。

[5b076e00ce] David Rodríguez 2023-10-26 18:16:07 UTC

bundler で git fetch コマンドを使って特定の commit hash をチェックアウトする? 処理で古い git コマンドの対応のために uploadpack.allowAnySHA1InWant という設定を使うようにしています。なんだろこれ。

[05ea3bcf14] David Rodríguez 2023-10-03 11:03:21 UTC

bundler の Bundler::GemInstaller#install_from_spec で Bundler::APIResponseInvalidDependenciesError という例外を捕捉していたのを削っています。たぶん Bundler::BundlerError を継承しているので冗長だったということではないかと思います。

[a131ea39b7] David Rodríguez 2023-10-03 12:37:44 UTC

bundler が GEM_HOME などに他のユーザーの書き込み権限があるなどセキュリティ的に問題のある時の警告を出力する処理をリファクタリングしています。

[9f67118d7b] David Rodríguez 2023-10-26 18:50:06 UTC

bundler の依存関係解決で platform の指定のある時の処理をリファクタリング? しているようです。

[e6e4b4884d] David Rodríguez 2022-12-30 12:34:16 UTC

bundler の rdoc 用コメントを整形のために位置を移動などしています。

[d8e0337d02] Nobuyoshi Nakada 2023-10-22 16:42:18 UTC

bundler のテストで非 ASCII 文字が直接書かれていたところを \u{XXXX} の記法を利用するようにしています。

[c8d4b103a9] tomoya ishida 2023-10-21 11:56:21 UTC

標準添付ライブラリ irb の easter egg の実装の修正みたいです。 https://github.com/ruby/irb/pull/735

[d30ea5831e] Jun Aruga 2023-10-26 15:27:19 UTC

拡張ライブラリ openssl のテストの test/openssl/fixtures/ssl/openssl_fips.cnf.tmpl という不要なファイルを削除しています。

[2a6d6d3d65] Sutou Kouhei 2023-10-27 21:11:30 UTC

拡張ライブラリ fiddle で C の真偽値を ruby で true/false として取り出せるように TYPE_BOOL というタイプを追加しています。 https://github.com/ruby/fiddle/pull/130

[c19ea1066a] Sutou Kouhei 2023-10-30 05:48:07 UTC

2a6d6d3d65de43635a5f6ad38dbca170f1e40119 の続き? 拡張ライブラリ fiddle の ext/fiddle/closure.c に #include <stdbool.h> を追加しています。

[9c2e0d49fe] Sutou Kouhei 2023-10-30 05:57:38 UTC

拡張ライブラリ fiddle の ext/fiddle/conversions.c に重複して無駄な return 文が残っていたので削除しています。

[ce8301084f] Sutou Kouhei 2023-10-11 00:40:36 UTC

拡張ライブラリ strscan のバージョンを 3.0.8 に更新しています。

[2f07963609] git 2023-11-08 00:30:22 UTC

NEWS の default gems のバージョンリストの strscan のバージョンも 3.0.8 に更新しています。

[7ed37388fb] Sutou Kouhei 2023-11-08 00:46:10 UTC

拡張ライブラリ stringio の StringIO#gets などの行指向のメソッドで改行コードの文字列を rb_rs からバッファの Encoding にあわせて変換しておくように修正しています。UTF-16 などの非 ASCII 互換な文字エンコーディングでうまく処理できなくなっていたようです。 https://github.com/ruby/stringio/pull/69

[e344010465] tomoya ishida 2023-11-08 02:46:24 UTC

詳細は読んでいませんが irb の補完処理に prism による AST 取得と rbs による型情報を元にした補完処理を実装しているようです。 https://github.com/ruby/irb/pull/708

[906f6cfe64] "dependabot[bot]" 2023-11-08 02:18:03 UTC

GitHub Actions の workflow で利用している ruby/setup-ruby アクションのバージョンを更新しています。

[4da6333615] Nobuyoshi Nakada 2023-11-08 04:02:55 UTC

internal/ruby_parser.h の rb_parser_new() と rb_parser_compile_string_path() という関数の宣言を外部に公開するシンボルのセクションに移動しています。

[7f565b923a] Yusuke Endoh 2023-11-08 06:39:19 UTC

標準添付ライブラリ timeout のテストで未使用変数の警告を除去。

[8da33bff8c] tomoya ishida 2023-11-08 06:42:05 UTC

irbe34401046566ad1938b1eec654a6bf69b1319102 で導入した新しい補完処理の実装のテストを環境変数 WITH_TYPE_COMPLETION_TEST がセットされている時だけ実行するようにしています。 https://github.com/ruby/irb/pull/748

[8cd6c65af1] Sutou Kouhei 2023-11-08 07:03:31 UTC

拡張ライブラリ stringio のバージョンを 3.1.0 に更新しています。

[4abf6cde58] git 2023-11-08 07:05:17 UTC

NEWS の default gems のバージョンリストの stringio のバージョンも 3.1.0 に更新しています。

[d898e8d6f8] Jean Boussier 2023-11-07 17:09:55 UTC

コミットログを信じるなら Object Shapes の実装のリファクタリングらしいですが、どうみても too complex 対応まわりの修正っぽいですね。