ruby-trunk-changes r52227 - r52248

今日は obj.?meth 記法の追加に伴なう追加の変更/修正や、標準添付ライブラリの ipaddr, openssl の不具合修正などがありました。

naruse: r52227 2015-10-23 01:54:01 +0900

拡張ライブラリ openssl の SSLContext#npn_select_cb で next protocol negotiation 機能で選択するプロトコル名のサイズをチェックして、長すぎる時(256 以上が不正みたいです)に例外を発生させるようにしています。 [ruby-core:70021] [Bug #11369]

naruse: r52228 2015-10-23 01:54:05 +0900

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext#alpn_select_cb でも同様にサイズチェックするようにしています。というか ssl_npn_select_cb() と共通部分が多いので ssl_npn_select_cb_common() という関数を切り出して共有するようにしています。 [ruby-core:70021] [Bug #11369]

naruse: r52229 2015-10-23 01:54:55 +0900

Process.spawn にとても長いコマンドラインを与えた時のテストで、オプションに rlimit_nproc: 1 を与えています。 FreeBSD で実際に echo コマンドを大量に起動してしまって負荷がかかるのを避けるようにしています。 [ruby-core:71161] [Bug #11613]

normal: r52230 2015-10-23 05:36:08 +0900

NEWS ファイルの BasicSocket#sendmsg_nonblock の exception: false のキーワード引数のサポート追加のエントリの typo 修正。

normal: r52231 2015-10-23 07:25:19 +0900

拡張ライブラリ io/wait のテストで IO#wait の戻り値のチェックを追加しています。

nobu: r52232 2015-10-23 08:42:51 +0900

r52214 の obj.?meth 記法についての NEWS ファイルのエントリの ActiveSupport → Active Support と空白を入れるようにしています。 https://github.com/ruby/ruby/commit/a356fe1#commitcomment-13936198

nobu: r52233 2015-10-23 10:47:08 +0900

a.attr= のような代入記号付きのメソッドのコンパイル時のリスト操作をリファクタリングしています。 [Feature #11537]

nobu: r52234 2015-10-23 10:49:38 +0900

r52214 で追加した obj.?meth 記法の対応の追加で obj.?hoge = のような代入記号付きのメソッドの時も obj が nil だったら呼び出しをスキップするようにしています。この時右辺値(意味的には引数と同じなので当然ですが)は評価されません。 attrset 型メソッドで効かないのは仕様じゃなかったみたいですね。 [Feature #11537]

shugo: r52235 2015-10-23 11:09:03 +0900

標準添付ライブラリ matrix の matrix/eigenvalue_decomposition.rb でインデントやブロックパラメータ名のローカル変数との重複などの警告除去。またテストを追加しています。

svn: r52236 2015-10-23 11:09:16 +0900

r52235 の行末の空白除去。

nobu: r52237 2015-10-23 11:58:22 +0900

obj.?meth の記法で method chain を書いた時の peephole optimization の対応を強化しているみたいです。 [Feature #11537]

nobu: r52238 2015-10-23 13:51:35 +0900

obj.?meth= のテストに obj.? ||= のような syntax sugar のケースも追加しています。 https://github.com/ruby/ruby/pull/1064

shugo: r52239 2015-10-23 15:23:16 +0900

標準添付ライブラリ net/ftp の frozen_string_literal: true の magic comment の "-*- ... -*-" の indicator を削除しています。また getbinaryfile と gettextfile の実装でさっそく obj.?meth の記法を使って nil の時の対応をしています。これ block を yield する時にブロック引数として受け取って blk.?(arg1, arg2) のように呼べるんですね。またブロック渡しの呼び出し時のテストケースも追加しています。

shugo: r52240 2015-10-23 15:29:08 +0900

標準添付ライブラリ net/imap とそのテストのファイルでも frozen_string_literal: true の magic comment から "-*- ... -*-" の indicator を削除しています。

hsbt: r52241 2015-10-23 15:46:15 +0900

String#gsub! の rdoc 用コメントの call-seq に gsub と同様に第2引数に Hash を渡す例を追加しています。 https://github.com/ruby/ruby/pull/1023

hsbt: r52242 2015-10-23 16:03:34 +0900

File.extname の rdoc 用コメントやテストスクリプトの空白やインデントの修正。 https://github.com/ruby/ruby/pull/977 https://github.com/ruby/ruby/pull/975

nobu: r52243 2015-10-23 16:07:36 +0900

r52201 と r52242 の ChangeLog エントリの indent 修正。

hsbt: r52244 2015-10-23 16:35:14 +0900

標準添付ライブラリ ipaddr で IPAddr が文字列をチェックする時の正規表現が \A と \z でなく ^ と $ を使っていたので改行を含む文字列だと不正な文字列を受け付けてしまっていた不具合を修正しています。 https://github.com/ruby/ruby/pull/942 [Bug #11513]

hsbt: r52245 2015-10-23 17:55:35 +0900

標準添付ライブラリ irb で STDOUT.sync = true をトップレベルで実行しているため require しただけで変更されてしまうのを IRB.start 時に実行するように修正しています。 https://github.com/ruby/ruby/pull/864

hsbt: r52246 2015-10-23 18:10:39 +0900

r52008 で導入した ruby-runner とそのソースコード(自動生成する)を .gitignore に追記しています。

nobu: r52247 2015-10-23 21:10:40 +0900

NoMethodError や変数名がみつからない時の NameError のメッセージの組み立てかたを少しリファクタリングしています。途中文字列を組み立ててたのを最後にまとめてフォーマット文字列に埋め込むようにしています。

nobu: r52248 2015-10-23 23:27:37 +0900

NameError のメッセージ組み立てで固定の文字列を r52247 で fstring として作るようにしていたのを fake string (C の静的領域の文字列をそのまま Ruby の String オブジェクトにみせかける)を使うようにしてさらに最適化しています。