ruby-trunk-changes 2022-05-17

今日は主に autoload の排他処理の追加修正などがありました。

[f626998c4f] Samuel Williams 2022-05-16 12:50:02 UTC

32de6097b2b5d8394b3a1399e13d309444697954 の autoload のデッドロック修正の続きです。変数名の改名(static 変数の autoload_featuremap を autoload_features と改名)や構造体のメンバー名/関数名の変更などのリファクタリングが混じっていてわかりにくいですが autoload_features に格納する構造体の内容を変更して定数のロード要求毎にエントリを作るようにしてロードが完了したらエントリを消すようにしています。 https://github.com/ruby/ruby/pull/5910

[f2dc972940] Kazuhiro NISHIYAMA 2022-05-16 14:40:24 UTC

標準添付ライブラリ set の rdoc 用コメントの superset? メソッドの alias についてのリンクのメソッド名の typo を修正しています。

[2411f0ad8c] Nobuyoshi Nakada 2022-05-17 03:11:18 UTC

template/Makefile.in に target_os 変数の代入を追加しています。 a7577dbfd3ea53cccf7aaf94208069784ad17791 の make test-annocheck のためのターゲットに必要だったようです。

[1f537dc62d] git 2022-05-17 03:15:01 UTC

version.h の日付更新

[8a907da0f6] Nobuyoshi Nakada 2022-05-17 03:47:01 UTC

f626998c4fa62973cac3a027597f97cdacd0d3c5 で変数の参照を削除したため VM_ASSERT() に渡してた変数が(RUBY_DEBUG が偽の通常のビルドだと)未使用になって警告が出るので if 文による分岐を復活させています。これだと ele が NULL(0)だと VM_ASSERT(ele) を呼ぶという状況になってて謎ですが、VM_ASSERT() が空文になったらコンパイラが分岐ごと消してくれるのでどのみち無駄なコードは残らないということですね。なるほど。

[60d45b2ee8] Samuel Williams 2022-05-17 07:12:36 UTC

32de6097b2b5d8394b3a1399e13d309444697954f626998c4fa62973cac3a027597f97cdacd0d3c5 の autoload の排他処理修正の続きでやはり関数名の変更などが混じってますが autoload_data_type 型のオブジェクトの解放関数を ruby_xfree() に変更してたのをやっぱり専用の autoload_data_free() を(名前は変わってるけど)復活させて struct autoload_data::constants の linked list に要素が残ってたら free しない(メモリリークするけどコメントによるとそれは VM 終了時だけ、とのこと……)ようにしています。着々と複雑になっていっている。いやー、やはり autoload の排他処理は鬼門ですね。 https://github.com/ruby/ruby/pull/5911

[11af23ee92] Samuel Williams 2022-05-17 11:44:14 UTC

autoload_data_type 型オブジェクト の mark 関数内で struct autoload_data::constants の linked list が空だったら static 変数の autoload_features の st_table から対応する要素を消すようにしていたのを autoload_delete() 内で行なうように遅延しています。mark 関数内で削除処理するというのなんとなく意外なのでこのほうが自然ですね。おそらく生存期間が延びるというか定数の削除や上書きをしないと残り続けるようになるんだと思います。 https://github.com/ruby/ruby/pull/5912

ruby-trunk-changes 2022-05-16

今日は annocheck というツールによるセキュリティチェック? を行なう make test-annocheck の追加や bundler の高速化のための変更などがありました。

[774b9e27ae] Nobuyoshi Nakada 2022-05-13 07:01:36 UTC

標準添付ライブラリ racc で Racc::ParseError 例外の別名としてトップレベルの ParseError 定数にも代入しているところで :nodoc: タグをつけて rdoc によるドキュメント生成の対象外にしています。

[36efb2a146] git 2022-05-16 03:24:26 UTC

version.h の日付更新

[dccfff943c] Jun Aruga 2022-05-10 14:34:08 UTC

annocheck というツール(これ自体はコンパイルしたバイナリファイルのセキュリティチェック? をするものみたいです)を使ってチェックする make test-annocheck というターゲットを追加し、さらに GitHub Actions の .github/workflows/compilers.yml の workflow でこれを実行するようにしています。今のところ Fedra でしか動かない(?)ので Docker コンテナを使って実行するスクリプトを追加しています。

[c380aac19d] David Rodríguez 2022-05-13 09:26:20 UTC

bundler の依存関係解決のための Bundler::SpecSet#for で重複した spec の除去を最後にまとめてするようにしてローカル変数 specs に追加する都度 |= で重複除去してたのをやめています。このほうが高速だからということみたいです。

[641c3830df] David Rodríguez 2022-05-13 13:56:50 UTC

c380aac19d097f1d38d2299fe3f64567b42fb55d の再修正でさらに specs に追加するのに += ではなく Array#concat を使うようにしています。 += は Array#+ で新規に Array オブジェクトを作ってそれを再代入するので毎回オブジェクトが作られるのでそれを抑制し GC 圧力を抑えるためのようです。

[a7577dbfd3] Nobuyoshi Nakada 2022-05-16 08:56:32 UTC

dccfff943c3ea9defd91647cfa3fd8714041bb5a で追加した make test-annocheck を $(target_os) つきのターゲットに依存させて Linux でのみ実行するように変更しています。$(TEST_RUNNABLE) が yes の時に(他のテストと同様)実行するようにターゲットを作ってましたがこれは build した環境で実行できるかというチェックの結果みたいなのでコンテナを使って実行する test-annocheck ではこれを参照するのは不適切とのこと。

ruby-trunk-changes 2022-05-15

今日は autoload の排他処理の race condition の修正などがありました。

[48002ff187] Burdette Lamar 2022-05-14 13:38:09 UTC

標準添付ライブラリ fileutils の FileUtils#ln の rdoc 用コメントにサンプル多く使うように説明を追記しています。

[32de6097b2] Samuel Williams 2022-05-15 04:07:12 UTC

fd6cef79f54bebab1a49256034687dcc01a09eab で Module#autoload 用の排他処理を Thread::Mutex オブジェクトを使うように変更したものにやはり race condition があったらしく、さらにグローバル変数(正確には static 変数)として mutex を追加して Init_var_tables() で初期化するようにして struct autoload_state のリストを操作する時に排他処理するようにしています。また同じく static 変数の autoload_featuremap の初期化(rb_ident_hash_new() の呼び出し)を rb_autoload_str() の呼び出しにまで遅延していたのも Init_var_tables() でプロセス起動時に済ませておくようにしています。しかし他にも細かく const_tbl_update() に autoload 時用のフラグを引数に追加して定数のキャッシュ操作を変更してたりデバッグ用と思われるマクロが有効になってたりするので性能への影響はないか気になりますね。 https://github.com/ruby/ruby/pull/5898 [ruby-core:108552] [Bug #18782]

[105609d382] git 2022-05-15 04:07:36 UTC

version.h の日付更新

ruby-trunk-changes 2022-05-14

今日は主に標準添付ライブラリ logger のドキュメントの変更などがありました。

[90d8b7219e] BurdetteLamar 2022-05-12 12:27:52 UTC

標準添付ライブラリ logger の Logger クラスの rdoc 用コメントの構成を変更。

[e36a794f1a] Burdette Lamar 2022-05-12 14:48:36 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更で重複した空白を削除。

[b9311e646e] Burdette Lamar 2022-05-12 14:48:51 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更で重複した空白を削除。

[2427a11b35] Burdette Lamar 2022-05-12 14:49:12 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更 typo 修正。

[00635f8d41] Burdette Lamar 2022-05-12 18:20:24 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更で String#dump へのリンクを ruby-doc.org から docs.ruby-lang.org に変更。これ内部リンクでも、と思ったけど default gems なので独立した gem としてドキュメント生成した時にもリンクできないといけないので外部サイトにせざるを得ないんですね。

[45a92cc4fe] Burdette Lamar 2022-05-12 18:21:06 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更で Logger.new のサンプルにキーワード引数 level を追加しています。

[1f1283b927] Burdette Lamar 2022-05-12 18:21:20 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更でサンプルの出力例の typo を修正。

[55ba414405] Burdette Lamar 2022-05-12 19:42:33 UTC

標準添付ライブラリ logger の rdoc 用コメントの 90d8b7219e26135cb1003ebfc5884f132ba39867 の変更の typo 修正。

[09c72f41ce] Peter Zhu 2022-05-13 13:32:18 UTC

addr2line.c の print_line0() で line_info_t::sname が利用できる時には saddr がなくても表示するようにしています。関数名が表示できるみたいですね。

[9639dc91d9] Burdette Lamar 2022-05-13 20:02:05 UTC

標準添付ライブラリ logger のメソッド群の rdoc 用コメントの手直し。

[51fab06017] git 2022-05-13 20:02:30 UTC

version.h の日付更新

[708e839dee] Matt Valentine-House 2022-05-13 19:24:05 UTC

gc.c で Variable Width Allocation を無効にして(USE_RVARGC=0 で)ビルドした時に未使用の変数の警告が出るのを抑制するため変数を利用するように修正しています。

ruby-trunk-changes 2022-05-13

今日は YJIT の VM 命令 getblockparam 対応や bundler の不具合修正などがありました。

[f07a0e79a2] Aaron Patterson 2022-05-12 19:08:35 UTC

YJIT の ep を取得する処理で生成する機械語命令でアドレス計算のベースとするレジスタが固定になってたのを関数の引数で指定されたレジスタを使うように修正しています。コミットログみる感じだとたぶんこれまで同じレジスタしか渡してなくて実際に問題にはなってなかったようです。 https://github.com/ruby/ruby/pull/5882

[30d0f08c83] git 2022-05-12 19:08:52 UTC

version.h の日付更新

[a6ce73efec] Stan Lo 2022-05-12 18:22:00 UTC

README.md に https://docs.ruby-lang.org/ のサイトの日英のページへのリンクを追記しています。

[ebaf56c013] Aaron Patterson 2022-05-03 22:25:03 UTC

YJIT で VM 命令 getblockparam の JIT コンパイルに対応しています。 rb_vm_bh_to_procval() を Rust から呼べるようにして Proc オブジェクトに変換するようにしています。毎回変換しなくていいように rb_env_t にキャッシュする仕組みにも対応しているっぽい雰囲気を感じます。

[2d1032075a] Kazuhiro NISHIYAMA 2022-05-12 23:44:17 UTC

tool/rbinstall.rb で拡張ライブラリを含む bundled gem のインストール時のエラー対応のため環境変数 DESTDIR が設定されていた時にも拡張ライブラリのビルドを抑制する? workaround を利用するようにしています。

[4962e5c417] David Rodríguez 2022-05-11 12:17:10 UTC

bundler の Bundler::Source::Rubygems#install で引数名 opts を options と改名しています。

[4c9ddaac0d] David Rodríguez 2022-05-11 12:17:54 UTC

bundler で bundle install 時に lock file の指定が効かないことがあった不具合を修正しているそうです。どの差分が重要なのかはっきりわかりませんが Bundler::Installer::GemInstaller#install で previous_spec というオプションを渡すようにしているのが必要だったみたいです。

ruby-trunk-changes 2022-05-12

今日は主にドキュメントの追加修正や configure の --enable-mkmf-verbose オプション追加、YJIT での String#<< の最適化などがありました。

[dde9db64e0] BurdetteLamar 2022-05-10 17:48:53 UTC

標準添付ライブラリ fileutils の rdoc 用コメントを強化しています。

[becafe1efb] BurdetteLamar 2022-05-10 21:13:26 UTC

dde9db64e08916ddc2bcb4c64de8f53a3def9e87 の rdoc 用コメントの typo 修正やサンプルの追加。

[c00feffb46] Jemma Issroff 2022-05-09 15:45:50 UTC

doc/contributing.rdoc を doc/contributing.md に改名したうえで内容を doc/contributing/ サブディレクトリの下に分割してそれらにリンクを張るように再構成しています。 README からビルド方法のコメントも削ってるんですが、contribute しようという人でなくてもビルドするとはあると思うけど……。

[e88ada4699] Noah Gibbs 2022-05-11 15:20:21 UTC

YJIT で "<<" メソッドで receiver が String オブジェクトの時に Encoding の変換が不要なケースで rb_str_cat() を直接使えるようにして高速化しているようです。 Rust 実装を読めるようにしないとなぁ。 https://github.com/ruby/ruby/pull/5896

[4978c48629] git 2022-05-11 15:20:38 UTC

version.h の日付更新

[4da0f7a7f5] Peter Zhu 2022-05-11 13:14:16 UTC

標準添付ライブラリ rdoc の lib/rdoc/markup.rb 内の rdoc 用コメント内のリンクを修正しています。

[dbca60c58d] BurdetteLamar 2022-05-11 15:48:19 UTC

標準添付ライブラリ fileutils の rdoc 用コメントを強化しています。

[26a07b8b46] Stan Lo 2022-05-11 16:03:39 UTC

doc/contributing/ にさらに making_changes_to_stdlibs.md というファイルに分けて標準添付ライブラリへの contribute について記述を追記しています。

[f6cc4b9737] Kaíque Kandy Koga 2022-05-11 20:32:33 UTC

Thread::Backtrace.limit の rdoc 用コメントの typo 修正。

[9f9a0940dd] Alexey Mostovoy 2022-05-11 20:26:10 UTC

doc/syntax/literals.rdoc のマークアップの間違いの修正。

[054ae999dc] Frank Schmitt 2022-02-15 23:48:09 UTC

標準添付ライブラリ uriURI::File.build メソッドの rdoc 用コメントに path 部分は escape しておくべきというコメントとサンプルを追記しています。

[fbebfe1697] Jeremy Evans 2021-03-04 22:05:18 UTC

標準添付ライブラリ uriURI::Generic#decoded_user, #decoded_password というメソッドを追加して、URI.decode_uri_component でデコードした文字列を返すようにしています。 [ruby-dev:47768] [Feature #9045]

[40ca208a6d] Benoit Daloze 2021-07-28 10:00:33 UTC

標準添付ライブラリ uriURI.register_schema でクラス名を文字列で渡した時に upcase してクラス名を探すようにしています。

[019cbded90] Jun Aruga 2022-04-21 20:59:59 UTC

configure に --enable-mkmf-verbose というオプションを追加して拡張ライブラリのビルド時の mkmf.rb の生成する Makefile の V 変数(コマンド内容を出力するようにする)の設定に反映させるようにしています。

[7522343351] Jun Aruga 2022-05-09 15:13:13 UTC

GitHub Actions のいろんなコンパイルオプションを試す workflow に configure 時に 019cbded90ade76fdb87d02bd4d444724429fc92 で追加した --enable-mkmf-verbose をつけたビルドを追加しています。

ruby-trunk-changes 2022-05-11

今日は主に bundler の不具合修正がありました。

[54b1548760] David Rodríguez 2022-04-01 07:23:09 UTC

bundler のテストで required_ruby_version のテストのために ruby の major.minor までのバージョンを取り出したものをローカル変数に入れて使ってたのを helper メソッドに切り出して毎回作りなおすようにしています。これメソッドを他でも使うならともかくロカル変数に入れてたほうがパフォーマンス的には良かった気がするけど。まあテストなのでパフォーマンスはあまり問題ではないでしょうけど。

[c582d9862a] David Rodríguez 2021-11-12 11:11:42 UTC

bundler のメッセージの変更に追随してテストのチェックを修正しています。

[8f1a8e68ba] David Rodríguez 2022-04-06 07:22:49 UTC

bundler の依存関係解決で d22511fd7595ef1819baa42851d598d95b8f4d00 で入ってた不具合を修正しています。

[6758b76bd1] git 2022-05-11 07:56:06 UTC

version.h の日付更新