ruby-trunk-changes r37736 - r37773

今日もたくさんコミットがありました。 DTrace のビルド関連の修正、TracePoint の API の変更/追加、Windows 8 対応、そして Marshal.load に先読みバッファを設けることで高速化する変更などがありました。

naruse:r37736 2012-11-20 09:50:58 +0900

r37723 で追加した Signal.signame のテストで Process.kill で pid に 0 を指定して自分自身に SIGINT を送信していたのですが、これでテストが死んでしまうことがあったらしく、子プロセスを生成してそれにシグナルを投げるようにテスト方法を変更しています。

naruse:r37737 2012-11-20 09:51:00 +0900

probes.o を probes.d から dtrace コマンドで生成する時に probes.o を削除しておくようにしています。 dtrace は上書きしてくれない?

svn:r37738 2012-11-20 09:51:02 +0900

version.h の日付更新。

naruse:r37739 2012-11-20 10:18:18 +0900

r37735 の configure --enable-dtrace のヘルプメッセージと FreeBSD でのチェック方法の変更を revert しています。

kosaki:r37740 2012-11-20 10:21:19 +0900

r37730 の引数、変数名の th -> cur_th への改名を revert しています。

zzak:r37741 2012-11-20 11:05:21 +0900

標準添付ライブラリ tracer の Traecer.trace_func でメッセージの出力に Tracer.stdout を利用すべきところ Kernel#printf を使っていたところがあっったのを修正しています。 [ruby-core:45219] [Bug #6490]

naruse:r37742 2012-11-20 11:21:17 +0900

r37739 で revert したぶんの configure の --enable-dtrace による DTrace 対応の検出を再修正しています。

usa:r37743 2012-11-20 12:07:23 +0900

Windows 8 にてコンソールからの読み込みでシステム側の不具合対処のために特別な処理をしていたものが、Windows 側が修正されていて不要になっていたので osver をチェックして新しいバージョンならばスキップするようにしています。 [ruby-core:49479] [Bug #7379]

zzak:r37744 2012-11-20 12:34:15 +0900

File::NULL という定数についての rdoc を追記しています。 [ruby-core:49384] [Bug #7365]

zzak:r37745 2012-11-20 12:37:27 +0900

コマンドラインオプション -r のヘルプメッセージでの説明の不要なカンマを削除しています。 [ruby-core:49205] [Bug #7327]

kosaki:r37746 2012-11-20 14:00:45 +0900

io.c で rb_file_const() を使って定義していた定数を file.c で rb_define_const() を使って定義するように移動&変更しています。 rdoc が rb_file_const() で定義した定数を認識してくれないためだそうです。 rb_file_const() は単に rb_define_const() を呼んでいるだけで実質同じ関数なので動作上の変更はありません。 [ruby-core:40573] [Bug #5530]

kosaki:r37747 2012-11-20 14:39:14 +0900

r37736 の Signal.signame のテストの修正を再修正。Process.kill でシグナルを送るのは子プロセスが自分で自分自身に送出するように変更しています。 Windows でのシグナルは自分にしか送れないためだそうです。

kosaki:r37748 2012-11-20 14:39:33 +0900

r37746 の ChangeLog エントリの typo 修正。

zzak:r37749 2012-11-20 15:37:53 +0900

File.extname に "." で始まるファイル名や "." で終わるファイル名の時の挙動(空文字列が返る)について rdoc に追記しています。 [ruby-core:47852] [Bug #7112]

naruse:r37750 2012-11-20 17:35:57 +0900

Mac OS X で DTrace が有効にならなくなっていたのを修正。

naruse:r37751 2012-11-20 17:47:43 +0900

r37750 で if 文の else 節にコメントしかなくて syntax error になっていたのを修正しています。

ko1:r37752 2012-11-20 18:48:24 +0900

TracePoint に新たに情報取得用のメソッドを2つ新設しています。 :return と :c_return のイベントで戻り値を取得するための TracePoint#return_value と :raise イベントで発生した例外を取得するための TracePoint#raised_exception が追加されています。 [ruby-core:47243] [Feature #6895]

ko1:r37753 2012-11-20 20:05:20 +0900

TracePoint の API を全体的に変更しています。

  1. TracePoint.new で TracePoint を作成(ただし有効にはしない)
  2. TracePoint.trace で TracePoint を作成してすぐ有効にする
  3. TracePoint#enable で有効にする(retrace から改名) ブロック付きで呼ばれるとそのブロック内でのみ有効になります。
  4. TracePoint#disable で無効にする(untrace から改名) ブロック付きで呼ばれるとそのブロック内でのみ無効になります。
  5. TracePoint#enabled? で現在の状態を返す

ついでに enable 状態で enable が呼ばれた時の挙動などに迷いがあったのをリファクタリングしてすっきりしています。 [ruby-core:47243] [Feature #6895]

ko1:r37754 2012-11-20 20:13:13 +0900

r37752 と r37753 の ChangeLog エントリにチケットの参照を追記しています。

mame:r37755 2012-11-20 20:13:45 +0900

Array#bsearch と Range#bsearch の rdoc に記述されていた計算量の間違いを修正しています。 [ruby-core:49661] [Bug #7409]

nobu:r37756 2012-11-20 21:01:21 +0900

common.mk で probes.dmyh の参照に $VPATH が使われていたのをソースディレクトリを参照するように修正しています。

tadf:r37757 2012-11-20 21:10:08 +0900

complex.c と rational.c で issign() や isdecimal(), islettere()などの文字種の判定をインライン関数として切り出すリファクタリングや関数宣言に inline の追加など。
また read_digits() では strict 引数が真なのでエラーで返す時でも VALUE *num 引数には変換結果を格納して返すようにしているみたいですね。

suke:r37758 2012-11-20 21:34:21 +0900

WIN32OLE のテストで Windows 8 で IShellDispatch5 が IShellDispatch6 になっていたのに対応して implemented_ole_types のチェック内容を変更しています。 [ruby-core:49580] [Bug #7403]

nobu:r37759 2012-11-20 21:34:37 +0900

lib/net/imap.rb やいくつかのテストスクリプトの行末の空白除去。

nobu:r37760 2012-11-20 21:34:45 +0900

r37749 での File.extname の rdoc の修正を再修正。 "." で始まるファイルでもその後に "." があれば拡張子は取れるようです。

kazu:r37761 2012-11-20 21:39:54 +0900

ext/socket/unixsocket.c のインデントの修正のみ。

kazu:r37762 2012-11-20 21:39:57 +0900

r37716, r37725, r37742 の ChangeLog エントリの typo 修正。

kazu:r37763 2012-11-20 21:41:38 +0900

r37752, r37753 の ChangeLog エントリの typo 修正。

naruse:r37764 2012-11-20 21:49:36 +0900

configure の DTrace が利用可能かどうかのチェックを修正しています。
ちなみに今日 dtrace のビルドシステムまわりはまったく理解する努力を放棄してコミットログしか読んでません。

ko1:r37765 2012-11-20 21:57:49 +0900

include/ruby/debug.h というヘッダを新設して TracePoint の API を公開しています。 もともとあった debug.h は vm_debug.h というファイル名に変更しています。また公開に伴い関数名や定数名の prefix 追加などもありました。

naruse:r37766 2012-11-20 22:09:15 +0900

r37622 で String#crypt で crypt(3) が NULL を返す場合があるのでテストで libc のバージョンチェックをしていのですがうまくチェックできていなかったのを再修正しています。 [ruby-core:49718] [Bug #7312]

kazu:r37767 2012-11-20 22:17:30 +0900

r37765 の ChangeLog エントリの typo 修正。

naruse:r37768 2012-11-20 22:48:04 +0900

probe.h を probe.d から生成した時に const char * の const が消されることがあるので、sed での後処理に char * から const char * への置換を追加しています。

marcandre:r37769 2012-11-20 23:53:54 +0900

NEWS ファイルに Array#values_at 配列サイズを越える範囲が指定された時の戻り値の変更について追記しています。 [Feature #6203]

marcandre:r37770 2012-11-21 00:03:52 +0900

Array#values_at の rdoc のサンプルコードに結果の表示が抜けていたところを追記しています。

svn:r37771 2012-11-21 00:03:56 +0900

version.h の日付更新。

glass:r37772 2012-11-21 00:17:15 +0900

Marshal.load にソースとして IO を渡した場合細かい粒度で読み込みが発生するため遅かったのを、Array Hash Struct などあらかじめ最低読み込みをするサイズが予測できる場合にそのぶんをバッファに先読みしておくようにすることで IO 回数を減らして高速化する処理が入っています。 [ruby-dev:45637] [Feature #6440]

naruse:r37773 2012-11-21 00:29:59 +0900

r37766 の String#crypt のテストの再修正。 libc のバージョンの検出のために /lib/libc.so.6 決め打ちでなく RbConfig を使って /lib64 など別のディレクトリに置かれているケースに対応しています。 [ruby-core:49763] [Bug #7312]