ruby-trunk-changes 2021-08-30

今日は主に irb と reline の更新(補完時にダイアログで候補やドキュメントを表示する機能の追加)、attr_reader/attr_writer などで定義されたメソッドでも TracePoint のイベントフックが起動するようにする修正などがありました。

[ae4e301d5d] aycabta 2021-08-29 11:04:23 UTC

irb に Reline 利用時に rdoc のドキュメント表示機能のコールバック Proc を登録するコードを追加しています。タブ補完でドキュメント表示する機能のためかな。

[cde84a5baa] aycabta 2021-08-29 11:05:57 UTC

ae4e301d5d180251e8e8b70437e078b61aa0f42e の追加修正で RDoc::RI::Driver#expand_name の例外を捕捉するようにしています。

[eadd25d5af] aycabta 2021-08-29 11:15:41 UTC

irb の gemspec ファイルの dependency の reline の依存バージョンを 0.2.8.pre.1 以上に変更しています。

[e66200780b] aycabta 2021-08-15 08:08:58 UTC

標準添付ライブラリ reline のタブ補完時のコールバック Proc を呼び出すところで Reline.core のインスタンス変数 @completion_quote_character のクリアする部分を省いたメソッドを call_completion_proc_with_checking_args として切り出すリファクタリング

[fb0fc20196] aycabta 2021-08-17 10:21:27 UTC

標準添付ライブラリ reline のコールバックに dialog_proc というのを追加しています。ae4e301d5d180251e8e8b70437e078b61aa0f42eirb から設定するようにしたコールバックですね。

[1e527c8a55] aycabta 2021-08-18 10:22:27 UTC

fb0fc201963c5e70e62b72e0ac9e27dc39e0f5ec で標準添付ライブラリ reline に初期化が入ったけど使ってなかったインスタンス変数を削除しています。

[6fda457448] aycabta 2021-08-18 10:46:01 UTC

同じく fb0fc201963c5e70e62b72e0ac9e27dc39e0f5ec で reline の未使用の変数が導入されてたので "_" で置き換えて警告抑制しています。

[55459bdd67] aycabta 2021-08-18 15:10:48 UTC

標準添付ライブラリ reline の dialog_proc の実行時の出力の端末上のエスケープシーケンスを変更しています。

[6f66927aef] aycabta 2021-08-18 18:49:38 UTC

標準添付ライブラリ reline の dialog_proc の処理メソッド内のコメント追記。

[d7f654ad5a] aycabta 2021-08-20 14:14:42 UTC

標準添付ライブラリ reline の Windows 版の入力で sleep 0.01 を追加しています。

[788c047695] usa 2021-08-20 14:40:42 UTC

d7f654ad5a688dfcd6c274346c437e36ce249c4f の sleep 追加を ervert して標準添付ライブラリ reline の Reline::Windows で Win32API の WaitForSingleObject() という WindowsAPI を利用して入力待ちするようにしています。

[b95e5f4a41] aycabta 2021-08-21 15:13:45 UTC

標準添付ライブラリ reline の dialog_proc 設定時のカーソル移動を修正しています。

[2ec3977ce2] aycabta 2021-08-21 15:58:38 UTC

55459bdd679207640d345cae0a6cd71356732ed5コメントアウトしてた Reline::IOGate.erase_after_cursor を元に戻してます。たぶんデバッグ用に消してたのを戻し忘れかな?

[c0349765e9] aycabta 2021-08-21 15:58:58 UTC

標準添付ライブラリ reline の dialog_proc 対応追加時の消し忘れのデバッグ用のコメントアウトされたコードを消しています。

[02a61fe33f] aycabta 2021-08-21 16:31:21 UTC

標準添付ライブラリ reline で dialog 表示時にカーソルの表示を消すようにしています。

[d768eeeddb] aycabta 2021-08-21 16:47:07 UTC

02a61fe33f422d7e041531cac1a5a45a14ca5752 の続きで標準添付ライブラリ reline の Reline::Windows に SetConsoleCursorInfo() API を利用してカーソルの表示/非表示の切り替えに対応しています。

[85dd0ad5e0] aycabta 2021-08-23 12:57:48 UTC

標準添付ライブラリ reline のダイアログ表示を端末の幅を超えないように位置を調節しています。

[9b2afb2eed] aycabta 2021-08-23 13:02:25 UTC

標準添付ライブラリ reline のダイアログの縦方向のスクロール処理の修正。

[fb9fe4c43f] aycabta 2021-08-24 07:15:04 UTC

標準添付ライブラリ reline で複数行編集中のダイアログ表示の位置調整。

[f863ed5210] aycabta 2021-08-24 12:31:04 UTC

標準添付ライブラリ reline でダイアログ表示時にその行数が大きすぎたら上限(20行)まで先に切り詰めておくようにしています。

[081e5de34d] aycabta 2021-08-24 12:33:13 UTC

標準添付ライブラリ reline のダイアログ内の表示の不要な分岐を消すリファクタリング

[06bd48aba8] aycabta 2021-08-25 07:27:24 UTC

標準添付ライブラリ reline の dialog 表示の折り返し処理中の不要な nil の削除。

[ca1a2d1f68] aycabta 2021-08-25 08:21:05 UTC

標準添付ライブラリ reline の複数行編集中の補完処理の修正。

[ff43b0f2dd] aycabta 2021-08-25 08:22:23 UTC

標準添付ライブラリ reline で dialog_proc が返す表示内容が空の時に設定をインスタンス変数にバックアップしているようです。

[475038a622] aycabta 2021-08-25 08:22:54 UTC

標準添付ライブラリ reline の dialog 表示時のカーソル移動の修正。

[18c0814fe0] aycabta 2021-08-26 03:52:10 UTC

lib/reline.rb のコメントの typo 修正。

[fdc005e54e] aycabta 2021-08-26 16:47:33 UTC

標準添付ライブラリ reline の補完で候補が 1つだけの時の上下移動の処理を修正しています。

[8e463e3e73] aycabta 2021-08-26 16:50:49 UTC

標準添付ライブラリ reline の複数行編集時の処理のリファクタリング

[4b2b10707a] aycabta 2021-08-26 16:51:44 UTC

標準添付ライブラリ reline の補完候補のダイアログでの選択したものの背景色を変更するようにしています。

[164e486225] aycabta 2021-08-26 17:52:48 UTC

標準添付ライブラリ reline の dialog 表示のメソッドで未使用だった引数を削除して、対応してそれに渡すために保持してたインスタンス変数も削除しています。

[acffb0b068] aycabta 2021-08-26 18:45:27 UTC

標準添付ライブラリ reline で補完候補のダイアログ表示のための Proc オブジェクト定義を定数に切り出しています。

[8d4370b066] aycabta 2021-08-27 05:58:05 UTC

標準添付ライブラリ reline の dialog_proc を複数登録可能にしています。複数のダイアログを同時に表示するのかな。そしてクリアは一括でしかできなさそう。

[4cd344c958] aycabta 2021-08-27 12:33:22 UTC

標準添付ライブラリ reline で dialog_proc の登録時に context というユーザーデータも一緒に登録できるようにしています。

[7e8a627052] aycabta 2021-08-27 12:35:42 UTC

標準添付ライブラリ reline で複数 dialog 対応を利用して補完とは別にドキュメントの表示もできるようにしているようです。

[78f46e6576] aycabta 2021-08-27 16:53:43 UTC

標準添付ライブラリ reline でタブ補完で rdoc のドキュメント表示する時に正しくクラス名の時にその rdoc を表示できるように対応しているようです。

[7ea46c1ef2] aycabta 2021-08-27 17:03:52 UTC

標準添付ライブラリ reline の dialog 表示についてのテストを修正しています。

[acd15a39d2] aycabta 2021-08-27 17:10:51 UTC

標準添付ライブラリ reline の dialog_proc で端末の色付けで背景色を Proc から選択できるようにしています。ただ選択中の行のものは決め打ちみたいですね。

[3d757ba1b6] aycabta 2021-08-27 17:15:27 UTC

標準添付ライブラリ reline の dialog 消去時の nil で NoMethodError になるところを空配列にしておいて回避するようにしています。

[6273b9bb62] aycabta 2021-08-27 17:25:57 UTC

標準添付ライブラリ reline でタブ補完でのドキュメント表示時に rdoc の色付けを有効にするようにしているようです。

[d41d41da38] aycabta 2021-08-27 17:29:35 UTC

標準添付ライブラリ reline で補完候補の選択状態を補完完了時にクリアするのが漏れてたのを修正しています。

[b023ef8594] aycabta 2021-08-27 17:37:30 UTC

標準添付ライブラリ reline で SIGINT のシグナルハンドラに表示中の dialog のクリアを追加しています。

[29586ec9f3] aycabta 2021-08-29 10:27:04 UTC

標準添付ライブラリ reline の dialog_proc 登録時に使う context に DEFAULT_DIALOG_CONTEXT という定数を渡すようにして同じ配列を共有するようにしています。不要になった context ローカル変数の代入が残ってますね。

[32124de17e] aycabta 2021-08-29 10:30:17 UTC

標準添付ライブラリ reline の dialog 関係の定数が Reline::Core の下に定義されてたので、トップレベルからのフルパスで定数名を指定して代入するようにしています。

[3248c42592] aycabta 2021-08-29 10:48:57 UTC

標準添付ライブラリ reline の Reline::Core#dialog_proc_list という reader メソッド定義を削除しています。専用の dialog_proc メソッドがあるので。

[74ba532883] aycabta 2021-08-29 10:49:21 UTC

標準添付ライブラリ reline で 29586ec9f3836afbfd9a48c30782fd178045e0c3 で不要になったローカル変数を削除しています。

[535a1cc71c] aycabta 2021-08-29 10:53:46 UTC

標準添付ライブラリ reline からドキュメント表示のためのダイアログのコールバック実装を削除しています。irb へ移動するためとあるので、ずっと前の ae4e301d5d180251e8e8b70437e078b61aa0f42eirb に追加されたのはここから移動されたものだったのですね。

[7857a1ab66] aycabta 2021-08-29 11:01:33 UTC

標準添付ライブラリ reline の dialog_proc に他のコールバックが登録される前に補完候補選択ダイアログ用のコールバックを登録しておくようにしているようです。

[8876710f2a] aycabta 2021-08-29 11:13:08 UTC

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

[5f7c2291d6] aycabta 2021-08-29 11:32:24 UTC

irb のバージョンを 1.3.8.pre.1 に更新しています。

[2d98593bf5] Jeremy Evans 2021-08-23 22:22:14 UTC

TracePoint が attr_reader や attr_writer などで追加された reader/writer メソッドのイベントをトレースできないのを修正しています。vm_call0_body() のメソッドの種類による分岐でフック呼び出しの実装が漏れてたのを追加しているようです。また call cache が残ってると正しくフック起動できないみたいなので TracePoint の有効化された時の cache 無効化するようにしています。 [ruby-dev:48729] [Bug #10470] [ruby-core:96032] [Bug #16383]

[9227989343] Nobuyoshi Nakada 2021-08-29 15:18:16 UTC

d1f0d1ca2ea4d7418b096ce71f68ce2bb3afd2c4 で defs/gmake.mk に macOS で rubyspec のファイル指定のターゲットの誤爆を防ぐために追加した spec/%_spec.bundle のターゲットの拡張子を $(DLEXT) 変数を利用するように修正しています。

[806786ff20] git 2021-08-29 15:18:56 UTC

version.h の日付更新

[9f9ea28375] Nobuyoshi Nakada 2021-08-29 15:51:33 UTC

rubyspec の C API テストのための拡張ライブラリで rb_int_positive_pow() という include/ruby/internal/intern/numeric.h で宣言されている関数のソースコード内の宣言に RUBY_EXTERN をつけるようにしています。

[a40f9c4a51] Nobuyoshi Nakada 2021-08-29 16:25:22 UTC

GitHub Actions の Windows 版で matrix 内にエラーを無視するかどうかの変数を書いてそれをテストのアクションで参照していたところを、変数が定義されてない時のデフォルト値として false を使うようにしています。

[4750dfa6db] aycabta 2021-08-29 17:18:18 UTC

標準添付ライブラリ irb の gemspec ファイルで reline の依存バージョンを 0.2.8.pre.2 以降に更新しています。

[3bbe860e50] aycabta 2021-08-29 17:29:13 UTC

標準添付ライブラリ irb のテストでデバッグのために追加してた -I オプションのパスを削除しています。

[b35eff27dd] aycabta 2021-08-29 17:29:47 UTC

標準添付ライブラリ irb の gemspec で reline の依存バージョンをさらに 0.2.8.pre.3 以降に更新しています。

[60eb328d42] aycabta 2021-08-29 17:34:26 UTC

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

[11b825076b] aycabta 2021-08-29 16:23:20 UTC

標準添付ライブラリ reline の Reline::Config に autocompletion という設定を追加して補完を on/off できるようにしています。

[935bb4c617] aycabta 2021-08-29 16:23:57 UTC

標準添付ライブラリ reline でダイアログによる補完のコールバックで候補の選択を Tab と Shift-Tab で前後できるようにキーバインドを追加しています。

[3a2e2a6848] aycabta 2021-08-29 16:40:06 UTC

標準添付ライブラリ reline の Reline::Config の autocompletion 設定のためのショートカットメソッド Reline::Core#autocompletion と Reline::Core#autocompletion= を追加しています。本当は Reline の特異メソッドを追加したかったみたいですがそれは 8750e1ada879fdb25fbea63fe5fd5f575b1a5ae7 で完了しています。

[24a26db795] aycabta 2021-08-29 16:40:19 UTC

標準添付ライブラリ reline のテストの一部で autocompletion を無効に設定しておくようにしています。

[62555d7ae6] aycabta 2021-08-29 16:49:41 UTC

標準添付ライブラリ reline で autocompletion をデフォルト true にしていたのを false に変更しています。互換性優先のため。

[e1ee7f9ced] aycabta 2021-08-29 17:15:47 UTC

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

[8750e1ada8] aycabta 2021-08-29 17:24:42 UTC

3a2e2a684824c8c60badd78bc30f1205ead2938c で追加したメソッドは Reline::Core のインタンスメソッドなので Reline の特異メソッドとして Reline.autocomletion, Reline.autocompletion= で呼べるように delegator を追加しています。

[b6b2b767ed] aycabta 2021-08-29 17:26:06 UTC

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

[ece4ed0da7] aycabta 2021-08-29 17:08:16 UTC

irbコマンドラインオプションに --autocomplete と --noautocomplete を追加して irb の設定にも IRB.conf[:USE_AUTOCOMPLETE] を追加しています。

[2d93b523e1] aycabta 2021-08-29 18:00:02 UTC

tool/sync_default_gems.rb に irb の同期処理を追加しています。おおー、まだなかったのか。

[26e74c6b1f] Nobuyoshi Nakada 2021-08-30 00:06:36 UTC

MJIT の JIT コンパイル時に生成する C ソースコードで GET_SELF というマクロを定義する前に #undef しておくようにしています。警告抑制のため。

[1e2f10e8aa] aycabta 2021-08-30 02:51:17 UTC

irb で補完によるドキュメント表示のコールバックで RDoc::RI::Driver#expand_name が例外を発生させた時に無視するようにしています。

[aeec02d7f3] aycabta 2021-08-30 02:52:38 UTC

irb の補完で rdoc のドキュメント表示ダイアログのためのコールバックでドキュメントのエントリの名前を正規化するようにしています。

[7379a493bd] aycabta 2021-08-30 03:00:43 UTC

irb のバージョンを 1.3.8.pre.3 に更新しています。

[be9cc6c758] Nobuyoshi Nakada 2021-08-30 03:03:44 UTC

rubyspec の C API 用の拡張ライブラリをビルドする時にリンクする libruby のファイル名を修正。共有ライブラリのほうをリンクするようにしていたのを libruby.a みたいなのをリンクするようにしているみたいです。

[598f4f4219] Hiroshi SHIBATA 2021-05-31 05:56:50 UTC

irb のテストで skip のわりに pend を利用するようにしています。

[f3ae14cbde] Hiroshi SHIBATA 2021-05-31 05:57:49 UTC

irb のテストで capture_io のかわりに capture_output を利用するようにしています。

[b17dc55017] Hiroshi SHIBATA 2021-05-31 10:10:50 UTC

irb のテストで rubyリポジトリ内で実行した時にバックトレースの省略表示されるのに対応しています。

[66a4768f65] Nobuyoshi Nakada 2021-08-30 04:11:13 UTC

b17dc550176385e34404672f4188af471e62c676 の追加修正でバックトレースの省略数の部分は具体的な数は固定せず任意の数字を許容するように緩和しています。

[465bd972ec] Nobuyoshi Nakada 2021-08-30 04:20:03 UTC

Integer#abs の rdoc 用コメントを numeric.c から ruby 実装の numeric.rb に移動しています。

[51070ee5c4] schneems 2020-10-23 14:34:18 UTC

拡張ライブラリ pathname の Pathname#mkpath と Pathname#rmtree の実装(これらは ruby スクリプトで定義されている)でメソッド内で require "fileutils" していたのを autoload を利用するようにしています。このほうが高速だからとのこと。うーんなるほど。マルチスレッドでの競合はもう大丈夫なんでしたっけ。

[83a744dd8c] Nobuyoshi Nakada 2021-08-30 04:53:53 UTC

GitHub Actions のいろんなコンパイラを試す .github/workflows/compilers.yml で configure 実行のアクションを crosshost の有無で分けていたのを同じアクションで引数を決めるところで分岐するようにしています。