ruby-trunk-changes r61497 - r61509

今日は ERB の 2.5 でのコメント埋め込み記法に複数行の文字列を書いた時の不具合修正や Thread#fetch の発生させる KeyError の不具合修正などがありました。

k0kubun: r61497 2017-12-27 21:40:03 +0900

標準添付ライブラリ erb で <%# ... %> でコメントアウトされたコードを入れた時に生成されるソースコードが行コメントのあとに改行が入ってしまい syntax error になることがあったのを修正しています。 r58948 で警告除去のためにメソッド呼び出しの引数にかっこをつけたのが原因らしい。とはいえかっこつけなくても改行されると問題なので、この前の content_dump との併せ技な気はしますが…。ともあれかっこをつけるようにしたのは文字列リテラルの dedup のために単項演算子メソッド String#-@ を使っていたので警告を抑制するためだったので、String#-@ の利用もやめて String#freeze メソッドを使うようにしています。 [ruby-core:84484] [Bug #14243]

k0kubun: r61498 2017-12-27 22:32:59 +0900

tool/downloader.rb で with_retry というメソッドを追加してファイルのダウンロード時にリトライするようにしています。 Appveyor で何らかの理由でダウンロード時にエラーになることがあるみたいで、CI を頑健にするためリトライを追加したようです。

k0kubun: r61499 2017-12-27 22:35:25 +0900

r61498 で tool/downloader.rb に追加した with_retry で最大リトライ回数に達した時の例外発生が抜けてたのを修正しています。

nobu: r61500 2017-12-27 23:07:49 +0900

r59440 の AIX 向けの configure.ac の修正で #include する条件を追加してましたが、AC_INCLUDES_DEFAULT([]) も追加するように修正しています。macOS で問題があったみたいです。

ko1: r61501 2017-12-27 23:50:49 +0900

rubygems のテストで Thread を使ったテストのために、spec ファイルの末尾に Latch なる同期用のクラス(なぜこれ独立して定義してるんだろう…と思ったけど古い ruby もサポートするためかな)の操作を追記してたのを、Thread 起動用のユーティリティメソッドを追加して、これを使うようにしています。このテストがたまにハングアップしてしまってたのを修正しているそうです。あとなんか定義していた定数を remove_const する後処理が ensure 節にあるのに、例外発生時にその前に return してしまうようになってたので、不要な return 文を削除しています。

eregon: r61502 2017-12-28 01:12:18 +0900

mspec を upstream からマージしています。 .travis.yml のテストマトリクスのバージョンの修正など。

svn: r61503 2017-12-28 01:12:19 +0900

version.h の日付更新。

eregon: r61504 2017-12-28 01:12:47 +0900

rubyspec も upstream からマージしています。

eregon: r61505 2017-12-28 06:18:20 +0900

rubyspec のマージ続き。

normal: r61506 2017-12-28 08:40:43 +0900

spec/rubyspec の空ディレクトリを削除しています。 2.5 でパッケージサイズが大きくなった、という話題のチケットでのコメント由来なんですが、"We can remove those empty trees ASAP and save our users' inodes." って言い回しがおもしろい。 [ruby-core:84397] [ruby-core:84533] [Bug #14219]

kazu: r61507 2017-12-28 09:00:05 +0900

Thread#fetch でのキーが存在しない時の KeyError 例外の発生に rb_key_err_raise() を利用するようにして KeyError#receiver、#key がセットされるようにしています。セットされないと did_you_mean での suggest が効かないというのもあるみたいでした。 [ruby-core:84508] [Bug #14247]

k0kubun: r61508 2017-12-28 14:07:16 +0900

2.5 で deprecated constant にしておいた標準添付ライブラリ erb の ERB::Compiler::SimpleScanner2 という定数を削除しています。

nobu: r61509 2017-12-28 17:28:42 +0900

Proc#binding で block_type_ifunc の時に空の ISeq を生成する時の path と realpath のダミーの文字列をそれぞれ rb_str_new2() で別に確保してたのを、同じオブジェクトを使いまわすようにしています。