ruby-trunk-changes 2021-02-07

今日は主に irb と reline の複数行バッファ描画時の高速化と端末のスクロール履歴との整合性のための修正などがありました。

[5704b5fe5e] aycabta 2021-02-06 11:23:51 UTC

irb の組み込みコマンド measure をブロックつきの呼び出しをして各式の評価時にコールバックとして呼ばれるようにしている? みたいです。

[7b354cf67b] aycabta 2021-02-06 12:07:11 UTC

5704b5fe5e42bd5b1f42a27368cd5d52dd5a9060 の続きで irb の measure コマンドのブロックつきの呼び出しを繰り返すとコールバックが上書きされるようにしています。

[34c422b678] Garen Torikian 2021-02-06 14:05:37 UTC

error.c の macOS での異常終了時に C のバックトレースが配置されるファイルの位置についてのメッセージの文法修正。

[bfc7bb5d8a] git 2021-02-06 18:02:42 UTC

version.h の日付更新

[132e01a1c3] Adam Jensen 2021-02-06 16:07:03 UTC

.gdbinit のインデント修正のみ。

[b69c965f47] aycabta 2021-01-26 04:18:05 UTC

irbスクリプトをペーストした時の高速化のために標準添付ライブラリ reline の Reline::LineEditor#rerender で再描画時にペーストモードを検出したら複数行の再描画は最後の行まで modify_lines を呼ばないようにしているようです。

[433b975fe8] aycabta 2021-01-28 07:25:27 UTC

b69c965f477af1b2eb883137b3df9da8fca7b616 の続き。標準添付ライブラリ reline の Reline::LineEditor に導入したインスタンス変数の初期化を initialize に追加しています。

[ec6929a5dd] aycabta 2021-01-28 07:25:48 UTC

b69c965f477af1b2eb883137b3df9da8fca7b616 の続き? 標準添付ライブラリ reline の Reline::LineEditor#rerender_added_newline で不要な whole_lines の呼び出しを削除しています。

[03523fdafb] aycabta 2021-01-29 09:27:54 UTC

標準添付ライブラリ reline の Reline::LineEditor で SIGINT のシグナルハンドラで一行スクロールするようにしています。

[bd0f8b36fd] aycabta 2021-01-31 04:45:21 UTC

標準添付ライブラリ reline の Reline::LineEditor#rerender で複数行バッファがあった時に端末の表示できる範囲内だけを描画すると、おそらく仮想端末エミュレーターなどでスクロールバックできる時に遡れないからか、最後の行まで到達した時に範囲内に収まらない上のほうも出力しておくようにしているようです。いろいろ考えることがあって大変だなー。

[b371ca3f4f] aycabta 2021-01-31 14:44:13 UTC

さらに reline の Reline::LineEditor で複数行入力時にスクロールバックした履歴が正常に表示できるように LineEditor#just_move_cursor でもスクロールをちゃんと差分のぶんだけするようにしています。

[08162f0e69] aycabta 2021-02-02 14:58:20 UTC

b69c965f477af1b2eb883137b3df9da8fca7b616 で標準添付ライブラリ reline の Reline::LineEditor#rerender の @cursor 変数更新がペーストモードで行なわれなくなる不具合があったので条件分岐の外に出すように修正しています。

[a608bb3e9b] aycabta 2021-02-02 12:28:59 UTC

さらに標準添付ライブラリ reline の Reline::LineEditor#rerender で複数行バッファの最終行出力時にカーソル移動が追随していなかったのを修正しています。

[a19ed1623f] aycabta 2021-02-02 12:29:20 UTC

標準添付ライブラリ reline の Reline::LineEditor#vi_histedit というメソッドが複数行バッファのヒストリに対応してなかったのを修正しているようです。

[fee19da230] aycabta 2021-02-03 08:56:49 UTC

標準添付ライブラリ reline の Reline::LineEditor で行の途中に文字を挿入した時の折り返しの再描画計算の不具合を修正しているそうです。

[300084a854] aycabta 2021-02-05 12:39:29 UTC

さらに標準添付ライブラリ reline の Reline::LineEditor で複数行バッファの描画で端末の行数を超えて流れた部分の行の折り返しの不具合を修正しているそうです。

[8aac11484b] aycabta 2021-02-06 19:55:38 UTC

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

[93ebfed0a9] aycabta 2021-02-06 19:55:09 UTC

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

[947d93b715] Nobuyoshi Nakada 2021-02-07 01:30:15 UTC

Array#values_at と MatchData#values_at の rdoc 用コメントに引数(の一部)に Ragen オブジェクトを渡した時の挙動について追記しています。へー、Range のみじゃなくて整数によるインデックスと混ぜる呼び方もできるのか。

ruby-trunk-changes 2021-02-06

今日は Array#- メソッドの引数(右辺)の配列が空だった時の最適化などがありました。

[52ce583f52] Nobuyoshi Nakada 2021-02-05 06:06:15 UTC

GitHub Actions の macOS 版で socket のテストなどのために firewall の設定を無効にするために /usr/libexec/ApplicationFirewall/socketfilterfw を実行してたのをやめています。手元だとダイアログが出るけどやめてもよくなったのかな?

[575c77ddfb] git 2021-02-06 04:14:33 UTC

version.h の日付更新

[94fb62e4a0] Nobuyoshi Nakada 2021-02-06 04:40:50 UTC

Array#sum の rdoc 用コメントのマークアップのミスを修正しています。

[e1e61e256b] Masaki Matsushita 2021-02-06 08:01:42 UTC

Array#- メソッドの引数(右辺)の配列がサイズ 0 だった時に左辺の Array とバッファを共有した配列を作って返すように最適化しています。

ruby-trunk-changes 2021-02-05

今日は拡張ライブラリ io/console のテストの JRuby 対応や Ractor 化による GVL 解放処理の不具合修正などがありました。

[b79d443482] ima1zumi 2021-02-04 10:59:40 UTC

標準添付ライブラリ irb の gemspec ファイルの spec.files に lib/irb/cmd/info.rb が漏れてたので追加しています。

[75b96c3a05] Aaron Patterson 2021-02-04 00:17:28 UTC

rb_gc_register_mark_object() の最初に渡された VALUE がオブジェクト用の heap 内へのポインタじゃなかった時に無視する条件分岐を追加しています。 33d6e92e0c6eaf1308ce7108e653c53bb5fb106c() で rb_define_const() から呼ばれるようになったのでその影響で即値が渡された時にも呼ばれるのでそういうのを弾く必要ができたみたいです。ふーむ、なるほど。

[365326a09e] git 2021-02-04 17:49:21 UTC

version.h の日付更新

[3a888398a6] Jean Boussier 2021-01-21 08:45:11 UTC

ObjectSpace.dump で T_CLASS, T_MODULE のオブジェクトをダンプした時に特異クラスかどうかの情報の表示とクラス名の表示を追加しています。

[fcdccbff01] Nobuyoshi Nakada 2021-02-05 00:55:20 UTC

GitHub Actions の macOS 版で tool/travis_retry.sh というツール経由で brew コマンドの実行をリトライさせてたのをもう不要ということで直接 brew 実行するようにしています。

[9ef7780b09] Nobuyoshi Nakada 2021-01-29 03:49:00 UTC

拡張ライブラリ io/console のテストで assert_separately と assert_operator を使ってたところを assert_ruby_status を使ってエラー時は子プロセス部分で Kernel#abort で異常終了させるようにしています。

[8960d6b5bd] Charles Oliver Nutter 2021-02-03 20:51:02 UTC

拡張ライブラリ io/console のテストで $LOADED_FEATURES から io/console/xxx.rb が既に存在してないかチェックしてるところで io/ 直下の io/console.rb にもマッチするように修正? しています。

[2a764fe764] Charles Oliver Nutter 2021-02-03 23:30:00 UTC

拡張ライブラリ io/console のテストで JRuby で通らないものを RUBY_ENGINE で判定してスキップするようにしています。

[a1cc044ea1] Charles Oliver Nutter 2021-02-04 21:03:12 UTC

拡張ライブラリ io/console のテストで skip のかわりに omit を利用するようにしています。

[abf71864a5] Charles Oliver Nutter 2021-02-04 21:03:45 UTC

2a764fe7644f839cec445d3467303543ad7a087b で io/console のテスト test_cursor_position で JRuby ではスキップするようにしてましたが、そこで使われてる run_pty というユーティリティメソッド内で pend で実行しないように変更しています。

[0acc05caf7] Nobuyoshi Nakada 2021-02-01 23:33:08 UTC

configure でコンパイラオプションの -fdeclspec というのが使えたら追加するのを CC/MJIT_CC に直接追加してたのを CFLAGS および CXXFLAGS に追加するように変更しています。

[7baedeffe9] Nobuyoshi Nakada 2021-01-28 12:00:37 UTC

標準添付ライブラリ mkmf の egrep_cpp メソッドのテストを追加しています。

[b2674c1fd7] Koichi Sasada 2021-02-05 06:30:53 UTC

rb_nogvl() で引数に独自の ubf (un-blocking function)が渡された時に、GVL 解放してコールバック関数を実行する前に ubf 用の native thread を作成する条件を main Ractor の main thread から呼ばれた時だけにしています。

ruby-trunk-changes 2021-02-04

今日は拡張ライブラリ bigdecimal の更新や RISC V での異常終了時の C のバックトレース表示対応などがありました。

[1be84e53d7] Aaron Patterson 2021-02-01 18:42:13 UTC

variable.c の rb_define_const() で定数に代入する値の VALUE を rb_gc_register_mark_object() を呼んで pin down して GC.compact で移動しないようにしてたのをやめています。646131448eea616dfb388cfea84e34358caa7b47 で rb_define_module_id_under() で pin down するようになったのでその関連かなぁ、と思いましたが後に revert されています。

[6b4814083b] git 2021-02-03 17:35:37 UTC

version.h の日付更新

[33d6e92e0c] Aaron Patterson 2021-02-03 20:48:37 UTC

1be84e53d76cff30ae371f0b397336dee934499d を revert しています。やっぱり pin down 必要だったみたいです。

[b0d6563f13] 卜部昌平 2021-02-04 03:34:19 UTC

include/ruby/internal/intern/vm.h に rb_clear_method_cache_by_class() という既に存在しなくなってた関数の宣言が残ってたのを削除しています。

[868d66e0b5] Kenta Murata 2021-01-30 03:05:15 UTC

拡張ライブラリ bigdecimal のマクロや関数名の RMPD_ や rmpd_ などの prefix をやめて BIGDECIMAL_ などで置換しています。 rmpd ってどこから来た名前なんだろう。また DBLE_FIG というマクロの定義も削除してかわりに BIGDECIMAL_DOUBLE_FIGURES を利用するようにしています。

[4e2e1d6093] Kenta Murata 2021-01-30 04:00:03 UTC

拡張ライブラリ bigdecimal の rb_uint64_convert_to_BigDecimal() で整数からの変換に log10() を利用してたのをやめて uint64 で表現できる桁の最大数までのバッファを自動変数で用意して BIGDECIMAL_BASE で繰り返し割って配列に余剰を詰めていくように変更しています。高速化のためかな?

[46b5b51cc6] Dimitris Zorbas 2021-02-03 22:48:28 UTC

拡張ライブラリ socket の rdoc 用コメントで発生しうる例外の説明の typo を修正しています。

[90f008f569] S-H-GAMELINKS 2021-02-04 04:06:20 UTC

string.c で static 関数 str_new_shared() の前方宣言があったけど不要なので削除しています。

[7d22060c14] Yusuke Endoh 2021-02-04 08:45:54 UTC

addr2line.c の DWARF のデバッグ情報をデコードする時に DW_LNS_fixed_advance_pc という operation? のオペランドのデコードを修正しています。 [ruby-core:102394] [Bug #17609]

[f71659d47b] Yusuke Endoh 2021-02-04 08:47:12 UTC

6985bfb72c8d7e7d94f1aad1f0902b602bbfa6da. で RISC V 環境でバックトレース取得をしないようにしてたのを revert しています。 7d22060c14895bbca3ff962e5456384095b66738 で修正されたからではないかと思われます。 [ruby-core:102394] [Bug #17609]

ruby-trunk-changes 2021-02-03

今日は Ractor.receive でのブロックに割り込みが効かない不具合の修正などがありました。

[739f9297c5] David CARLIER 2021-02-02 13:05:19 UTC

addr2line.c の NetBSD でのビルド時に実行している実行形式ファイルのパスを procfs から得る実装の対応を追加しています。読むファイルパスは Linux とは異なっていて "/proc/curproc/exe" のようです。 https://github.com/ruby/ruby/pull/4079

[b0fb208218] Nobuhiro IMAI 2020-03-24 06:24:01 UTC

irb で空行を入力した時に __LINE__ の値がずれる不具合を修正。

[c0fa4c7bbe] git 2021-02-02 15:09:49 UTC

version.h の日付更新

[6f727853ce] Koichi Sasada 2021-02-02 18:19:51 UTC

Ractor.receive でブロック中に Ctrl-C の端末からのシグナルによる割り込みでブロックから抜けないことがあったらしく、よくわかりませんが rb_vm_t::ubf_async_safe の更新を main thread のみで行なうように修正しています。 [ruby-dev:50984] [Bug #17482]

[ea47a9506a] Nobuyoshi Nakada 2021-02-03 04:39:53 UTC

vm_method.c のインデントの修正のみ。

[f600226fb4] Kazuhiro NISHIYAMA 2021-02-03 05:38:31 UTC

bundler のテストで bundle info と bundle show コマンドの補完候補出力をチェックするテストで厳密な一致でなく正規表現でチェックするようにしています。 readline が EditLine とリンクされてる時に出力内容が変わるみたいでした。

[583f364f71] Koichi Sasada 2021-02-03 06:29:26 UTC

vm_call0_body() で call cache の method entry のタイプが VM_METHOD_TYPE_ALIAS の時に再帰呼び出ししていたのを call cache のエントリを更新して goto で前に戻ってリトライする方法に変更しています。alias はネストすることがあるので何度再帰呼び出しが続くかわからないのでスタック消費しないようにするためとのことです。

[d05a268adc] Nobuyoshi Nakada 2021-02-03 08:32:41 UTC

拡張ライブラリ zlib のテストで Zlib::GzipReader.zcat に渡す File オブジェクトを open する時に mode に "rb" を渡して binary mode で開くようにしています。

[b4eba8dfee] Nobuyoshi Nakada 2021-02-03 08:34:41 UTC

拡張ライブラリ zlib のテストで File.open をブロックつきの呼び出しにして close 漏れのないようにしています。

[8df1881c8f] Kenta Murata 2021-01-29 09:06:13 UTC

拡張ライブラリ bigdecimal の rb_float_convert_to_BigDecimal() で浮動小数点数を変換するために一旦文字列化する時の桁数の上限を double からの変換の精度の DBLE_FIG に修正しています。バッファ用の配列のサイズを上限にしてましたがそれだと使いすぎのようです。

[71c746379d] Nobuyoshi Nakada 2021-02-03 08:38:19 UTC

583f364f7187337b284061b78a47b29875398e33 の続き? rb_alias() で alias の method entry を作る時にその先がまた VM_METHOD_TYPE_ALIAS タイプの method def だった時にひとつ先まで辿るようにしています。 583f364f7187337b284061b78a47b29875398e33 のコミットログに書いてあった本当は alias の参照先が alias なのを避けるように修正したいとあったのがこれかな?

ruby-trunk-changes 2021-02-02

今日は拡張ライブラリ jsonGC.compact 対応の修正や struct RClass の拡張情報へのアクセス用マクロの追加、安定版メンテナンス用ツールの機能追加などがありました。

[49950266be] Matt Valentine-House 2021-01-26 16:06:31 UTC

T_CLASS 型オブジェクトの struct RClass の struct rb_classext_struct 内の parent_subclasses メンバーにアクセスするのに RCLASS_PARENT_SUBCLASSES() というマクロを定義してこれを使うようにリファクタリングしています。

[6edd425674] Matt Valentine-House 2021-01-26 16:12:29 UTC

T_CLASS 型オブジェクトの struct RClass の struct rb_classext_struct 内の module_subclasses メンバーにアクセスするのに RCLASS_MODULE_SUBCLASSES() というマクロを定義してこれを使うようにリファクタリングしています。

[7341b01465] Matt Valentine-House 2021-01-26 16:29:09 UTC

T_CLASS 型オブジェクトの struct RClass の struct rb_classext_struct 内の allocator メンバーにアクセスするのに RCLASS_ALLOCATOR() というマクロを定義してこれを使うようにリファクタリングしています。

[e0f999a2ed] Matt Valentine-House 2021-01-26 16:49:57 UTC

T_CLASS 型オブジェクトの struct RClass の struct rb_classext_struct 内の subclasses メンバーにアクセスするのに RCLASS_SUBCLASSES() というマクロを定義してこれを使うようにリファクタリングしています。

[e3ef21c307] Matt Valentine-House 2021-01-26 16:56:16 UTC

T_CLASS 型オブジェクトの struct RClass の struct rb_classext_struct のメンバーに直接参照してたところが残ってたので RCLASS_EXT() マクロを利用するようにリファクタリングしています。

[5803ac1c73] git 2021-02-01 16:43:16 UTC

version.h の日付更新

[8ef30bcc04] Aaron Patterson 2021-02-01 19:10:22 UTC

拡張ライブラリ json で Encoding::UTF_8 の値を static 変数に格納して使ってたのをやめて rb_utf8_encoding() の呼び出しを使うようにしています。 GC compaction によるオブジェクトの移動で異常終了してしまうのを避けるためみたいです。

[5a33ef0586] Nobuyoshi Nakada 2021-02-02 05:37:15 UTC

GitHub Actions の mswin と mingw 版での git config での設定のオプション --system を --global に変更しています。

[e350b32837] Nobuyoshi Nakada 2021-02-02 00:55:15 UTC

GitHub Actions の mswin 版と Appveyor でのテスト時に git config で core.autocrlf、core.eol などの設定を追加しています。改行コードの自動変換を無効にしているようです。

[b03aa7dcd7] Nobuyoshi Nakada 2021-02-02 06:54:07 UTC

GitHub Actions の mswin 版で choco でインストールするパッケージ winflexbison3 のバージョンを 2.5.18.20190508 に固定していたのをやめています。固定するきっかけになった不具合が最新版で修正されているみたいです。

[ce2062dee6] "NARUSE, Yui" 2021-02-02 10:12:49 UTC

tool/merger.rb でバックポート完了後に git push はしないでおくようにしています。別のリポジトリなどで CI を通してから本番のブランチに push したいからとのこと。

[d29cb56bfa] "NARUSE, Yui" 2021-02-02 10:14:37 UTC

tool/redmine-backporter.rb でチケットに紐付いているコミットのうち master ブランチに含まれているものを抽出するのに redmine に問い合わせてたのをローカルの working copy で解決できたらそうするようにしています。

[f92b7b7b97] "NARUSE, Yui" 2021-02-02 10:15:45 UTC

tool/redmine-backporter.rb の done サブコマンドでコミットの指定を引数でもできるようにしています。

[be1486568a] Koichi Sasada 2021-02-02 09:23:07 UTC

timer thread のかわりに定期的な割り込みを POSIX timer を利用した実装の時の static 変数 timer_posix の state メンバーの変更のための関数を導入して TIMER_STATE_DEBUG というマクロを真に定義すると state の変更を逐次 stderr に出力するデバッグ用のコードを追加しています。

ruby-trunk-changes 2021-02-01

今日は NameError の Ractor 対応や cygwin でのビルド時の windres というコマンドの新しいバージョン対応などがありました。

[0e5fbec816] "xtkoba (Tee KOBAYASHI)" 2021-02-01 01:16:14 UTC

error.c の rb_bug_without_die() で可変長引数を ... と書いてたのを va_list 型で受けるようにして report_bug_valist() で委譲するように修正しています。"..." で受けられるのって C99 だっけ? [ruby-core:102341] [Bug #17603]

[e4ef579126] git 2021-02-01 04:57:36 UTC

version.h の日付更新

[23a833ee67] Masataka Pocke Kuwabara 2021-02-01 05:01:47 UTC

doc/NEWS-2.7.0 に File.absolute_path? メソッドの追加について追記しています。追加漏れてたみたいです

[952b2dcc88] Nobuyoshi Nakada 2021-02-01 05:59:47 UTC

cygwin/GNUmakefile.in で windres というコマンドの引数を追加して windres 2.36 というバージョンでビルドできなくなってたのを修正しているようです。 [ruby-core:102338] [Bug #17602]

[0dd38902b9] Nobuyoshi Nakada 2021-02-01 09:16:39 UTC

common.mk の MJIT 用のヘッダ作成時の tool/transform_mjit_header.rb の実行時の第1引数のコンパイラオプションに "-w" を追加しています。デフォルトではコア部分のビルドには警告をエラーにするオプションをつけているので、それを無効にするためみたいです。

[1cdae49d39] Nobuyoshi Nakada 2021-02-01 09:01:10 UTC

NameError に原因となった参照の名前などを埋め込むための内部クラス NameError::message クラス(定数になってないので ruby レベルだとアクセスできない)に initialize_copy メソッドを追加して Ractor 間のやりとりのための clone に対応できるようにしています。