ruby-trunk-changes r36524 - r36538

今日は %i, %I リテラル(シンボルの配列を生成)の追加や Net::HTTP の SSLセッション再利用、Rational/Complex の Marshal.load の互換性強化などの機能追加がありました。

tenderlove:r36524 2012-07-25 03:10:35 +0900

シンボルの配列を生成する %i{} と %I{} というリテラル文法(かっこは別の記号でも可。%w, %W などと同様)を追加しています。 [ruby-core:37840] [Feature #4985]
しかし id.h を更新しないとコンパイルに失敗するようですね。 id.h は parse.h に依存しているので parse.o の依存関係に id.h が抜けているんでしょうか。

drbrain:r36525 2012-07-25 06:29:24 +0900

RubyVM::InstructionSequence の rdoc を追加しています。 disasm の結果の細かい内容に触れていますがここは実装の詳細に依存しているので現状の構造にあまり依存するなよーとかいうことを言っておきたいような気がしますね。 [ruby-core:46710] [Bug #6785]

drbrain:r36526 2012-07-25 06:49:31 +0900

Regexp.last_match の rdoc のマークアップの修正と、$~ という変数について単に global variable と書かれていたのを special global variable と書き直しています。 [ruby-core:46335] [Bug #6723]

drbrain:r36527 2012-07-25 06:54:50 +0900

doc/re.rdoc の typo 修正。

drbrain:r36528 2012-07-25 09:05:59 +0900

Net::HTTP で SSL 接続する際に OpenSSL::SSL::SSLSocket#session を保存しておいて同じオブジェクトで再度通信する時には使い回すようにすることで SSL 接続時の処理をスキップして高速化するようにしています。 [ruby-core:39629] [Feature #5341]

naruse:r36529 2012-07-25 09:19:09 +0900

CGI のタグ生成用のメソッドの定義で必要に応じて定義するようになっているのですが常に再定義しているので定義済みの時はスキップするようにすることで再定義の警告を抑制するようにしています。また CGI のテストで未使用の変数の警告除去しているようです。

naruse:r36530 2012-07-25 09:29:30 +0900

CGI のタグのメソッド定義やその他の場所で文字列を連結しているところで a += b のような記法をしていたところを a << b に変更しています。後者は a のオブジェクトを破壊的に変更しますが、前者の記法は新しいオブジェクトを生成してそれを再代入するのでメモリ効率が悪い可能性があります。

usa:r36531 2012-07-25 10:01:59 +0900

test/testunit/test_redefinition.rb のテストクラス名とメソッド名が test/testunit/test_hideskip.rb と重複していて衝突していたので改名しています。コピペの弊害ですね……。

drbrain:r36532 2012-07-25 11:20:07 +0900

lib/net/.document で rdoc の対象ファイルを指定していたのを削除して全てのファイルを対象にするようにしています。

nobu:r36533 2012-07-25 13:12:44 +0900

こんなファイルがあったことを始めて知ったのですが tool/ytab.sed という yacc/bison が生成した y.tab.c を変換する sed ファイルに Bison 2.6 用の修正を入れています。 yydebug の定義を #ifndef yydebug でくくるようにしています。 Bison 2.6 で yydebug がマクロになったんでしょうかね。
[追記]そうではなくて、yydebug は parse.y で定義しているのですがそれが外の yydebug まで置換してしまうので部分的に無効にしているということのようです。[/追記]

naruse:r36534 2012-07-25 15:49:35 +0900

テストで不要なローカル変数への代入をなくして未使用変数の警告除去。 および vm_exec.c/vm_exec.h でプラットフォーム判定のために変数を直接書いていたところを defined() を使うように修正しています。

naruse:r36535 2012-07-25 16:13:24 +0900

r36421 でドキュメントのみ追記した Array#join に明示的に nil を渡した時に $, を利用するという挙動についてのテストを追加しています。 [ruby-core:46738] [Bug #5915]

nobu:r36536 2012-07-25 17:17:08 +0900

atomic.h で ATOMIC_XXX な処理のマクロの定義を条件コンパイルで分岐する際に HAVE_GCC_ATOMIC_BUILTINS の条件を _WIN32 をより前にもってきています。 MinGW の時に(?) gcc の機能のほうを利用したいということみたいです。

nobu:r36537 2012-07-25 17:17:46 +0900

enable-shared が指定されている時にビルドディレクトリで ruby を実行可能にするためにライブラリ等のシンボリックリンクを作成する tool/mkrunnable.rb で、Windows 環境では mklink を使ってリンクを生成するようにしています。
[追記]よくみると、mklink によるリンクは自動的に実施まではしていなくて、コマンドを表示するだけです。mklink の実行には管理者権限が必要で、うまく自動で動かすことができないので表示するだけに留めているとのことです。[/追記]

nobu:r36538 2012-07-25 17:41:07 +0900

Complex と Rational の 1.8 系の Marshal.dump の形式を load できるように rb_marshal_define_compat() を使って互換性を確保しています。 [ruby-core:45775] [Bug #6625]