ruby-trunk-changes 2021-02-21

今日は標準添付ライブラリ reline の Windows 向けの古いコンソールの挙動の対応の復活などがありました。

[169c726f60] Nobuyoshi Nakada 2021-02-20 12:05:57 UTC

win32/Makefile.sub で C ソースファイルを preprocessor だけ通して .i 拡張子のファイルにするためのルールにコンパイラオプション -F を指定してファイルを吐き出す位置をソースファイルと同じディレクトリにするようにしています。

[cc8e966e3c] Nobuyoshi Nakada 2021-02-20 14:33:22 UTC

標準添付ライブラリ mkmf の mkintpath というメソッドに RbConfig::CONFIG["build_os"] が "msys" だった時の対応を追加しています。 MSys は Cygwin の同類として処理するようにしています。

[b88be10094] git 2021-02-20 15:11:22 UTC

version.h の日付更新

[dc9e33016c] aycabta 2021-02-14 15:27:51 UTC

標準添付ライブラリ reline の Reline::Unicode.get_mbchar_width に不明な文字が渡された時に nil を返してたのを 1 を返すようにしています。else 節はまだいるのかな?

[ac9e3b514b] Eamonn Webster 2021-02-14 19:24:03 UTC

標準添付ライブラリ reline の Reline::LineEditor#simplified_rendering? で prompt_list が空だとエラーになるので強制的に prompt 変数に格納してる文字列を 1要素持つ配列にセットするようにしています。

[a3055a35dd] aycabta 2021-02-15 15:30:30 UTC

標準添付ライブラリ reline に yamatanooroti を使った仮想端末によるテストのためのプログラム test/reline/yamatanooroti/multiline_repl を追加しています。

[7aa3bc8403] aycabta 2021-02-15 16:46:53 UTC

a3055a35dd7b8b6520d5fe599d1c67490c556a3c で追加した test/reline/yamatanooroti/multiline_repl にコマンドラインオプション --dynamic-prompt-returns-empty を追加して、おそらく ac9e3b514bc98ded741006c94281fb8aee10c7ef で修正したのに対応するテストを追加しています。

[38cefac7ce] Yoshinao Muramatu 2021-02-17 14:28:47 UTC

標準添付ライブラリ reline の 05df7e0d4a09eaacb91388f32ef557d1d5fbe082Windows での EOF の挙動についての対応を revert したのを revert しています。Windows の更新で直ったけど古い環境にも対応できるようにするためみたいです。

[38d30a6942] Yoshinao Muramatu 2021-02-17 14:56:34 UTC

38cefac7ce277d8ea41c600e67a2046da3715ac3 の続きで標準添付ライブラリ reline で Windows のコンソールの対応で新旧どちらの挙動にも対応できるように一度検査しておいてその結果で処理を分岐させるようにしています。

[aeac4ddcc0] aycabta 2021-02-17 18:41:47 UTC

標準添付ライブラリ reline の Reline::LineEditor#calculate_nearest_cursor で入力が UTF-8 でない時に文字幅の検査のために分解する前に全体を UTF-8 に変換してたのをやめて各文字の幅をチェックする時に都度呼ぶようにしています。String#encode は新しい文字列を返すので別に元の方法でも良い気もしますが、途中でエンコード失敗するバイト列があった時のためとかでしょうか。

ruby-trunk-changes 2021-02-20

今日は Kernel#caller などのバックトレース取得時の数の指定の不具合修正や String#strip などのメソッドで先頭の NUL 文字が削れてなかった不具合修正、Numeric の一部メソッドの ruby 実装化などがありました。

[b94b7965c4] "YO4 (Yoshinao Muramatsu)" 2021-02-19 15:48:46 UTC

Windows 環境で使う定数マクロ ENABLE_VIRTUAL_TERMINAL_PROCESSING の値が実際のシステムヘッダの値と違っていたそうで変更しています。また win32/win32.c でマジックナンバーを使っていたところ(ここは修正後の値を使ってた)もマクロ参照するようにしています。 [ruby-dev:51025] [Bug #17639]

[4849575932] git 2021-02-19 15:51:36 UTC

version.h の日付更新

[8743732621] Jeremy Evans 2021-01-25 22:56:03 UTC

Kernel#caller などでバックトレースを取得する時に数の指定があった場合に skip されるスタックトレースがあると取得数の制限がうまくカウントされなくて指定した数取得できないことがあった不具合を修正しています。 [ruby-core:102242] [Bug #17581]

[b51e5c2370] Jeremy Evans 2021-02-19 16:25:40 UTC

time.c のコメントに Fixnum/Bignum についての記述があったので Integer に変更しています。また 1.9.2 移行の Time の内部実装が任意の精度の整数または Rational を使っていることのコメントを "Internal Details" として Time クラスの rdoc 用コメントから外に出しています。 [ruby-core:102241] [Misc #17580]

[837e77e020] "S.H" 2021-02-19 19:10:21 UTC

win32/file.c のコメント内の MSDN へのリンクが https でないとリンク切れになってたのを修正しています。 https://github.com/ruby/ruby/pull/4202

[efd19badf4] "S.H" 2021-02-19 19:11:19 UTC

Numeric#real?、Numeric#int?、Numeric#finite?、Numeric#infinite? などの Numeric の定数を返すだけのメソッドの実装を numeric.rb の ruby 実装に移動しています。 MJIT 時に inline 化されて高速になるからかな。 https://github.com/ruby/ruby/pull/4190 [ruby-core:102529] [Feature #17632]

[cfd162d535] Jeremy Evans 2021-02-09 21:50:36 UTC

String#strip、String#lstrip、String#strip!、String#lstrip! などで先頭の NUL 文字('\0')を削る対象に含めるようにしています。末尾は削れてたんですが先頭は削れなくなってたみたいです。 [ruby-core:101676] [Bug #17467]

ruby-trunk-changes 2021-02-19

今日は Ractor の dup 禁止や拡張ライブラリ ripper の不具合修正などがありました。

[9110021fd2] Nobuyoshi Nakada 2021-02-18 11:09:28 UTC

拡張ライブラリ readline のテスト test/readline/test_readline.rb で skip を使ってたところをかわりに omit を使うように変更しています。

[9a5da2dcff] Nobuyoshi Nakada 2021-02-18 11:49:45 UTC

拡張ライブラリ readline の Init_readline() に prepare_readline() という関数呼び出しを追加しています。EditLine を使ってる場合に必要? みたいです。 [ruby-core:102487] [Bug #17629]

[7b9476fbfa] Koichi Sasada 2021-02-18 08:59:40 UTC

Ractor に dup メソッドを呼ぶと異常終了するそうで、Ractor.allocate を未定義にして dup 禁止しています。 [Bug #17642]

[5de38c41ae] Shugo Maeda 2021-02-19 07:38:34 UTC

拡張ライブラリ ripper がヒアドキュメントを含むスクリプトで SyntaxError が発生した時に意図しない例外が発生する不具合を修正しています。 [Bug #17644]

[4c4c0043b8] git 2021-02-19 07:41:44 UTC

version.h の日付更新

[d260cbe295] Koichi Sasada 2021-02-19 05:56:58 UTC

GCデバッグ用にオブジェクトの情報を表示する rb_raw_obj_info() で T_IMEMO 型オブジェクトの情報を imemo_ment タイプの時にさらに詳細にするようにしています。

[9c769575bf] Koichi Sasada 2021-02-19 05:57:59 UTC

f4ce78d5c139a8825ee2d09f39aef03ef762dfc6 で Class/Module ごとのメソッドの negative cache のクリアタイミングの漏れを修正したのがまだ足りてなかったようで、その時に追加した invalidate_negative_cache() という関数の引数 invalidate_cme は削除して常に vm_cme_invalidate() を呼ぶようにしています。 [ruby-core:102136] [Bug #17553]

[a319c04818] Shugo Maeda 2021-02-19 08:27:53 UTC

5de38c41ae7bf17ae599fdfa9f8face87f16d8bb で追加した ripper のテストのテストメソッド名の typo を修正しています。

ruby-trunk-changes 2021-02-18

今日は GC の複数 Ractor 化での不具合修正などがありました。

[969b824a0c] Koichi Sasada 2021-02-18 06:47:32 UTC

Ractor を利用時に大きな配列をたくさん作ったりしてると異常終了することがある不具合の修正。 gc_enter() で gc_enter_event_rest というイベントの時も mark 時には rb_vm_barrier() を呼び出して他の Ractor を停止させておくようにしています。 [ruby-core:102541] [Bug #17634]

[feed820c96] git 2021-02-18 07:41:20 UTC

version.h の日付更新

[70cf53b4d2] Nobuyoshi Nakada 2021-02-18 07:51:44 UTC

gems/bundled_gems の rbs のバージョンを 1.0.6 に更新しています。

[100e464bee] Koichi Sasada 2021-02-18 07:15:41 UTC

拡張ライブラリ objspace の ObjectSpace.trace_object_allocations_start でオブジェクト確保の情報収集中に T_NONE 型のオブジェクトを mark しようとして異常終了してしまうという不具合の修正。gc_event_hook() というマクロに任意の式を埋め込める gc_event_hook_prep() というマクロを追加して newobj_slowpath() で GC のイベントフック呼び出し前に確保したオブジェクトの struct RVALUE のメンバーを 0クリアしておくようにしています。イベントフック内で不正なメモリにうっかり触らないようにするため? [ruby-core:102334] [Bug #17599]

[07ab172ebe] Koichi Sasada 2021-02-18 06:04:33 UTC

check_rvalue_consistency_force() という RGENGC_CHECK_MODE マクロで GC 関係のデバッグ用の一貫性チェックを実行する関数が複数 Ractor が動いている環境で異常終了してしまうので RB_VM_LOCK_ENTER_NO_BARRIER()/RB_VM_LOCK_LEAVE_NO_BARRIER() で他の Ractor を停止させてから実行するようにしています。 [ruby-core:102543] [Bug #17636]

ruby-trunk-changes 2021-02-17

今日はブロックの不要な catch table を作らないようにする最適化などがありました。

[938e027cdf] Aaron Patterson 2021-01-26 23:49:21 UTC

do ... end のブロックに begin なしで rescue/ensure 節を書けるようになった影響か、rescue/ensure を使っていないブロックでも VM 命令列にした時に catch table が作成されてしまっていたので、不要な時には作成しないようにする VM 命令列へのコンパイル時の最適化を追加しています。 [ruby-core:102418] [Feature #17613]

[7bd9329362] git 2021-02-16 22:00:53 UTC

version.h の日付更新

[33b8bd97a8] Peter Zhu 2021-02-16 22:27:35 UTC

gc.c の gc_page_sweep() で T_NONE 型のスロットを処理する時に free list に追加してたのをやめています。実際には直前の if 文が真になることがなくて通らないパスになってたようです。

[42a16e5974] Nobuyoshi Nakada 2021-02-17 11:15:05 UTC

33b8bd97a8e7d894c3e19b7362884c4882bf38e0 の続き? gc.c の gc_page_sweep() の was_compacting という変数が不要になってたので宣言と代入しているところを削っています。

ruby-trunk-changes 2021-02-16

今日は $LOAD_PATH.resolve_feature_path の仕様変更や Time の "-00:00" というタイムゾーン指定への対応などがありました。

[02151dad1b] David Rodríguez 2019-08-04 11:09:30 UTC

$LOAD_PATH.resolve_feature_path で指定の feature がみつからなかった時に例外を発生させていたのを nil を返すように変更しています。 [ruby-core:94135] [Feature #16043]

[b75c0cd2fd] git 2021-02-16 09:11:39 UTC

version.h の日付更新

[4dfc5496b7] Kazuhiro NISHIYAMA 2021-02-16 09:12:47 UTC

02151dad1ba324fac5f8e9459334164d01893124 の変更について NEWS に追記しています。 [ruby-core:94135] [Feature #16043]
このコミットがないとチケット参照をつけ忘れるところでした。

[1a84c07715] Kazuhiro NISHIYAMA 2021-02-16 09:17:09 UTC

02151dad1ba324fac5f8e9459334164d01893124 の変更に追随漏れていたテストがあったので修正しています。というかなぜか関係ないところで例外発生させるために resolve_feature_path を使ってたみたいです。

[96228e3ed6] Kazuhiro NISHIYAMA 2021-02-16 09:49:48 UTC

rubyspec の $LOAD_PATH.resolve_feature_path についてのテストを 02151dad1ba324fac5f8e9459334164d01893124 の変更に追随させています。

[b1149bf305] Nobuyoshi Nakada 2021-02-16 10:52:50 UTC

bundled gems の更新がないか確認するための make update-bundled_gems で gems/bundles_gems の更新を git commit してしまうところまでやるようにしています。

[4fc6fb2d12] Nobuyoshi Nakada 2021-02-16 10:54:25 UTC

gems/bundled_gems の rbs のバージョンを 1.0.5 に更新しています。

[9ef66ce3fc] Nobuyoshi Nakada 2021-01-15 08:19:18 UTC

Time#strftime で %z のタイムゾーンの出力に "-" をつけて UTC を "-00:00" のような出力にできるようにしています。これなんの意味があるんだろう……と思ったらどうも RFC 3339 においてローカルタイムが不明だということを明示する時に使われるみたいです。 [ruby-core:102103] [Feature #17544]

[5b7439bb7b] Nobuyoshi Nakada 2021-02-16 10:28:28 UTC

9ef66ce3fcfee06d628b611dbc22026d7cc72d0e の再修正。 Time#strftime で元々のタイムゾーンが "+00:00" を指定されてた時は "%-:z" などを指定されても "+00:00" を使うようにしています。 [ruby-core:102103] [Feature #17544]

[296a2cab07] Nobuyoshi Nakada 2021-02-16 10:36:20 UTC

さらに Time.new で offset に "-00:00" のような指定を受け取った時にタイムゾーン UTC の Time オブジェクトを作るようにしています。 あれ、"+00:00" のときは違うのか。難しいですね。 [ruby-core:102103] [Feature #17544]

ruby-trunk-changes 2021-02-15

今日は Thread::Backtrace.limit メソッドの追加などがありました。

[dbeddfb0b2] Marvin Schmidt 2021-02-14 13:12:32 UTC

C++ 製拡張ライブラリ用ヘッダファイル include/ruby/backward/cxxanyargs.hpp で ruby::backward::cxxanyargs の名前空間を参照するのに先頭に "::" をつけるようにしています。

[990b54054d] Takashi Tamura 2021-02-13 03:07:42 UTC

parse.y の expr_value_do のルールの最後にセミコロンが抜けてたのを修正しています。

[2947ae3254] git 2021-02-15 01:46:52 UTC

version.h の日付更新

[dfd029c962] David Carlier 2021-02-14 16:01:00 UTC

configure で OS が Haiku の時にコンパイラオプションの -fstack-protector や -fstack-protector-strong を試さないようにしてたのをやめています。

[522b256689] Nobuyoshi Nakada 2021-02-15 06:55:58 UTC

コマンドラインオプション --backtrace-limit についてのテストを追加しています。

[4f47d655e3] Nobuyoshi Nakada 2021-02-15 06:58:45 UTC

Thread::Backtrace.limit というメソッドを追加して --backtrace-limit オプションで指定された値を取得できるようにしています。 [ruby-core:101734] [Feature #17479]

[37b90bcdc1] Nobuyoshi Nakada 2021-02-15 07:06:43 UTC

NEWS に 4f47d655e357a7f09943f199969b437a25665ed2 で追加した Thread::Backtrace.limit について追記しています。 [ruby-core:101734] [Feature #17479]