ruby-trunk-changes r44078 - r44100

今日は Net::HTTP に新たな HTTP ステータスの対応追加、拡張ライブラリ curses の削除、RubyGems の更新など今日もいろいろ変更がありました。

mrkn:r44078 2013-12-08 23:30:03 +0900

r44073 の ChangeLog エントリに変更の理由について追記しています。 BigDecimal の精度が Float より小さいことがあるのが理由とのこと。

naruse:r44079 2013-12-09 02:11:46 +0900

標準添付ライブラリ net/http で 226 IM Used という HTTP ステータスの対応を追加しています。 https://github.com/ruby/ruby/pull/447
IM Used は差分エンコーディングという方法ででかいデータを部分的に取得する時に返されるステータスみたいです。 参考 URL: http://tools.ietf.org/html/rfc3229 (10.4.1 226 IM Used)

svn:r44080 2013-12-09 02:11:52 +0900

version.h の日付更新。

drbrain:r44081 2013-12-09 04:32:07 +0900

RubyGems の最新版をマージしています。 Gemfile.lock の PATH の記述の対応を追加しています。

drbrain:r44082 2013-12-09 04:44:07 +0900

ext/.document に syslog/lib と thread/thread.c を追加して rdoc のドキュメント化の対象にしています。 [ruby-core:58962] [Bug #9228]

drbrain:r44083 2013-12-09 04:52:38 +0900

NEWS ファイルの RubyGems の項目に Gemfile 対応(experimental) や依存関係解決の新実装、GEM_HOME をプラットフォームを跨って共有できるようになった新機能について追記しています。
そういえば今って Gemfile 対応はどういう位置付けになってるんでしょう。デフォルトで読むのはセキュリティ上の懸念からやめたと思うのですが、どうやったら読むのかな…

tmm1:r44084 2013-12-09 08:07:43 +0900

r44062 の RubyVM.stat でキャッシュに使うカウンタの取得時に serial_t の型の整数を変換するのに SIZET2NUM() を利用していたのを SERIALT2NUM() という変換マクロを serial_t の型の定義にあわせて定義してそれを使うように修正しています。

drbrain:r44085 2013-12-09 08:41:14 +0900

RubyGems の最新版マージ。 gem install -g で依存関係を記述したファイルを指定してインストールした時に対象のファイル(Gemfile や gem.deps.rb)が存在しなかった時に例外が発生するようにしています。
なるほど、さっきの疑問の答は `gem install -g` とすると Gemfile などを読んでくれるというものだったようです。と思ったら r43299の解説で自分で書いてましたね。

nobu:r44086 2013-12-09 11:14:35 +0900

date_parse.c で日付のパースのために使っている正規表現でバックトラックのため処理時間が爆発する問題の修正で、部分的に [ [ :alpha: ] ] を使っている部分に i オプションを無効化するようにしています。 (?-i: ) っていう記法で部分的に Regexp のオプションを制御できるんですね、知らなかった。 [ruby-core:58876] [Bug #9221]

nobu:r44087 2013-12-09 12:25:38 +0900

rb_class_path_cached() という C API を追加して classname を __classpath__ もしくは __tmp_classpath__ という内部的インスタンス変数から返して、もしまだセットされていなかったら単に Qnil を返すようにしています。r36574 とか r42867 のあたりの変更でこの挙動をする API がなくなってたか欲しくなったので追加したって感じではないかと思います。

nobu:r44088 2013-12-09 12:26:07 +0900

拡張ライブラリ objspace の ObjectSpace.trace_object_allocations_start で NEWOBJ() のフック内で class_path を r44087 で追加した rb_class_path_cached() を使って取得するようにしています。このフック内では新規のオブジェクト確保はしてはいけないので、そのために rb_class_path_cached() を追加したみたいですね。 [ruby-core:58853] [Bug #9212]

shugo:r44089 2013-12-09 13:39:49 +0900

拡張ライブラリ curses を削除しています。今後は gem パッケージとしてメンテナンスされていくそうなので、Curses を使うかたはそちらをご利用ください。あれ、テストが消えてない…。

shugo:r44090 2013-12-09 15:26:34 +0900

というわけで curses のテスト test/test_curses.rb も削除しています。

a_matsuda:r44091 2013-12-09 16:04:43 +0900

標準添付ライブラリ xmlrpc のコメントの typo 修正。 authentification -> authentication

nobu:r44092 2013-12-09 16:13:38 +0900

test_weakmap.rb を追加して weakref.rb で利用している ObjectSpace::WeakMap のテストを追加しています。

nobu:r44093 2013-12-09 16:13:40 +0900

ObjectSpace::WeakMap#size および #length という要素数を取得するメソッドを追加しています。 r44092 で追加したテストファイルにテストも追加しています。

hsbt:r44094 2013-12-09 17:51:17 +0900

Marshal.dump および Marshal.load の rdoc 用コメントの英文法を修正しています。 https://github.com/ruby/ruby/pull/470

ko1:r44095 2013-12-09 18:12:23 +0900

RubyVM.stat を実装する C 関数の名前を ruby_vm_stat() から vm_stat() に改名しています。 ruby_ の prefix は公開されているシンボルにつけるものという内部的なルールがあるからですね。 ruby_ と rb_ の違いってなんでしたっけ。確か ruby_ がよりコア向けというような印象はあるのですが。

tmm1:r44096 2013-12-09 19:06:49 +0900

r44060 の Hash#replace の最適化をやめた変更で {}.replace({}) が SEGV してしまうようになっていたので table2 が NULL の時をケアする条件分岐を追加しています。

charliesome:r44097 2013-12-09 19:51:02 +0900

メソッドキャッシュおよび定数キャッシュの invalidation のために保持する連番の名前を method_serial/constant_serial から global_method_state/global_constant_state に改名しています。ささださんと議論した結果改名することにしたそうです。

charliesome:r44098 2013-12-09 20:00:23 +0900

RCLASS_EXT(klass)->class_serial のショートカットとして RCLASS_SERIAL() という関数マクロ定義を追加して、各所でこれを利用するようにリファクタリングしています。

ktsj:r44099 2013-12-10 00:47:35 +0900

拡張ライブラリ thread の Queue#push (#enq, #<<)、Queue#pop (#deq, #shift)、Queue#length (#size) などの rdoc に別名も call-seq に追加するようにしています。また alias 定義に rb_alias() のかわりに rb_define_alias() を利用するようにしています。どうも RDoc が rb_define_alias() でないと認識してくれないようです。

svn:r44100 2013-12-10 00:47:42 +0900

version.h の日付更新。