ruby-trunk-changes r40428 - r40443

今日は $- のような特殊変数っぽい不正な変数の記述が文法エラーになっていなかったのを修正した他はプラットフォーム依存のビルドエラー修正やリファクタリング、ドキュメントの修正などが主でした。

headius:r40428 2013-04-24 05:29:24 +0900

r40195 で導入した nonblock-io 時の errno = EAGAIN などすぐに読み書きできない時に発生させる例外を子クラスとして追加した変更で EAGAIN と EWOULDBLOCK が異なるプラットフォームでのコードで IO::EWOULDBLOCKRWaitReadable のクラス名を typo していたのを修正。 [ruby-core:43325] [Feature #6154]

svn:r40429 2013-04-24 05:29:30 +0900

version.h の日付更新。

zzak:r40430 2013-04-24 12:28:06 +0900

Array#index の rdoc で用例に find_index を併記したので、index と find_index が同じ実装であること(alias であると書かれていますが正確には同じ実装を使っているだけで alias ではないです)の記述を削っています。 また Array#replace の rdoc に initialize_copy の用例も併記しています。 http://github.com/ruby/ruby/issues/282
initialize_copy には dup 時に呼ばれるという意味があり replace と同じ実装であるのは実装の詳細であるような気がするので、ドキュメントとしては別々に書かれてもいいような気はします。が、実際に内容は同じですからねぇ。

zzak:r40431 2013-04-24 12:55:02 +0900

拡張ライブラリ socket の rdoc コメントの typo 修正。 http://github.com/ruby/ruby/issues/292

zzak:r40432 2013-04-24 13:47:31 +0900

Object#method の rdoc で引数の説明の変更と、サンプルの追加をしています。 false が渡されたら継承したメソッドや、クラスに include されたモジュールはオブジェクトに extend で追加されたメソッドは含まないのですが、この文章だと singleton method だけ含まれるように見えなくもない気がします。
また Kernel#sub, Kernel#gsub, Kernel#chop の用例で戻り値を $_ と表記するようにしています。 ruby に -n オプションをつけて起動した時にだけ定義されるグローバル関数であるこれらのメソッドは標準入力から読み込んだ文字列に対して操作をしてそれを返すんですね。 http://github.com/ruby/ruby/issues/293

nobu:r40433 2013-04-24 13:51:05 +0900

r40432 の変更による行末の空白を除去しています。

zzak:r40434 2013-04-24 13:55:07 +0900

String#setbyte の第2引数名と戻り値の表記を int -> integer に変更しています。 http://github.com/ruby/ruby/issues/294

zzak:r40435 2013-04-24 14:01:59 +0900

ext/tk/sample/demos-en/text.rb のコメントの番号つきの箇条書きの番号がずれていたのを修正。 http://github.com/ruby/ruby/issues/295

nobu:r40436 2013-04-24 14:04:01 +0900

特殊変数の別名として使える $-a などの "$-" ではじまる特殊変数がありますが、 "$-" だけという特殊変数も文法エラーにならず受け付けてしまい奇妙な挙動をしていたので、文法エラーにしてはじくようにしています。 [ruby-talk:406969]

zzak:r40437 2013-04-24 14:08:47 +0900

任意のオブジェクトを Float に変換する Float() の rdoc で参考のリンクとしてはっていた URL に移動があったので追随しています。 [ruby-dev:47280] [Bug #8304]

kosaki:r40438 2013-04-24 14:15:56 +0900

exec する時に IO の file descriptor に FD_CLOEXEC フラグをセットするためにプロセスで開いている file descriptor の最大値を管理しているところをスレッドセーフにするために ATOMIC 操作を利用するようにした r39687 の変更と、それに合わせて最大値の変数の型を rb_atomic_t に変更した r39776 の追加の変更で、rb_fd_fix_cloexec() からも rb_update_max_fd() を呼ぶようにしています。 rb_atomic_t の変数の型の変更の箇所を局所的にして影響を限定的にしているようです。 [ruby-dev:47155] [Backport #8064]

nobu:r40439 2013-04-24 14:22:00 +0900

parse.y の rb_intern3(), rb_check_id(), rb_check_id_cstr() でシンボルや ID を検索するために C の文字列を一時的に String オブジェクトの VALUE 値のように wrap する処理が共通だったので setup_fake_str() という関数名で括り出すリファクタリングをしています。

akr:r40440 2013-04-24 21:41:06 +0900

File.directory?, File.pipe?, File.socket?, File.blockdev?, File.chardev?, File.exists?, File.world_readable?, File.world_writable?, File.file?, File.zero?, File.size?, File.owned?, File.grpowned?, File.identical?, File.size, File.atime, File.mtime, File.ctime などの File のメタデータチェック系のメソッドの rdoc に引数にファイルパスだけでなく IO オブジェクトも受け付けることを追記しています。おお、知らなかった……。

akr:r40441 2013-04-24 21:50:12 +0900

File の rdoc の細かな修正です。

akr:r40442 2013-04-24 21:52:26 +0900

configure で mblen(3) の存在チェックをして eval_intern.h の CharNext() という関数マクロで使っていたところで mblen() が使えない時には単に1バイトずつ進めるようにしています。次のコミットで追記されるのですが uClibc で mblen() が使えないので、そこでビルドできるようにするための変更のようです。

akr:r40443 2013-04-24 22:22:27 +0900

r40442 の ChangeLog に mblen() 存在チェック追加の理由を追記しています。