ruby-trunk-changes 2021-09-06

今日は reline, irb の更新や Thread 利用後のプロセス終了時に SEGV する場合がある不具合の修正、Memory View の構造体メンバー名の変更などがありました。

[bdd6d8746f] S-H-GAMELINKS 2021-08-31 11:30:35 UTC

64adeeadaa8d7fe210d0605eb6c9b0b1dcf49746378e8cdad69e6ba995a024da2957719789f0679e で導入した RBOOL() というマクロを VALUE の真偽値(Qtrue/Qfalse) に変換するために各所で利用するようにリファクタリングしています。

[6bae5ac955] Soutaro Matsumoto 2021-09-05 16:11:50 UTC

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

[f831ecd8d5] git 2021-09-05 16:12:13 UTC

version.h の日付更新

[1fe604a675] aycabta 2021-09-05 20:19:50 UTC

標準添付ライブラリ reline のコメント追加。

[e68a586263] aycabta 2021-09-05 20:22:28 UTC

標準添付ライブラリ reline のコメントの説明を強化しています。

[bb6d45cfee] aycabta 2021-09-05 14:29:18 UTC

標準添付ライブラリ reline のキー入力のチェックに使う Reline::Key#match? メソッドの引数に Integer で渡された時に対応するようにしています。

[544cd3fb91] aycabta 2021-09-05 14:33:59 UTC

標準添付ライブラリ reline でダイアログの中で使うキーバインディングを 1回の入力だけ有効な設定? ができるようにしているみたいです。

[bbb3162dd2] aycabta 2021-09-05 14:35:11 UTC

標準添付ライブラリ reline の Reline::Key#match? の alias として Reline::Key#== を追加しています。

[56ab22ab3d] aycabta 2021-09-05 14:36:22 UTC

bb6d45cfeecc8e16ec22e89ab40fb6b56177da7f に続いて標準添付ライブラリ reline の Reline::Key#match? の引数に Symbol も受け付けるようにしています。

[3773296bfc] aycabta 2021-09-05 18:58:48 UTC

標準添付ライブラリ reline で Reline::KeyStroke の判定の修正をしています。変更内容より reline はこのために Integer や Array を Refinements を使って == を再定義してるんだなというのに気がつきました。bb6d45cfeecc8e16ec22e89ab40fb6b56177da7f56ab22ab3daaedcef428a3ad623010f84e9e687c で Reline::Key#match? の引数に Integer や Symbol の対応を追加したけど実装は単に比較してて、これでいいのかな? って思ったけど Refinements を使ってたからかー。

[7de2c9a966] aycabta 2021-09-05 19:02:31 UTC

標準添付ライブラリ reline の Reline::Key#match? の引数に Integer や Symbol を受け取った時の条件分岐が間違ってたのを修正しています。

[8913b9b742] aycabta 2021-09-05 19:05:07 UTC

標準添付ライブラリ reline の Reline::KeyStroke#expand で配列を sort して reverse してから first を取ってたのを reverse せずに last を取得するようにリファクタリングしています。

[d07060c42a] aycabta 2021-09-05 19:11:24 UTC

標準添付ライブラリ reline の Reline::KeyStroke#match_status で配列サイズが 1 なので不要な max_by の呼び出しを削っています。

[79652c5873] aycabta 2021-09-05 19:20:08 UTC

標準添付ライブラリ reline のダイアログに割り当てるキーバインドの設定が複数になってもいいように対応しているようです。

[348bb62331] aycabta 2021-09-05 19:48:10 UTC

標準添付ライブラリ reline の端末からの入力処理でメタキーを読み込んだ場合に続くキーを読む処理をメソッドとして分離するリファクタリング

[991eb4894d] aycabta 2021-09-05 19:37:25 UTC

irb で標準添付ライブラリ reline の 79652c58734be2d9d2055cbbe076e952fa7978a1 で追加した複数の trap_key 対応を利用して Alt+d の入力を複数のキー入力に対応させるようにしているみたいです。

[32ff4a8c93] aycabta 2021-09-05 20:12:15 UTC

標準添付ライブラリ reline のダイアログのスクロールバー表示に色をつけるようにしています。

[2a4bacce8c] aycabta 2021-09-05 21:37:42 UTC

irb991eb4894d4e2e130774ad51f5b0ab42b869a4b5 で Alt+d のキー入力として追加した 2つの配列にコメントを追加しています。xterm では Alt+d でアクセント記号つきの文字になるみたいで、それも受け付けるためみたいです。

[97a569c648] manga_osyo 2021-08-25 12:56:49 UTC

標準添付ライブラリ reline の inputrc のファイルパスを解決する inputrc_path の結果をインスタンス変数でメモ化しておくようにしています。irb環境変数 HOME を変更するとエラーになってしまうので初期化時のファイルパスをその後も一貫して使うようにするためみたいです。

[be5159c2f8] Filip Pyda 2021-07-16 08:35:00 UTC

irb の組み込みコマンド help で RDoc::RI::Driver.process_args を呼んで rdoc のデフォルトのオプションを適用させるようにしているようです。

[168bd4f356] aycabta 2021-09-05 21:50:34 UTC

標準添付ライブラリ reline のテストに Reline::Unicode.take_range のテストを追加しています。

[14cc611133] aycabta 2021-09-05 21:53:36 UTC

568615d3952f332d971b00ba30eeedc3606a51c0 で追加したテストメソッドの名前が適当だったので内容に関係した名前に改名しています。

[83a0807b3b] aycabta 2021-09-05 22:01:46 UTC

標準添付ライブラリ reline のテストに Reline::KeyStroke#match_status のテストを追加しています。

[540eea39dd] aycabta 2021-09-05 22:03:48 UTC

標準添付ライブラリ reline のテストに Reline::Key を Reline::KeyStroke に渡した時のテストを追加しています。

[a68a1b0b7d] Hiroshi SHIBATA 2021-09-06 02:54:09 UTC

標準添付ライブラリ rdoc のテストで MiniTest::Assertion を rescue して無視しているところがあったので being...rescue を削っています。

[13dd07e397] Hiroshi SHIBATA 2021-09-06 02:54:29 UTC

標準添付ライブラリ rdoc のテストで冗長な assertion があったので削っています。

[f336a3eb6c] Yusuke Endoh 2021-09-06 05:22:24 UTC

チケットをみると非常におもしろい不具合で多数の Thread の終了から約 3秒後にプロセス終了しようとすると SEGV するという不具合の修正をしています。 rb_allocate_sigaltstack() で sigaltstack(2) に渡すメモリ領域として xmalloc() で確保した領域を使っていましたが、これを素の malloc(3) を使うようにしています。 Thread ごとに sigaltstack が登録されてこれを解放する時に xfree() が呼ばれると、その時点で VM が解放処理に入っている場合に不正なメモリアクセスが発生する可能性があったということみたいです。3秒というのは Thread の実体の native thread はキャッシュされてて 3秒以内に再利用されなかった時にはじめて解放処理が走るからですね。 native thread のキャッシュは結構最近……と思ったのですが 2018 年(r63498)だったので結構前でした。 [ruby-core:105048] [Bug #18126]

[a5e323f5ed] Nobuyoshi Nakada 2021-09-05 04:10:04 UTC

GitHub Actions に gems/bundled_gems の更新用の workflow を追加しています。GitHub Actions でコミットまでしてしまうんですね。

[f8bb2d9b27] Kenta Murata 2021-09-06 07:01:52 UTC

Memory View の構造体 rb_memory_view_t のメンバー private を private_data に改名し const 修飾子を削除しています。 C++ から利用するために予約語の private を避けたってことでしょうか。しかし一応公開ヘッダ内の構造体で 3.1 からの非互換にはなるので NEWS には追記したほうがよさそうですね。 https://github.com/ruby/ruby/pull/4812

[3cef8869b0] aycabta 2021-09-06 07:09:42 UTC

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

[692e7147b4] aycabta 2021-09-06 07:11:06 UTC

irb の gemspec ファイルで reline の依存バージョンを 0.2.8.pre.8 以降に更新しています。

[8baac078bc] aycabta 2021-09-06 07:11:18 UTC

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