ruby-trunk-changes 2019-06-25

今日は拡張ライブラリ psych の Exception のダンプの backtrace 対応や Hash を継承したクラスのインスタンスの dump/load の不具合修正や arm32 版の Coroutine 実装の不具合修正などがありました。

[9c19cd5222] aycabta 2019-06-24 14:58:50 UTC

irb の auto indent のためのネストレベル管理のためのメソッド process_nesting_level からメインの処理を check_corresponding_token_depth というメソッドに切り出して、インデントレベルの管理部分だけ process_nesting_level に残すようにリファクタリングしています。

[e09afd15b7] git 2019-06-24 15:19:49 UTC

version.h の日付更新

[dbe232e24e] Samuel Williams 2019-06-25 05:04:04 UTC

ARM 32 版 Coroutine 実装 coroutine/arm32/Context.S でレジスタの番号ミスを修正しています。

[9b23aab290] Hiroshi SHIBATA 2019-06-25 02:51:25 UTC

tool/sync_default_gems.rb で io/console の同期時のファイルパス間違いを修正。

[083fda8490] SHIBATA Hiroshi 2019-03-27 07:53:54 UTC

標準添付ライブラリ fileutils のバージョン(定数 FileUtils::VERSION の値)を 1.2.0 に更新しています。

[e572ff2f95] David Rodríguez 2019-04-30 14:21:45 UTC

lib/fileutils.rb からの fileutils/version の require を require_relative を利用するように修正? しています。

[d118c84b0b] Jeremy Evans 2019-06-15 00:50:31 UTC

標準添付ライブラリ scanf で IO#scanf で seek が Errno::EINVAL を返した時にも Errno::ESPIPE と同様に無視するようにしています。 Windows では EINVAL が発生するらしいです。 [ruby-core:89271] [Bug #15199]

[4bd1909427] Aaron Patterson 2019-01-09 21:25:09 UTC

拡張ライブラリ psych で Exception オブジェクトをダンプした時に backtrace も出力してましたがしないように変更しています。 "never worked" なのでって書いてあるので実は出力されてなかった? 後のほうで rubyspec の変更もありますがどうやらそれっぽい実装はあるけど実際にはダンプされてなかったようです。

[f770a5be66] Aaron Patterson 2019-01-09 21:28:08 UTC

4bd190942710725a79ca61fb30cff152888b55d0 の続きで psych での Exception と NameError (NameError は内部に追加の属性があるので独自に実装があるらしい)で共通部分をメソッドに切り出すリファクタリング

[a53ab897c3] Aaron Patterson 2019-01-09 21:34:51 UTC

で psych で例外オブジェクトの backtrace をダンプするように戻しています。なるほど dump はしてたけど load 時に参照してなかったのでちゃんと参照するようにしたっぽい。

[0016edbead] Jordan Owens 2019-01-16 05:29:12 UTC

拡張ライブラリ psych のテストに Hash を継承してインスタンス変数を追加したクラスのインスタンスを dump した時の不具合についてのテストを追加しています。

[03dac55f90] Aaron Patterson 2019-01-16 18:46:34 UTC

拡張ライブラリ psych の Hash のダンプ時に格納してる要素の前にインスタンス変数の出力を行うようにしています。 []= メソッドの実装にインスタンス変数が必要なケースでこの順にしておかないとエラーになるため。なるほどそういうことか。つまり修正は dump 時の順序だけど問題が発生するのは load 時。なので古いバージョンで dump したものは新しいバージョンでも load できない。

[3c4fc830dd] SHIBATA Hiroshi 2019-02-26 06:56:55 UTC

拡張ライブラリ psych の .gemspec ファイルの spec.files から存在しなくなってる CHANGELOG.rdoc を削除しています。

[00d0ede845] SHIBATA Hiroshi 2019-02-26 23:44:33 UTC

3c4fc830dd3f2c3e1e642f83072bead8189aec63 と同じく psych.gemspec ファイルの spec.extra_rdoc_files からも CHANGELOG.rdoc を削除しています。

[63f78bbaae] Jean Boussier 2019-04-26 11:26:14 UTC

拡張ライブラリ psych の Psych::ScalarScanner#tokenize で switch 文の when に正規表現書いてたのを if 文と Regexp#match? メソッドを使うように書き換えています。

[5a4d2b9f2f] Jean Boussier 2019-04-26 16:57:03 UTC

拡張ライブラリ psych の Psych::ScalarScanner のインスタンス変数 @string_cache を削除しています。使われかたをみてもいまいちなにを cache していたのかよくわからず。dedup してるわけでもなさそうだしなぁ。

[746812ee96] Jean Boussier 2019-04-26 17:38:43 UTC

拡張ライブラリ psych の Psych::ScalarScanner で整数を tokenize する時の正規表現を修正して例外的な処理しているのを整理しています。ところで知らなかったのですが、YAML の整数で桁の区切りにカンマが書けるんですね。つまり "123,456,789" みたいに書いて 123456789 という整数になる。これ配列を JSON 風に書いた時に衝突するんじゃないかと思ったのですが、この処理はあくまで scalar の処理するものなので配列の要素の分解は別にされているみたいで、 "[123,456,789]" と書いたのを Psych.load するとちゃんと 3要素の配列になりました。うーん、きもちわるい仕様(たぶん YAML の仕様ですよね)。

[d7887b05d8] Hiroshi SHIBATA 2019-06-25 07:46:42 UTC

a53ab897c35586a836710a8afeb1e8c1abd9b087 で例外を Psych.dump すると backtrace もダンプされるようになったので rubyspec を追随させています。

[1cbc4f9876] Yusuke Endoh 2019-06-25 08:20:01 UTC

net/imap のテストでサーバーを起動する Thread の準備ができるまで待つのにローカル変数への代入をチェックしていたのを Thread#stop? を使って待ち状態になるまで待つように変更しています。このほうが確実にソケットを accept する状態になってることを確認できるため。