ruby-trunk-changes r36859 - r36872

今日は OpenSSL が Next Protocol Negotiation という機能に対応したり、IPAddr が発生させる例外のクラスが定義されたり、tset/unit が gem 化されたりしました。

nobu:r36859 2012-08-31 13:58:18 +0900

ext/json/parser.o の依存関係に $(ruby_headers) を追加しています。 rb_float_new() の宣言が必要になったためとのこと。

svn:r36860 2012-08-31 13:58:21 +0900

version.h の日付更新。

nobu:r36861 2012-08-31 14:02:47 +0900

vm_trace.c の rb_threadptr_exec_event_hooks() で state という変数が未初期化で利用される可能性があったので初期化を追加。

nobu:r36862 2012-08-31 14:03:47 +0900

vm_trace.c でフックのリストから不要とマークされたものを回収するループ内で開放済みのメモリを参照してしまう不具合を修正しています。

nobu:r36863 2012-08-31 14:27:44 +0900

mkmf.rb の生成する Makefile の修正。 install-rb の依存関係にインストール先のディレクトリの他にタイムスタンプファイルも追加していたのを直接依存するのを止めて、インストール先ディレクトリの依存関係にタイムスタンプファイルを追加しています。毎回タイムスタンプファイルを更新してしまうのを回避?

nobu:r36864 2012-08-31 14:31:20 +0900

id.h の生成から parse.h の依存関係を消して、parse.y と id.h.tmpl から RUBY_TOKEN_??? というマクロ定義部分を切り出して id.h を生成するようにしています。

usa:r36865 2012-08-31 14:34:08 +0900

BigDecimal#to_f で 0.0 や Inf の符号を、変換した double の値から取得するのではなくて BigDecimal で持っている符号を引き継ぐようにしています。 [ruby-core:47381] [Bug #6955]

usa:r36866 2012-08-31 14:52:10 +0900

r36865 の BigDecimal#to_f の符号の挙動のテストを追加しています。

nobu:r36867 2012-08-31 15:35:21 +0900

r36864 で common.mk に記述した id.h や parse.h, parse.c の依存関係に {$(VPATH)} が付加されていたのを消しています。 nmake でビルドできないからとのこと。 [ruby-dev:46097] [Bug #6956]

knu:r36868 2012-08-31 16:30:22 +0900

IPAddr のメソッドが発生される例外が単に ArgumentError だったりしたのを IPAddr::Error とそれを継承した IPAddr::InvalidAddressError, IPAddr::AddressFamilyError, IPAddr::InvalidPrefixError などを定義して使うようにしています。互換性のため IPAddr::Error は ArgumentError を継承しています。

knu:r36869 2012-08-31 17:43:09 +0900

標準ライブラリ set の Set#each, reject!, select!, SortedSet#each などのブロックを受け取るメソッドがブロック引数として受け取って、内部で呼び出す Enumerable のメソッドには Proc オブジェクト化されたブロック引数を呼び出すブロックをわたしていたところを、そのままブロック引数として渡すようにしています。このほうが効率的です。

nobu:r36870 2012-08-31 17:44:02 +0900

再度 common.mk の parse.c の依存関係の id.h を {$(VPATH)} つきに直しています。ルールの依存関係のところに書くのは大丈夫みたいです。 [Bug #6956]

emboss:r36871 2012-08-31 18:47:36 +0900

拡張ライブラリ openssl に Next Protocol Negotiation という機能のサポートを追加しています。 SSLContext#npn_protocols= というメソッドを追加してプロトコルの候補(文字列の配列)を指定できるようにし、SSL_CTX_set_next_protos_advertised_cb() という関数に渡すコールバックを SSLContext#npn_select_cb というメソッドで受け取ることができるようにしています。 クライアントが handshake 時に利用するプロトコル("http/1.1" とか "spdy/2" とか)を指定できるようにする機能で OpenSSL 1.0.1 から追加された機能だそうです。 [ruby-core:45272] [Feature #6503]

kou:r36872 2012-08-31 21:50:16 +0900

Test::Unit に gemspec を追加していわゆる fakegem として扱うようにしています。 他の gem 化されている標準ライブラリは元々 rubygems パッケージがある外部のライブラリを標準添付していて gem update で ruby 本体はそのままにライブラリだけ更新できるというものだと思いますが、test-unit は標準添付されているものとは別に test-unit.gem が存在していて、 gem install test-unit でインストールするとそちらの rubygems のパッケージのほうを使うようにするという、しくみは同じですがちょっと目的が異なる gem 化のようです(勘違いしていたら教えてください)。 [ruby-dev:46051] [Feature #6875]