ruby-trunk-changes r44385 - r44430

今日は Exception#backtrace_locations の不具合修正、Bindings#local_variables の追加、キーワード引数の arity や parameters メソッドでの扱いの修正などがありました。
そして、今日最新の安定版 2.1.0 がリリースされました。

http://www.ruby-lang.org/en/news/2013/12/25/ruby-2-1-0-is-released/

RGenGC やメソッドキャッシュ、fstring など高速化に寄与しそうな変更が多く入ったバージョンになっていますのでお試しください。

nobu:r44385 2013-12-24 23:04:31 +0900

r44380 の追加修正で define_method でメソッドの可視性の状態の影響を受けるかどうかのチェックを行う時に self だけでなく cbase(そこでメソッドを定義したらどのクラス/モジュールにメソッドが追加されるか)も一致することをチェックするようにしています。つまりレシーバなしで define_method を呼べる状態の時だけ public/protected/private/module_function などの状態の影響をうけるようにしているようです。

nobu:r44386 2013-12-24 23:04:35 +0900

test/fileutils/test_fileutils.rb でヘルパーメソッドがグローバル変数を使ってトップレベルに書かれていたのを無名モジュールのメソッドとして定義してそれを include + extend して使うようにリファクタリングしています。

nobu:r44387 2013-12-24 23:20:47 +0900

標準添付ライブラリ fileutils のテストで FileUtils.chown のエラー時のテストを追加しています。 [ruby-core:59298] [Feature #9292]

nobu:r44388 2013-12-25 00:36:29 +0900

r44387 で追加した FileUtils.chown のテスト用の不具合修正。

svn:r44389 2013-12-25 00:36:35 +0900

version.h の日付更新。

nobu:r44392 2013-12-25 01:03:12 +0900

Binding#local_variables メソッドを追加しています。 [ruby-core:56543] [Feature #8773]
あれ、local_variables はまだ追加されてなかったっけ、と調べてみたら r42464 で追加されていたのは local_variable_set, local_variable_get, local_variable_defined? でローカル変数一覧の取得はまだだったようです。

nobu:r44394 2013-12-25 01:44:44 +0900

r44392 のテストで期待しているローカル変数が間違っていたのを修正。またメソッド名も変更しています。

nobu:r44395 2013-12-25 01:44:49 +0900

拡張ライブラリ openssl の string2hex() という関数で buf_len を2倍してからサイズチェックしていたところを、整数のオーバフローの結果が未定義であることを考慮して最初にサイズをチェックしてから2倍するようにしています。コンパイラオプションによっては警告が出るみたいです。 [ruby-core:51711] [Bug #7744] https://github.com/ruby/ruby/pull/242

nobu:r44396 2013-12-25 01:56:31 +0900

標準添付ライブラリ fileutils.rb の FileUtils#rmdir の rdoc 用コメントの受け付けるオプションの記述に :parents オプションも追加しています。 [ruby-core:52118] [Bug #7824]

nobu:r44399 2013-12-25 09:47:21 +0900

r44387 で追加した標準添付ライブラリ fileutils の FileUtils.chown のテストでユーザ名やグループ名として空文字列を渡すと Mac OS X では無視されるのかエラーにならないそうなので ":::" というユーザ名やグループ名としてはありえない(":" が /etc/passwd や /etc/group のセパレータなのでユーザ名やグループ名には ":" は含められないそうです)文字列を指定することでエラーを起こすようにしています。

nobu:r44400 2013-12-25 09:47:26 +0900

File.chown を実装する関数 rb_file_chown で uid や gid を保持する変数を int 型で宣言していたのを rb_uid_t や rb_gid_t などのそれ用の型を利用するように修正しています。

nobu:r44401 2013-12-25 10:40:53 +0900

r44400 の続き。 file.c に to_uid(), to_gid() といった整数オブジェクトを rb_uid_t や rb_gid_t に変換する関数を切り出すリファクタリング

nobu:r44402 2013-12-25 10:42:09 +0900

拡張ライブラリ openssl で OpenSSL の定数を OpenSSL::SSL::SSL_XXX として Ruby の定数としても定義しているところで SSL_OP_MSIE_SSLV2_RSA_PADDING という定数は定数マクロ OP_MSIE_SSLV2_RSA_PADDING が定義されている時だけ定義するようにしています。 OpenSSL 1.0.1 でこの定数が削除されたらしいので新しい OpenSSL でもビルドできるようにしています。 https://github.com/ruby/ruby/pull/488

mame:r44403 2013-12-25 12:45:15 +0900

sample/trick2013 に RubyKaigi 2013 で発表された TRICK 2013 というコードコンテストの入賞作品が追加されています。おめでとうございます! https://github.com/tric/trick2013

nobu:r44404 2013-12-25 12:46:08 +0900

r44403 で追加された sample/trick2013 のコードの行末の空白の除去やファイル末尾の改行の追加などを行っています。普通は問題ないのでしょうけど、mame さんのコードだと空白も必要だったりするかもしれないので、これで動かなくなってないといいのですけど。

nobu:r44405 2013-12-25 12:46:09 +0900

さらに r44403 で追加されたファイルの svn property の設定です。

nobu:r44406 2013-12-25 13:00:59 +0900

mingw で localtime_r(3) がうまく動かないので _gmtime64_s() と _localtime64_s() という関数をチェックしてこれを利用するようにしているそうです。 Time の Marshal.dump のテストが mingw で失敗していたのを修正しているそうです。 [ruby-core:58764] [ruby-core:58391] [Bug #9119]

a_matsuda:r44407 2013-12-25 14:10:12 +0900

標準添付ライブラリ webrick の rdoc 用コメントの typo 修正。

nobu:r44408 2013-12-25 16:28:05 +0900

SEGV を受信した時のテストを一時ディレクトリに移動して実行することで core ファイルが残らないようにして、ruby のビルドとテストを自動化している chkbuild が SEGV を誤検出しないようにしています。

ko1:r44411 2013-12-25 18:35:03 +0900

r44170 で追加した Exception#backtrace_locations メソッドですがメソッドの arity のエラーなどメソッド呼び出し時の ArgumentError だとうまくバックトレース情報が取れないという不具合があったためダミーの control frame を push してからバックトレースを作るようにしています。また backtrace_locations が取得するための内部的なインスタンス変数 bt_locations のセットもしていなかったのでセットするようにしています。文字列で返す Exception#backtrace のほうは argument_error() で最初のフレームのぶんは作っていたようです。 [ruby-core:59306] [Bug #9295]

nobu:r44412 2013-12-25 20:11:42 +0900

test/ruby/test_method.rb と test/ruby/test_proc.rb の空のメソッドやブロックや未使用の変数の警告除去。

nobu:r44413 2013-12-25 20:28:56 +0900

キーワード rest 引数(アスタリスク 2つで **keys のように残りのキーワード引数をまとめて Hash で受け取れる引数の指定)をもつメソッドの arity の値が間違っていた不具合を修正しています。 [ruby-core:53298] [Bug #8072]

nobu:r44414 2013-12-25 20:30:15 +0900

仮引数名なしのキーワード rest 引数(** だけ書いて受け取るけど捨てる記法)があったメソッドなどの Proc#parameters で :keyrest を含めるように修正しています。

zzak:r44418 2013-12-25 22:34:27 +0900

標準添付ライブラリ abbrev.rb の rdoc 用コメントの修正。 [ruby-core:58548] [Bug #9146]

nobu:r44419 2013-12-25 22:44:05 +0900

test/ruby/test_keyword.rb の未使用変数やブロックパラメータによる外側の変数の遮蔽などの警告除去。

nobu:r44420 2013-12-25 22:44:18 +0900

r44414 の名前なしのキーワード rest 引数の Proc#parameters などの修正がどうもよくなかったらしくて、 追加修正としてパース時にキーワード rest 引数の名前の有無をチェックして NODE に保持しておくようにしています。これはなぜだろう…

nobu:r44421 2013-12-25 23:02:18 +0900

compile.c で整数のより小さいサイズの型への暗黙の変換が clang でエラーになるそうで、欲しいのは真偽値だけだったようなので比較式の結果を代入するように修正しています。

naruse:r44423 2013-12-26 00:43:36 +0900

リリース時のファイル公開用のスクリプトを tool/release.sh に追加しています。

svn:r44424 2013-12-26 00:43:42 +0900

version.h の日付更新。

usa:r44425 2013-12-26 00:46:02 +0900

リリース用のツール tool/make-snapshot で 2.1 以降のバージョン番号のつけかたの変更に対応してブランチ名のつけかたも変更になったのに対応しています。

nobu:r44426 2013-12-26 00:46:18 +0900

r44423 で追加した tool/release.sh の svn property を設定しています。

kazu:r44427 2013-12-26 01:05:13 +0900

ChangeLog と NEWS ファイルを doc/(NEWS, ChangeLog)-2.1.0 に移動して ChangeLog と NEWS ファイルを 2.2 向けにリセット/分割しています。

usa:r44428 2013-12-26 01:10:21 +0900

r44423 で追加したリリース用のスクリプト tool/release.sh で xxx-stable のシンボリックリンクを貼る処理を追加しています。リリース時には系列ごとに -stable で最新の安定版がダウンロードできるようにしています。

nobu:r44429 2013-12-26 01:19:03 +0900

r44423 で追加した tool/release.sh に実行権限を追加しています。

usa:r44430 2013-12-26 01:24:53 +0900

r44428 の再修正。preview 版 や rc 版の時もシンボリックリンクを更新してしまっていたので preview 版 と rc 版では -stable のシンボリックリンクは更新しないようにしています。