ruby-trunk-changes 2021-06-22

今日は RubyVM::AST::Node#node_id メソッドの追加、拡張ライブラリ socket や openssl の blocking fiber 用 Scheduler の対応や、Scheduler 対応するための C API の追加などがありました。

[ed8e265d4b] Yusuke Endoh 2021-06-21 12:15:25 UTC

RubyVM::AST::Node#node_id メソッドを追加しています。ISeq の各命令に対応する node_id が記録できるようになるのでそれとつきあわせることができるようにということみたいです。デバッガでの利用などを想定しているらしい。

[9498ea9385] aycabta 2021-06-21 12:43:00 UTC

089a26b0a619a649b1958061df8f21a6cdc6cacd の拡張ライブラリ readline のテストの Encoding.default_external 利用を revert。CI のどこかの環境が壊れたのかな。

[af19f9a6e9] aycabta 2021-06-21 13:06:33 UTC

標準添付ライブラリ reline のテストで全体的に teardown で Reline.test_reset を呼んでおくようにしています。

[1192393b3e] aycabta 2021-06-21 13:08:13 UTC

標準添付ライブラリ reline のテストで環境変数 RELINE_TEST_ENCODING で指定された Encoding でファイルなどの入力を読み込むようにしています。

[e11800e114] aycabta 2021-06-21 13:09:24 UTC

拡張ライブラリ readline のテストで reline を実装として使っている場合に利用する Encoding を Reline::IOGate.encoding で決めるようにしています。

[574c8ee9f1] aycabta 2021-06-21 13:11:34 UTC

拡張ライブラリ readline のテストでも reline を利用する場合 teardown で Reline.test_reset を呼んでおくようにしています。

[046fd3ac8c] aycabta 2021-06-21 13:12:06 UTC

標準添付ライブラリ reline で inputrc ファイルの読み込み時に Encoding の変換のエラーが発生した場合に専用の例外クラスの例外を発生させるようにして、テストでこれを捕捉して無視させるようにしています。テスト用だけかな?

[215fd1bf2c] aycabta 2021-06-21 13:24:31 UTC

拡張ライブラリ readline のテストで Reline.test_reset の呼び出しを finish_using_lib_reline というメソッドに切り出すリファクタリング

[06d52249de] aycabta 2021-06-21 13:29:04 UTC

拡張ライブラリ readline で追加した teardown メソッドで super を呼ぶようにしています。

[8509532c78] aycabta 2021-06-21 14:13:04 UTC

215fd1bf2ca70c5853623a0575b34863cc165057 で切り出した readline のテストの finish_using_lib_reline ですが Reline.test_reset を呼ぶかわりに Reline モジュールのインスタンス変数 @core を nil にリセットするという実装に置き換えています。内容は同じものみたいですね。なんでだろ。Reline がないとどっちみち呼べない実装だし……。

[c1741df1a1] Burdette Lamar 2021-05-18 13:27:41 UTC

Numeric クラスの rdoc 用コメントにメソッド一覧を追加しています。

[e2599a358d] git 2021-06-21 17:40:47 UTC

version.h の日付更新

[4b28fea6ee] Nobuyoshi Nakada 2021-05-06 15:10:16 UTC

configure で tool/ifchange の利用時に直接コマンドとして起動せずに shell を経由するようにしています。ソースツリーを実行不可なファイルシステムとしてマウントされてた場合の対応とのこと。

[6a48f62c51] aycabta 2021-06-14 08:18:32 UTC

拡張ライブラリ readline の gemspec ファイルでバージョンを 0.1.2 に更新しています。

[ff609eee98] Yusuke Endoh 2021-06-22 07:36:36 UTC

rubygems のテスト用に Object#stub メソッドを追加しているといころで既に定義済みだったら再定義しないようにしています。 標準添付ライブラリ resolv のテストでも同じメソッドを定義しているので再定義の警告が出ることがあったみたいです。

[3deb5d7113] Samuel Williams 2021-05-08 12:13:47 UTC

rb_io_maybe_wait()、rb_io_maybe_wait_readable()、rb_io_maybe_wait_writable() といった blocking fiber 用に Scheduler を利用した blocking IO のための C API を追加して、拡張ライブラリ socket で accept や send, sendmsg, recvfrom などの実装でこれを利用するようにしています。つまり socket が blocking fiber 対応するということで着々と下準備が進められていますね。

[45e65f302b] Samuel Williams 2021-06-19 01:47:16 UTC

rb_io_wait_writable()、rb_io_wait_readable() などの API を deprecated にして拡張ライブラリ socket や openssl で 3deb5d7113e1fd6e4b468e09464d524d390d811e で追加した rb_io_maybe_wait_writable()、rb_io_maybe_wait_readable() などをかわりに使うようにしています。

[fcc6fd23ec] Samuel Williams 2021-06-19 23:05:15 UTC

45e65f302b663b2c6ab69df06d3b6f219c1797b2 で rb_io_sysread() も rb_thread_wait_fd() のかわりに rb_io_wait() を使うように書きかえたのを再修正。そもそも読み込み可能になるのを待つのをやめてかわりに read_internal_locktmp() で nonblock の指定をしてたのをやめています。

[e01fa2f6ff] Samuel Williams 2021-06-22 11:14:45 UTC

NEWS に拡張ライブラリ socket の blocking Fiber の Scheduler 対応についてや 3deb5d7113e1fd6e4b468e09464d524d390d811e で追加された新しい C API について追記しています。

[eef3c08edc] Samuel Williams 2021-06-22 11:18:40 UTC

e01fa2f6fffe4599b10e88865992f476f9656039 の NEWS の追記でチケットの参照がリンクになってなかったところを修正しています。

[bce0021f75] Anton Rieder 2021-06-22 11:15:21 UTC

Time#to_f の rdoc 用コメントの markup 追加や typo 修正。