ruby-trunk-changes r59921 - r59934

今日は標準添付ライブラリ net/http の Net::HTTP.post の不具合修正や FileUtils.rmdir の挙動の変更などがありました。

kazu: r59921 2017-09-15 21:03:41 +0900

test/ruby/test_rubyoptions.rb で配列を多値的に代入する時に右辺値に不要な * をつけていたのを消しています。

kazu: r59922 2017-09-15 21:03:42 +0900

r59893 で vm_dump.c に追記したコメントの typo 修正。

naruse: r59923 2017-09-16 01:53:55 +0900

標準添付ライブラリ net/http の Net::HTTP.post というショートカット版のメソッドで URL にクエリストリングを含んだものを指定しても反映されていなかったのを修正しています。 https://github.com/ruby/ruby/pull/1686

svn: r59924 2017-09-16 01:53:56 +0900

version.h の日付更新。

naruse: r59925 2017-09-16 01:56:16 +0900

kconv のテストで行継続を使った文字列リテラルのなかに行末のバックスラッシュが抜けているところがあったのを修正しています。たまたま(?) ちょうど文字の境界の部分だったので改行が追加されるだけでテスト結果的には影響がなかったのだと思います。 https://github.com/ruby/ruby/pull/1696

naruse: r59926 2017-09-16 02:00:49 +0900

標準添付ライブラリ find で Dir.entries を使っていたところを Dir.children を使うようにして "." と ".." をスキップする処理を不要にしています。 https://github.com/ruby/ruby/pull/1697 [ruby-core:82786] [Feature #13896]

nobu: r59927 2017-09-16 02:42:00 +0900

ruby スクリプトを実行可能な形式のファイルにするための ruby-runner を bin/ruby というファイル名に改名しています。よくわかりませんが shebang に /usr/bin/env ruby みたいに書かれてる場合の対策みたいで、たぶん bundler のテストとかでよく使われてて、それがrubyコアのテストとしてインストール前に実行する時にうまく動かないのでrubyという名前で呼び出せるようにしてしまおう、ということではないかと思います。

nobu: r59928 2017-09-16 02:47:50 +0900

r59927 の修正、ということで svn property が設定されているので、多分 .gitattributes に追加されてた bin/ruby を実際に svn:ignore に追加する設定だと思います。

nobu: r59929 2017-09-16 04:25:45 +0900

r59927 の ruby-runner の bin/ruby 改名の続きで make bin/ruby のルールで $(RUBY_INSTALL_NAME) のかわりに $(@F) という Makefile のマクロを使って、ターゲットの basename 部分(つまり ruby)を取り出して使うようにしています。

nobu: r59930 2017-09-16 04:25:46 +0900

ruby-runner.c のリファクタリング。分岐の両方で memcpy を呼び出してたのを引数の調整だけ分岐内でして共通コードにまとめることで else 節を不要にしています。

hsbt: r59931 2017-09-16 08:46:46 +0900

標準添付ライブラリの .gemspec ファイルで spec.homepage に https://www.ruby-lang.org/ を使ってたものを GitHub のそれぞれのリポジトリを使うように変更しています。 [ruby-core:82817] [Bug #13906]

nobu: r59932 2017-09-16 20:50:55 +0900

r59927 のさらに続きで make bin/ruby のルールを Makefile.in から common.mk に移動して Windows 環境でも有効にしています。 また timestamp ファイルの依存関係を追加して不要の再ビルドを避けるようにしています。よくわからないのですがコマンドの表示の抑制に他の timestamp 作成では $(Q) じゃなくて @exit と @ を直接使ってるのだけどここだけ $(Q) なのはなんでだろ。

nobu: r59933 2017-09-16 20:50:56 +0900

File.basename と File.dirname の rdoc 用コメントに、引数の文字列の末尾に "/" が1つ以上あったら、まずそれを全て削ってから処理する旨を明記しています。 [ruby-core:82828] [Bug #13908]

nobu: r59934 2017-09-16 20:59:47 +0900

標準添付ライブラリ fileutils の FileUtils.rmdir でディレクトリ内にファイルなどが存在していて削除できない時に発生する Errno::ENOTEMPTY が無視されるので、キーワード引数 parents に true が指定されて親ディレクトリも辿って消す時の親ディレクトリの時だけ無視するようにしています。けどこの変更だと親じゃない(引数で直接指定された)ディレクトリの削除時に Errno::EEXIST や Errno::ENOENT が無視されなくなってしまっているような気がします。 [ruby-dev:50236] [Bug #13889]