ruby-trunk-changes r36270 - r36284

今日は拡張ライブラリ zlib の CPU を使う圧縮/伸長処理中に GVL を解放するようにする変更や、ruby に -K オプションを付けると警告が出るようになる変更などがありました。

drbrain:r36270 2012-07-03 06:03:15 +0900

拡張ライブラリ zlib で圧縮/伸長処理のあいだ GVL を開放して CPU 負荷のかかる処理をしつつ別の Thread が動けるようにしています。 バッファのメモリ領域のサイズ変更している部分で RString のバッファが埋め込みでないことを前提にしていたり確保サイズと capa が一致していなかたり若干微妙な気もしますが、ここは GVL を外しているので String の通常の関数でサイズの変更ができないんですね。 [ruby-core:45733] [Feature #6615]

svn:r36271 2012-07-03 06:03:22 +0900

version.h の日付更新。

drbrain:r36272 2012-07-03 06:12:48 +0900

object.c の ???_methods 系のメソッドの rb_define_method() に rdoc 用に class.c で定義されている旨のコメントを追記しています。 [ruby-core:45944] [Bug #6666]

drbrain:r36273 2012-07-03 06:15:47 +0900

ext/zlib/zlib.c にバッファサイズについて割り込みの反応との兼ね合いで決めているというような説明コメントを追加しています。

naruse:r36274 2012-07-03 10:52:51 +0900

1.8 の機能であった文字コードを指定する -K オプションは互換性のために受け付けて default_external を設定するなどのそれらしい処理を一応していますが、今後は -K オプションが指定されたら警告を表示するようにしています。 [ruby-core:39025] [Feature #5206]

naruse:r36275 2012-07-03 11:10:59 +0900

r36274 の -K オプションの警告についてテストを追加しています。

naruse:r36276 2012-07-03 11:11:01 +0900

lib/test/unit/parallel.rb で Test::Unit::TestCase#on_parallel_worker? を定義する前に再定義の警告を抑制するために undef するようにしています。

nobu:r36277 2012-07-03 11:16:08 +0900

enable-shared を有効にしている時にビルド後にビルドディレクトリで ruby をそのまま実行可能にするようにライブラリ等必要なパスをシンボリックリンクで作成するルール make runnable というのを追加して、tool/mkrunnable.rb というスクリプトを追加してこれでシンボリックリンクを張るようにしているようです。開発者向けですね。ただし LIBRUBY_RELATIVE が yes でないと動かないようです。

drbrain:r36280 2012-07-03 12:09:30 +0900

拡張ライブラリ zlib でバッファの String オブジェクトに tainted フラグをつける処理を zstream_detach_buffer() という共通して通る関数内に移動するリファクタリングです。

usa:r36281 2012-07-03 12:10:02 +0900

r29091 で Windows 版というか VC9 でコンパイルする時に拡張ライブラリ dl でコンパイラの最適化で不具合が発生するので一部で最適化を off にするようにしていたそうですが、VC8 でも発生していたそうでその workaround を入れるバージョンの指定を変更しています。 [ruby-dev:45875] [Bug #6676]

nobu:r36282 2012-07-03 14:37:29 +0900

CALC_EXACT_MALLOC_SIZE を真に定義している時に ruby_xmalloc() などで確保したメモリサイズを記録するようにしているのですが、vm_xrealloc() で realloc(3) する時に確保量の更新が間違っていたのを修正しています。

drbrain:r36283 2012-07-03 14:52:22 +0900

r36270 で zlib の処理中に GVL を解放するようにした変更で、バッファの追加が必要な時にもエラー扱いでループを抜けてしまっていたのを修正しています。 [ruby-core:45733] [Feature #6615]

nobu:r36284 2012-07-03 16:07:57 +0900

gc.c で malloc(3) などによるメモリ管理の情報を更新する部分を atomic な処理を使うようにしています。 こういう処理 atomic.h にまとまっていたと思うのでそっちに追加したほうがいいのではないでしょうか。