ruby-trunk-changes r34644 - r34668

今日は正規表現エンジンとして Onigmo (鬼雲)が取り込まれました。また Enumerable のメソッドが each に渡すブロックをメソッドの外で利用すると SEGV する不具合の修正のほか dbm のビルド時のライブラリ/ヘッダのチェックの強化などがありました。

akr:r34644 2012-02-17 00:05:46 +0900

拡張ライブラリ dbm の extconf.rb で Berkley DB 以外(db[1-5] か libc に含まれているライブラリ以外では _DB_H_ というマクロが定義されていないことをチェックするようにしています。gdbm, ndbm などではこれが定義されていないはずらしいです。

svn:r34645 2012-02-17 00:05:51 +0900

version.h の日付更新。

akr:r34646 2012-02-17 00:25:06 +0900

dbm のテストで libgdbm のバージョンによって通らないテストを skip するのに使っていた正規表現の修正。 [ruby-core:42685] [Bug #6036]

akr:r34647 2012-02-17 07:32:10 +0900

dbm の extconf.rb でライブラリのチェックする条件が1つの if 文で複雑になっていたのでばらばらの if 文に分解しています。

nobu:r34648 2012-02-17 07:33:31 +0900

Enumerable#chunk や slice_before で "<<" メソッドを呼ぶために毎回 rb_intern() で ID を取得していたのを id_lshift に格納済みのものを使うようにしています。

naruse:r34650 2012-02-17 09:53:13 +0900

改行コード変換関係のソース生成に使う tool/transcode-tblgen.rb や tool/enc-unicode.rb で正規表現の \h という文字種指定は 1.8 だと動かないので使用しないように変更しています。

nobu:r34652 2012-02-17 09:56:25 +0900

mkmf.rb で create_header で extconf.h の生成する時に内容をログに出力するようにしています。

nobu:r34656 2012-02-17 11:50:22 +0900

make のルールで btest (make test の依存先) や teset-all などの依存先に prog を追加して ruby を更新してからテストするようにしています。コードだけ書き換えて make test するとコンパイルするのでこれまでの動作に慣れてたら注意。

naruse:r34659 2012-02-17 12:37:44 +0900

バックポートに使う tool/merger.rb で ChangeLog からログが取得できなかった時に svn log の結果を使うときに "--------" みたいな行とその次のコミットのメタ情報の行は削るようにしています。また行頭にtabを挿入しています。

nobu:r34661 2012-02-17 13:24:48 +0900

Enumerable#take_while などで each に渡されたブロックをどこかに保存しておいてそのメソッドが終わった後に呼び出そうとすると SEGV などする不具合の修正をしています。このブロックが VALUEVALUE* などにキャストしてスタック上のメモリ領域をブロックとの値受け渡しに利用するようになっているため、これらのブロックはスコープから抜けると正常に動作しないようになっていました。かわりにパース後の AST に利用している NODE を確保してその子へのポインタ部分を利用するように変更しています。 NODE はオブジェクトの一種として GC の対象になっているのでそのブロックの Proc オブジェクトが解放されると一緒に解放されるはずです。 [ruby-dev:45040] [Bug #5801]

nobu:r34662 2012-02-17 15:20:56 +0900

r34661 の再修正。Enumearable#each_slice でブロックに渡す配列は each のブロック(each_slice_i())で作った新しい配列を渡すように修正しています。

naruse:r34663 2012-02-17 16:42:23 +0900

正規表現エンジンとして Onigmo (鬼雲)がマージされています。 鬼車から fork したプロジェクトで PerlRuby の拡張が含まれているものだそうです。 [ruby-dev:45057] [Feature #5820]

nobu:r34664 2012-02-17 17:17:29 +0900

新規追加のファイルの svn property 設定。

nobu:r34665 2012-02-17 17:18:16 +0900

r34663 で重複して入ってしまった ChangeLog のエントリを削除しています。

akr:r34666 2012-02-17 21:10:32 +0900

dbm の extconf.rb で libdbm はチェックしないようにしています。 コミットログによると Version 7 Unix における libdbm は1プロセス毎に 1 database の制限のあるライブラリだそうです。

akr:r34667 2012-02-17 21:29:50 +0900

拡張ライブラリ dbm のヘッダとライブラリのチェックを強化しています。 include したヘッダとリンクしているライブラリが別のものでトラブルになることがあるので、そういうケースを弾けるように期待したライブラリのヘッダで定義されるはずのマクロをチェックするなどといった処理を追加しています。

akr:r34668 2012-02-17 21:41:54 +0900

r34666 で libdbm をチェック対象から外した時に dblib という配列から削り忘れていました。