ruby-trunk-changes r30001 - r30053

今日もたくさんのコミットがありました。json の最新版が取り込まれたり、拡張ライブラリ作者は必見の新しい API が追加されていたりといった変更がありました。

さて、昨日の最後が r29998 で今日は r30001 から、きりのいい r30000 がみあたりませんが、 ruby_1_8 のブランチへのコミットで svn さんがゲットされています。svn さんはほぼ毎日、version.h ヘッダの日付更新をまるでロボットのように正確に休みなく務めてくれているコミッタさんです。今日はみんなで svn さんに感謝しましょう。

naruse:r30001 2010-12-02 00:07:35 +0900

Net:HTTP の rdoc の修正。結局 Net::HTTPS のドキュメントも net/http.rb にまとめて書くようにされています。[ruby-core:33469]

svn:r30002 2010-12-02 00:07:36 +0900

version.h の日付更新。
svn さんいつもありがとう!!

naruse:r30003 2010-12-02 01:26:13 +0900

拡張ライブラリ json 1.4.2 を取り込んでいます。そういえば json も外部のライブラリなんですね。

naruse:r30004 2010-12-02 01:26:15 +0900

json/common.rb で文字エンコーディング変換のために iconv を使うのをやめて Ruby の String#encode を使うようにしています。これで警告メッセージが出なくなって快適です。

naruse:r30005 2010-12-02 01:40:16 +0900

Net::HTTP のドキュメントの改善もうひとつ。URI.parse() じゃなく URI() の使用例を書くようにしています。#2579

drbrain:r30006 2010-12-02 02:31:20 +0900

Net::HTTP のドキュメントもうひとつ。文章の位置を組み替えたために "following" など前後の指示語の関係がおかしくなっていたので位置を修正。

nobu:r30007 2010-12-02 07:08:41 +0900

tcsetattr(3) が EINTR でかえってくる可能性があるのに対応しています。 [ruby-dev:42666]

nobu:r30008 2010-12-02 07:15:15 +0900

minitest の修正。テストが SIGINT などで割り込まれても途中の結果は表示するように。
なんか、このような修正をだいぶ前にも入れているのを見たような記憶がかすかにありますねー。

nobu:r30009 2010-12-02 07:20:23 +0900

minitest 修正。 --gc-stress オプションをつけると GC.stress = true にしてテストを実行するようになるらしい。

naruse:r30010 2010-12-02 10:03:55 +0900

extmk.rb に $makeflags.defined? の定義を追加。どのリビジョンからかわかりませんが拡張ライブラリのコンパイルがエラーになっていたのでそれを修正しています。

naruse:r30011 2010-12-02 10:12:41 +0900

拡張ライブラリ jsonコンパイルで最適化オプションの -O3 をつけているのをやめています。"-O3" オプションが常に利用できるわけじゃないよってことで。必要なら全体を optflags=-O3 とかで configure しましょう。

usa:r30012 2010-12-02 10:20:36 +0900

win32/Makefile.sub で $(RC) コマンドに -nologo オプションを渡しています。$(RC)は定義されている場所がみつからなかったので nmake とかが自動で定義する「リソースコンパイラ」というやつなのでしょう。余計なメッセージの表示を抑制しているようです。

naruse:r30013 2010-12-02 10:46:42 +0900

ext/extmk.rb から $makeflags.defined? を削除しています。$mflags を使うのが正解だったとのこと。

naruse:r30014 2010-12-02 10:46:45 +0900

Net::HTTP#set_form_data で application/x-www-form-urlencoded の body をエンコードするのに独自に実装していたのを URI の実装を利用するようにリファクタリング

naruse:r30015 2010-12-02 13:33:56 +0900

URI.encode_www_form に渡した Hash (あるいは 2要素の配列の配列などでも OK)の値のほうが to_ary で配列に変換できるオブジェクトだったら、変換して複数のペアに分解する。

つまりこんな感じですね。

URI.encode_www_form({ :key => [0, 1] }) #=> "hoge=0&hoge=1"

naruse:r30016 2010-12-02 13:36:54 +0900

json のテスト(test/json/test_json_rails.rb) で Symbol#to_json を定義しています。
Symbol#to_json は require "json" で定義済みだと思いますが、なぜだろう。消してもテストは動くようですし(@ Ubuntu)。

usa:r30017 2010-12-02 13:42:29 +0900

Windowsコマンドプロンプトからの読み込みのバグへの対処、1バイトずつ読むようにする一時的な対処をしていたのが別の(?) irb での不具合になっていたので修正されています。これが最終版というわけでもないっぽいです。[ruby-core:33511]

usa:r30018 2010-12-02 13:49:28 +0900

r30017 の修正漏れ。

usa:r30019 2010-12-02 15:32:01 +0900

もうひとつ修正漏れ [ruby-core:33513]

usa:r30020 2010-12-02 15:37:01 +0900

そして ChangeLogtypo 修正。

akr:r30021 2010-12-02 17:01:24 +0900

bignum.c の関数マクロの引数利用時にかっこでくくられていないところを修正。
天泣記 にマクロ定義を抽出するスクリプトが貼られてたのできっとこれからも1ファイルずつ修正されていくのでしょう。

shyouhei:r30050 2010-12-02 20:06:32 +0900

RubyVMruby_vm_at_exit という API を追加しています。
これは拡張ライブラリから呼び出して、VM が終了する時にリソースを解放する処理を登録するためのものです。将来的にマルチVMがサポートされるようになれば、VM の終了が必ずしもプロセスの終了を意味しなくなりますから、拡張ライブラリで利用しているリソースを解放しないといけなくなります。そのためのコールバック関数を登録するための API です。 ruby_vm_t * 型の引数を受け取る関数を渡すと RubyVM に登録されて、VM の終了時に呼び出されます。
shyouhei さんのコミットログはいつも詳細で、意図を書いていてくれるので観察者としては助かります。

naruse:r30052 2010-12-02 21:28:42 +0900

enc_alias_internal でエンコーディング名のエイリアスを登録する時にすでにその名前が登録済みだった場合にメモリリークしていたので修正。また最初に登録した時だけ set_encoding_const で定数を定義するようにしています。

naruse:r30053 2010-12-02 21:28:45 +0900

jsonjson/add/rails.rb ファイルを削除しています。明示的に require しなければロードされないファイルだったみたいですね。