ruby-trunk-changes 2021-07-01

今日は irb の builtin command ls の即値オブジェクト対応の修正や Fiber 用の coroutine の copy 実装のかわりに pthread 実装というのを導入する変更などがありました。

[e8c2b03ee1] Masataka Pocke Kuwabara 2021-06-29 10:16:58 UTC

標準添付ライブラリ irb の builtin command ls に特異メソッド(というか特異クラス)を持てない即値オブジェクトを渡すとエラーになってたので singleton_class の例外を捕捉して無視するようにしています。

[acbddbe68c] Takashi Kokubun 2021-06-30 12:04:56 UTC

e8c2b03ee145e10217a8ed58dbadfe30f9edbdfe で後置 rescue で例外を全て捕捉してましたが、TypeError のみ捕捉するように begin ... rescue を使うように修正しています。

[4a3df35239] Peter Zhu 2021-06-30 19:24:22 UTC

ObjectSpace.each_object の実装で os_obj_of_i() というコールバック関数が引数に struct RVALUE の slot の 1つのエントリのサイズを渡しているのにそれを使わずに struct RVALUE * にキャストしてポインタ演算してたので VALUE にキャストして stride 引数の値を利用するようにしています。しかしどっちが可搬性があるのかな。

[518d39388a] git 2021-06-30 20:12:22 UTC

version.h の日付更新

[8ee24840c8] Keiko Kaneko 2021-06-29 12:29:22 UTC

標準添付ライブラリ irb の builtin command ls の実装で標準添付ライブラリ set に依存していたのをやめて Array で代用するようにしています。

[9c9531950c] Nobuyoshi Nakada 2021-06-30 21:42:00 UTC

tool/rbinstall.rb で dry run 指定時にもディレクトリを作ってしまうことがあったのを修正しているようです。 FileUtils 定数を一時的に専用の Module で上書きして実行する処理をブロックつきユーティリティメソッドとして切り出して同じ処理が必要だったところで使いまわしています。

[42130a64f0] Samuel Williams 2021-06-25 22:17:26 UTC

あんまりちゃんと読んでないのですが coroutine (Fiber) の実装で copy というタイプ(昔の 1.8 以前の Ruby のようにスタックを copy するやつだったと思う)を削除して、かわりに pthread という実装を追加してこれを必要なシステムコールやライブラリ関数がない時の fallback 実装にしています。てことは Fiber 作ると pthread のスレッドを作っちゃうのかな。メモリ消費が重そう。blocking fiber 利用時に copy の実装だと難しい点があったみたいですね。 [ruby-core:104444] [Feature #18015]

[1467328edc] Samuel Williams 2021-06-30 02:11:12 UTC

GitHub Actions の Ubuntu でのテストに configure に --with-coroutine=pthread を渡すケースを追加しています。

[9692aeedf1] Nobuyoshi Nakada 2020-10-26 15:52:43 UTC

File.fnmatch の rdoc 用コメントのサンプルで第1引数の pattern を変数に代入したものを使ってたのを各行でリテラルで書くようにしています。その行だけみてわかるようにということですね。

[9ca3051660] Nobuyoshi Nakada 2021-07-01 05:26:06 UTC

File.fnmatch の rdoc 用にダミーで定義している(if false で実際には実行されない)メソッド定義の第3引数のデフォルト値を nil から 0 に修正しています。 このメソッド定義の引数って rdoc で自動的に使われたりするのかな? たぶん使わないので実際の実装と一応合わせておこうというだけかな。

[f6539202c5] Martin Dürst 2021-07-01 08:33:43 UTC

Unicode の U+6E7F という文字を UTF-8エンコードしたもの(「湿」という漢字)が ISO-2022-JP として解釈するとタグ(<>)と同じバイトが含まれるので String#encode で ISO-2022-JP に encode する時に xml オプションを指定した時に誤ってエスケープされないことを確認するテストを追加しています。 e86c1f6fc53433ef5c82ed2b7a4cc9a12c153e4c の修正に対応した? テストの一種みたいです。 [ruby-dev:49493] [Bug #12052]