ruby-trunk-changes 2021-10-02

今日は multi thread で正規表現マッチ利用時にグループ化した部分マッチの capture に失敗することがある不具合の修正や Marshal.load が compare_by_identity のフラグを復元していなかった不具合の修正などがありました。

[c7414f517f] Nobuyoshi Nakada 2021-10-01 02:32:39 UTC

tool/m4/ruby_define_if.m4 で confdefs.h を生成する時に cat コマンドを利用していたのを printf(1) コマンドを利用するようにしています。

[0ad3ed5e0e] Nobuyoshi Nakada 2021-10-01 11:25:30 UTC

tool/m4/ruby_universal_arch.m4 に RUBY_UNIVERSAL_CHECK_HEADER というマクロの定義を追加して configure.ac で CPU アーキテクチャx86_64 か i386 の時だけ x86intrin.h ヘッダの存在チェックをするようにしています。

[9b04909a85] Jeremy Evans 2021-09-30 19:35:27 UTC

vm_insnhelper.c の check_match() と vm_opt_newarray_max()、vm_opt_newarray_min() などの最適化命令用の関数から Refinements を意識しながらメソッド呼び出しする処理を vm_eval.c の rb_vm_call_with_refinements() という関数に括り出して共有するようにリファクタリングしています。

[e8d6076fbd] Jeremy Evans 2021-09-30 19:36:00 UTC

vm_method.c の callable_method_entry_refeinements() という関数名の typo を修正して callable_method_entry_refinements() に変更しています。

[eaeb0a008b] git 2021-10-01 17:13:05 UTC

version.h の日付更新

[27d9935d51] Burdette Lamar 2021-10-01 18:44:28 UTC

Enumerable のいくつかのメソッドの rdoc 用コメントの手直し。 https://github.com/ruby/ruby/pull/4918

[8c10fd2583] Burdette Lamar 2021-10-01 22:51:39 UTC

Enumerable のいくつかのメソッドの rdoc 用コメントの手直し。 https://github.com/ruby/ruby/pull/4922

[601c67e42c] Nobuyoshi Nakada 2021-10-01 13:03:48 UTC

cygwin/GNUmakefile.in に MinGW での警告抑制のため miniruby のリンク時に -Wno-maybe-uninitialized オプションを追加するようにしています。

[806e7947fe] Nobuyoshi Nakada 2021-10-01 23:40:37 UTC

id をそのままハッシュ値として使う ident_hash をキャパシティを指定して作る rb_ident_hash_new_with_size() という関数を追加しています。

[d087214658] Nobuyoshi Nakada 2021-09-22 16:36:27 UTC

Hash#compare_by_identity が呼ばれた Hash を Marshal.dump したものを Marshal.load するとこのフラグが復元されないという不具合を修正しています。 806e7947fec775ce27aa783ee00dbd8f52685db8 で追加した rb_ident_hash_new_with_size() を利用しています。 [ruby-core:105282] [Bug #18171]

[abc0304cb2] Jeremy Evans 2021-08-11 20:50:59 UTC

正規表現Regexp#match を複数の Thread で使うと正規表現内のグループ化に対応するマッチ部分の capture が MatchedData に含まれなくなる場合があるという不具合を修正しています。これは結構重要な不具合ですがテストをみるに再現条件が限定的でなかなか発覚してなかったみたいですね。 [ruby-core:101901] [Bug #17507]

[b8327fb8b1] manga_osyo 2021-10-01 23:44:22 UTC

標準添付ライブラリ reline の Reline::Key.match? メソッドを if 文のかわりに case 文を使うようにリファクタリングして、テストも追加しています。

ruby-trunk-changes 2021-10-01

今日は configure.ac の修正や Array#min,max の最適化命令が Refinements の影響を考慮するようにする変更、Hash の要素の loopup の最適化などがありました。

[912a8dcfc5] Nobuyoshi Nakada 2021-09-30 09:24:37 UTC

configure.ac で autoconf のバージョンをチェックしてるところで AC_PROG_CC が使えることも条件に追加しています。

[529fc204af] Jean byroot Boussier 2021-09-30 14:50:31 UTC

Marshal.load で引数に Proc オブジェクトでコールバックを渡している場合に、不完全な状態のオブジェクトが渡されて呼び出される可能性があったので、ロードが完了していないオブジェクトを憶えておく st_table を構造体に追加してロード完了するまでは呼び出さないようにしています。 https://github.com/ruby/ruby/pull/4866 [ruby-core:105104] [Bug #18141]

[bb488a1a7f] John Hawthorn 2021-09-29 02:13:24 UTC

hash.c の obj_any_hash() から rb_hash() を呼び出してたのを呼び元に展開して、rb_hash() のほうが any_hash() 経由で rb_any_hash() を呼び出すようにリファクタリングしています。ベンチマークの追加されているのとコミットログから高速化のためみたいですけど、any_hash() が組み込みの型のオブジェクトの時に直接関数呼び出しするようになっているのでそれが常に効くようにするためみたいです。再定義時の脱最適化はどうするんだろう……と思ったけどコミットログによるとこの関数が呼ばれる場所からは hash メソッドの再定義は効かないと明記されてるのでいいらしい。
RB_BIGNUM_TYPE_P() を呼ぶように変更したのが RB_TYPE_P() に戻ってるけど、これはわざとか変更前からブランチが切られたからか。

[40ef034599] git 2021-09-30 20:07:10 UTC

version.h の日付更新

[a55a5fc684] Burdette Lamar 2021-09-30 20:46:54 UTC

Enumerable のいくつかのメソッドの rdoc 用コメントを手直ししています。 https://github.com/ruby/ruby/pull/4917

[1f5f8a187a] Jeremy Evans 2021-09-30 22:18:14 UTC

Array#min と Array#max の receiver がリテラルの場合の最適化命令 opt_newarray_min と opt_newarray_max に Refinements でメソッドが再定義されているケースを考慮するようにしています。最適化命令の実装である vm_opt_newarray_{min,max}() 関数の引数に rb_execute_context_t を追加して Refinements を考慮した method entry を取得するようにしています。これって再定義されてるかどうかの判定のほうは手を入れなくてもいいんですね。 [ruby-core:105352] [Bug #18180]

[ca3cc677b3] Nobuyoshi Nakada 2021-10-01 01:41:54 UTC

configure.ac の AC_C_BIGENDIAN に引数を追加して macOS での Universal Binary のビルド時の対応を追加しています。 [ruby-core:105180] [Bug #18156]

[77804be457] Kazuhiro NISHIYAMA 2021-10-01 01:14:43 UTC

GitHub Actions の macOS 向けの workflow で macOS の 10.15 と 11 の両方でテストするように matrix に追加しています。

[8e9d696ed0] Kazuhiro NISHIYAMA 2021-10-01 01:34:50 UTC

GitHub Actions の依存関係の更新チェックの workflow でも利用する os として macos-latest と書いてたところを macos-11 に変更しています。

[60d0421ca8] Nobuyoshi Nakada 2021-09-27 16:32:50 UTC

起動時に最初から $LOADED_FEATURES 内のエントリ追加されている文字列を filesystem encoding に変換しなおすようにしています。 [ruby-core:105416] [Bug #18191]

[b6534691a1] Nobuyoshi Nakada 2021-09-28 14:24:40 UTC

60d0421ca861944459f52292d65dbf0ece26e38a の続きで起動時に $LOADED_FEATURES の内容の Encoding をセットする時に不要なコピーを作らないようにしています。

[409dbc951b] Nobuyoshi Nakada 2021-09-28 14:25:51 UTC

60d0421ca861944459f52292d65dbf0ece26e38ab6534691a16d751d59fc572d5dddebcaeb21f007 のさらに続きで Encoding のセットのしなおしがあった時だけ vm->loaded_features_snapshot の内容の書きかえを行なうようにしています。

[842b0008c1] Nobuyoshi Nakada 2021-09-29 10:59:31 UTC

60d0421ca861944459f52292d65dbf0ece26e38ab6534691a16d751d59fc572d5dddebcaeb21f007409dbc951b9875d27bd73748c88e15386473cffb のさらに続きで $LOADED_FEATURES に格納されていた文字列が filesystem encoding に対して不正なバイト列だった時にはコピーせずそのままにしておくようにしています。

[3e46117d3f] Nobuyoshi Nakada 2021-09-29 11:01:14 UTC

60d0421ca861944459f52292d65dbf0ece26e38ab6534691a16d751d59fc572d5dddebcaeb21f007409dbc951b9875d27bd73748c88e15386473cffb842b0008c132dd587f09766a228041afb7fed24f とも関係ありそうですが file.c の copy_path_class() で展開した文字列に元の文字列の Encoding をコピーするようにしています。ただし元の文字列の Encoding が US-ASCII の時には単に filesystem encoding に変更するようにしています。

ruby-trunk-changes 2021-09-30

今日は標準添付ライブラリ reline の文字削除コマンドに削除数指定に対応するようにする変更などがありました。

[5eb8b6d1bd] aycabta 2021-09-28 10:21:31 UTC

標準添付ライブラリ reline の Reline::LineEditor#em_delete_prev_char メソッドにキーワード引数を追加して複数文字削除するコマンドに対応できるようにしています。

[bbf98b572e] Nobuyoshi Nakada 2021-09-29 13:31:24 UTC

misc/lldb_cruby.py の rp などで String オブジェクトの表示時に Encoding を表示する時に名前が取得できない Encoding だった時は encindex をそのまま表示するように対応を追加しています。

[49edaa061f] Burdette Lamar 2021-09-29 23:04:29 UTC

Enumerable の min, max, minmax, {min,max,minmax}_by などのメソッドの rdoc 用コメントを手直ししています。 https://github.com/ruby/ruby/pull/4910

[565649cfe8] git 2021-09-29 23:04:49 UTC

version.h の日付更新

[90f2ab9d62] 卜部昌平 2021-09-30 04:26:56 UTC

cont.c の fiber_raise() および rb_fiber_raise() の第3引数に const を付加し、また Doxygen 向けのドキュメント用コメントを追加しています。

ruby-trunk-changes 2021-09-29

今日はドキュメントの変更やリファクタリングだけでした。

[1e10099e09] Burdette Lamar 2021-09-28 16:38:35 UTC

Enumerable のメソッドの rdoc 用コメントのサンプルの強化など手直し。 https://github.com/ruby/ruby/pull/4906

[fd76117a5d] git 2021-09-28 16:38:55 UTC

version.h の日付更新

[d3bd73823b] S-H-GAMELINKS 2021-09-28 13:46:47 UTC

vm_trace.c の rb_add_event_hook() で rb_add_event_hook2() にまるごと委譲するリファクタリング

[0182bf615a] Burdette Lamar 2021-09-28 23:20:58 UTC

Enumerable の one?、none?、min メソッドなどの rdoc 用コメントの手直し。 https://github.com/ruby/ruby/pull/4908

ruby-trunk-changes 2021-09-28

今日は各種標準添付ライブラリの更新がありました。ostruct の Ractor 対応、Date/DateTime の strftime の %v の表示の変更などがありました。

[dfa67db62b] Nobuyoshi Nakada 2021-09-27 07:01:53 UTC

ENV の文字列の Encoding についてのテストで assert_equal に失敗した時のメッセージに Encoding を埋め込むようにしています。

[09863a4cd8] Nobuyoshi Nakada 2021-09-27 12:01:36 UTC

.cirrus.yml で make test-all 時に CIRRUS_COMMIT_MESSAGE という環境変数を消しておくようにしています。どうもこの環境変数に不正な Encoding の文字列が設定されることがあり(コミットログの内容がセットされる?)、そのせいでテストが失敗することがあったみたいです。

[5ec730cda5] Nobuyoshi Nakada 2021-09-27 07:18:16 UTC

09863a4cd8eb40b34b310083d8cdda899ab5bcc1 のかわりに .cirrus.yml で環境変数 LANG に C.UTF-8 を設定するようにして対応しています。

[a60bf6f9bf] git 2021-09-27 15:53:19 UTC

version.h の日付更新

[1147136b8a] John Bachir 2021-09-24 22:15:52 UTC

標準添付ライブラリ timeout のテストに Timeout.timeout のブロックのパラメーターに引数の秒数が渡されるということを確認するテストを追加しています。あんまりこのブロックパラメーター使ったことないから忘れてたけど渡されるんですね。

[2cf1014362] Burdette Lamar 2021-09-27 23:17:47 UTC

Struct の deconstruct_keys メソッドや Struct クラス自体の rdoc 用コメントの追加/手直し。 https://github.com/ruby/ruby/pull/4895

[1e9a688cd5] S-H-GAMELINKS 2021-09-28 04:00:16 UTC

rb_io_prep_stdin()、rb_io_prep_stdout()、rb_io_prep_stderr() などの関数の宣言を internal/io.h に追加して、thread.c で個別に宣言していたのを削除しています。

[c4acde8959] aycabta 2021-09-26 19:39:44 UTC

標準添付ライブラリ reline の Reline::LineEditor#ed_quoted_insert で後続のキー入力を待つ時に 0 が渡されたら無視するように修正しています。 Ctrl-V で後続のキーを解釈せずにそのまま入力させる時に NUL を入力すると(どうやるんだろう? EOF?)それは無視して入力しないようにしています。

[6bca410ae8] "U.Nakamura" 2021-09-28 06:50:38 UTC

プラットフォームメンテナの列挙を doc/contributing.rdoc から doc/maintainers.rdoc に移動しています。

[83662f1d99] Hiroshi SHIBATA 2021-09-28 07:13:45 UTC

lib/rdoc/Rakefile は不要なので削除し、tool/sync_default_gems.rb でも rdoc の同期時の処理に Gemfile と Rakefile の削除を追加しています。

[cefa029573] rm155 2021-08-20 12:12:28 UTC

標準添付ライブラリ ostruct の Ractor 対応として OpenStruct#new_ostruct_member! で属性の名称の特異メソッドを定義する時に Proc オブジェクトを作成してそれを Ractor.make_shareable で共有可能にしてから define_singleton_method! に渡すようにしています。 Proc を sharable にしたらそれで定義された特異メソッドをもつオブジェクトは移動可能なのか。

[3be987653a] Olle Jonsson 2021-06-16 11:22:50 UTC

標準添付ライブラリ drb の gemspec ファイルから spec.bindir と spec.executables の指定は削除しています。

[f6c3228794] Hiroshi SHIBATA 2021-09-11 04:43:05 UTC

標準添付ライブラリ drb のテストで skip のかわりに omit を利用するようにしています。

[af68070068] Hiroshi SHIBATA 2021-09-14 04:45:40 UTC

標準添付ライブラリ drb の gemspec ファイルで ruby の必要なバージョンを 2.7 以降に更新しています。

[f9f7f3a75e] Jeremy Evans 2021-07-27 17:23:47 UTC

拡張ライブラリ date の Date および DateTime の strftime での "%v" の指示子の指定で表示する月の名前を全部大文字の表記(%^b の指定と同じ)に変更しています。Time#strftime にそろえるためみたいです。 [ruby-core:82369] [Bug #13810]

[a6459081bc] Kazuhiro NISHIYAMA 2021-09-10 10:25:06 UTC

標準添付ライブラリ un.rb の gemspec ファイルのバージョンを 0.2.0 に更新しています。

[f360ebb306] Kazuki Tsujimoto 2021-05-23 11:10:21 UTC

標準添付ライブラリ set の Set#pretty_print を PP#group メソッドを利用するようにリファクタリングしています。コミットログによると irb での色付けに対応するためみたいです。

[6874d4f116] David Rodríguez 2021-09-23 09:54:09 UTC

bundler の Bundler::GemHelper の install が定義する rake task の "release:rubygem_push" に依存関係として "build" を追加しています。

[fcaa918445] Ellen Marie Dash 2021-09-24 21:54:08 UTC

cd2e6318f6502018d398cb9706a286ef5b202bf4rubygems が gemspec ファイルの authors, summary, description, email などの項目の TODO や FIXME をチェックする時の正規表現を行頭に限るようにしてたのを、\A に変更して文字列全体の先頭に限るようにさらに修正しています。

[be51f4ce83] Yusuke Endoh 2021-08-17 01:52:10 UTC

標準添付ライブラリ did_you_mean テストに error_highlight の影響を抑制するために ErrorHighlight.formatter に独自の formater クラスを設定するようにしています。

[395da04aa6] Hiroshi SHIBATA 2021-09-28 10:14:02 UTC

rubyspec の Date#strftime と DateTime#strftime のテストを f9f7f3a75ec5af4a70e3332f8f5aa300c13432e2 の変更に追随して変更しています。

[2f19f4d1d8] Hiroshi SHIBATA 2021-09-28 10:15:12 UTC

rubyspec の標準添付ライブラリ set のテストも f360ebb30606a4143029996073d29d007069428d にあわせて 3.0 以前でのみ実行するように guard を追加しています。あれって色付け以外の挙動も変化してたんだ。

[8bdaaeb99a] Nobuyoshi Nakada 2021-09-28 10:58:13 UTC

標準添付ライブラリ ostruct の行末の空白除去。

[545e01645f] Nobuyoshi Nakada 2021-09-28 10:55:07 UTC

misc/lldb_cruby.py で lldb の rp で String オブジェクトを表示する時に Encoding 名も表示するようにしています。

ruby-trunk-changes 2021-09-27

今日は主に標準添付ライブラリ timeout, reline, irb, base64 などの更新がありました。

[3f7b08d2cb] Jake Zimmerman 2021-09-09 22:35:07 UTC

標準添付ライブラリ reline の Reline::LineEditor に vi_kill_line_prev というメソッドを em_kill_line の alias として追加しています。

[a230ff0f83] aycabta 2021-09-26 16:14:31 UTC

同じく標準添付ライブラリ reline の Reline::LineEditor に unix_line_discard を em_kill_line の alias として追加し、kill_line は ed_kill_line の alias に変更(元は em_kill_line の alias)しています。

[7ba16939bb] git 2021-09-26 16:16:29 UTC

version.h の日付更新

[5c0636bda4] aycabta 2021-09-26 18:03:20 UTC

irb の --help のメッセージや man マニュアルの --echo オプションの説明にかっこの前の空白を追加しています。

[2ae64bf6b9] aycabta 2021-09-26 18:13:21 UTC

irb の rdoc 用コメントのサンプルコードの修正。

[51773bed10] aycabta 2021-09-26 18:14:14 UTC

irb の rdoc 用コメントのサンプルコードの空行追加。

[00cfafc0f5] aycabta 2021-09-26 18:21:39 UTC

irb のドキュメントに --echo-on-assignment、--noecho-on-assignment、--truncate-echo-on-assignment などのオプションについての記述を追加しています。

[582602d142] John Bachir 2021-09-24 21:19:51 UTC

標準添付ライブラリ timeout のテストに Timeout.timeout のブロックの実行がタイムアウトしない時のテストを追加しています。

[f7ffe9dbde] Nobuyoshi Nakada 2021-09-27 05:47:52 UTC

8b48b57fd89ad1bbb1d3b4b8445a65ab2d0b272b の enumerator.c の引数の NULL チェックを #if !RBIMPL_HAS_ATTRIBUTE(nonnull) で囲んでた変更の続きで、この条件で定義が分岐されたマクロ RBIMPL_NONNULL_ARG() というのを導入して、これでチェックすることでチェック箇所に preprocessor の条件分岐が不要なようにしています。

[05a28ce5b1] Joao Fernandes 2021-09-02 14:53:01 UTC

標準添付ライブラリ base64Base64.urlsafe_encode64 で strict_encode64 後にキーワード引数 padding に false が指定されてた時に末尾の "=" を削除するのに String#delete! を利用していましたが、これは "=" が複数あった時に非効率なので Base64 の仕様によってたかだか 2つまでしか末尾の "=" が続かないことを前提にして String#end_with? で細かく条件分岐して String#delete_suffix! または String#chop! を利用して削るようにしています。

[1b004ba0db] Joao Fernandes 2021-09-02 15:57:26 UTC

05a28ce5b11d0e0ca48bae799ef65e9657dc4f6a の続きで標準添付ライブラリ base64Base64.strict_decode64 の padding の "=" 削除を String#chomp! だけ利用するようにしています。String#chomp! に引数をわたすとその部分文字列が末尾にあると消すという挙動になっているのを利用しています。

[f8000e2931] Joao Fernandes 2021-09-24 15:13:40 UTC

標準添付ライブラリ base64Base64.urlsafe_decode64 で "-" と "_" をそれぞれ "+" と "/" に置換するのに String#tr を使っていたのを、末尾に "=" を付加する場合にはその結果を String#tr! を使って破壊的変更するようにして不要な一時オブジェクト生成を抑制しています。

[efa0c31ce5] Nobuyoshi Nakada 2021-09-27 10:02:45 UTC

regparse.c および regerror.c の onig_syntax_warn()、onig_vsnprintf_with_pattern()、onig_snprintf_with_pattern() などの printf(3) のようなフォーマット指示子をもつ引数を受け取る関数の宣言に PRINTF_ARGS() マクロを利用するようにしています。さらにフォーマット文字列に UChar ではなく char を使うように一部変更しています。

[0a38212e57] rm155 2021-07-16 22:23:40 UTC

標準添付ライブラリ timeout の Timeout::VERSION 定数に代入する文字列を freeze するようにしています。

ruby-trunk-changes 2021-09-26

今日は common.mk の依存関係の修正だけでした。

[18f0b7c2f7] Nobuyoshi Nakada 2021-09-26 00:48:53 UTC

common.mk の verconf.h の依存関係に rbconfig.rb を追加しています。

[389de6f052] git 2021-09-26 00:56:39 UTC

version.h の日付更新