ruby-trunk-changes r40486 - r40498

今日は特定のプラットフォームでのビルドエラーやクロスコンパイル時のエラーの修正などが主でした。

kazu:r40486 2013-04-27 01:13:56 +0900

r40195 で non blocking IO のために IO::例外クラスを導入して、r40428 で EAGAIN と EWOULDBLOCK が異なるプラットフォームでのクラス名を typo していたのを修正していたのですがまだ間違えていたのを修正……。気がつかなかった。 [ruby-core:43325] [Feature #6154]

svn:r40487 2013-04-27 01:14:02 +0900

version.h の日付更新。

nobu:r40491 2013-04-27 09:02:21 +0900

test/ruby/test_syntax.rb の lib/, test/, sample/, ext/ などの下の *.rb ファイルを片っ端から文法チェックするテストで r39932 あたりで子プロセスで実施するようにしていましたが、さらにサブディレクトリ毎にテストを分けることでテストの速度改善しようとしています。

akr:r40492 2013-04-27 12:30:50 +0900

thread.c のタイマーの計算でのオーバフロー検出のためのマクロで struct timeval の tv_sec メンバが time_t よりもサイズが大きい環境を考慮するように修正しています。 OpenBSD 5.2 (amd64) がそのような環境だそうです。

akr:r40493 2013-04-27 15:52:17 +0900

整数のオーバフロー検出用のマクロで使うためのユーティリティマクロとして SIGNED_INTEGER_TYPE_P() という、型が符号ありかどうかの判定をするマクロと、符号あり整数の最大値を得るためのマクロ SIGNED_INTEGER_MAX()、符号つき整数の最小値を得るマクロ SIGNED_INTEGER_MIN()、符号なし整数の最大値を得るマクロ UNSIGNED_INTEGER_MAX() というのを追加して、time_t と struct timeval の tv_sec の最大値、最小値のマクロ定義で使うようにリファクタリングしています。

akr:r40494 2013-04-27 16:00:26 +0900

拡張ライブラリ socket の extconf.rb で UNIX ドメインソケットによる fd passing の機能のチェックをメソッドとして切り出すリファクタリング

akr:r40495 2013-04-27 17:23:21 +0900

拡張ライブラリ socket の extconf.rb で getaddr_info_ok が :wide だった時に getnameinfo() と getaddrinfo() のチェックを条件分岐に含めていましたが、:wide が入る条件と一致していて不要だったので削っています。 --{enable,disable}-wide-getaddrinfo オプションで指定された時は……と一瞬思いましたが、その時はクロスコンパイルでチェックによらず指定したほうを採用したいはずなのでやっぱり have_func は見なくていいはずですね。

akr:r40496 2013-04-27 19:06:20 +0900

sparc.c の rb_sparc_flush_register_windows() という関数でインラインアセンブラを記述するのに asm というキーワードを使っていたのですが、gcc は -ansi オプションが指定されると asm というキーワードは使えないそうなのでかわりに __asm__ を使うようにしています。

eregon:r40497 2013-04-27 19:33:44 +0900

thread.c の主にコメント(ひとつだけ rb_bug() のメッセージがあり)の typo や英文法の修正です。大変勉強になります。英語というのはロジカルな言語ですねぇ。

akr:r40498 2013-04-27 20:21:10 +0900

r40476 と同様に、マシンスタックのアドレスやサイズの取得に getrlimit(2) を利用する環境で IS_STACK_DIR_UPPER() の判定に必要な変数が宣言されないためコンパイルエラーになるので STACK_GROW_DIR_DETECTION を追加しています。具体的には Tensilica Xtensa Processor 向けのクロスコンパイルでエラーになるそうです。