ruby-trunk-changes r53847 - r53856

今日は主に String.new にキーワード引数 capacity が追加される変更がありました。

nobu: r53847 2016-02-17 11:38:09 +0900

numeric.c の corce_body(), coerce_rescue(), coerce_rescue_quiet() の引数の型を rb_rescue() の引数の関数ポインタの型にあわせて変更し、中でキャストして取り出すように修正しています。

svn: r53848 2016-02-17 11:38:09 +0900

version.h の日付更新。

nobu: r53849 2016-02-17 11:54:50 +0900

r53847 の続きで coerce_rescue() と coerce_rescue_quiet はさらに errinfo の引数も受け取るように型を変更しています。

naruse: r53850 2016-02-17 12:21:35 +0900

String.new にあらかじめ用意するバッファサイズを指定するキーワード引数 capacity を追加しています。 サイズは byte 数で指定するようです。 [ruby-core:73487] [Feature #12024]

naruse: r53851 2016-02-17 16:24:13 +0900

r53850 で freeze された文字列の String#initialize の挙動の変更を修正するため freeze チェックを追加しています。

nobu: r53852 2016-02-17 16:37:20 +0900

r53851 で追加された string.c の不要なプロトタイプ宣言を削除しています。

nobu: r53853 2016-02-17 17:29:58 +0900

test/lib/test/unit/assertions.rb の assert_no_memory_leak で memory_status.rb を require_relative でロードする時のパスがずれていたのを修正しています。

naruse: r53854 2016-02-17 19:15:28 +0900

r53851 による r53850 の String.new(capacity: size) の修正の再修正。 str_replace() で文字列バッファをいれかえたりヒープを確保しなおす前に str_discard() でバッファを解放しておくようにしています。 そして freeze した String オブジェクトに __send__ で無理矢理 initialize を呼び出すテストを追加しています。

nobu: r53855 2016-02-17 20:24:09 +0900

r53850 からの一連の変更の再修正。 ワイド文字のエンコーディングの終端文字のバイト数を考慮するように確保するバッファのサイズを計算するようにしています。 また可能なら REALLOC_N() を使ってバッファの再確保をするようにしています。

nobu: r53856 2016-02-17 21:42:00 +0900

特殊変数の $~ と $_ も組み込みの ID として defs/id.def で作っておくようにして、動的に rb_intern() で ID を作っていたところを idBACKREF とか idLASTLINE を使うようにしています。