ruby-trunk-changes r33780 - r33786

拡張ライブラリ io/console の機能追加、minitest 2.8.1 のマージなどがありました。

ryan:r33780 2011-11-18 07:38:18 +0900

Mac OS XXcode に含まれる llvm-gcc でのビルドはサポートされていないので configure でエラーにしているのですが、その時のエラーメッセージを親切にしています。 CC=clang でいいんでしたっけ。わたしは --with-gcc=clang という(なんだか矛盾していますが)オプションを付けるほうをいつも利用しています。 [ruby-core:40646] [Bug #5541]

svn:r33781 2011-11-18 07:38:21 +0900

version.h の日付更新。

ryan:r33782 2011-11-18 08:02:16 +0900

miniteset 2.8.1 をマージしています。 rdoc(コメント)のサンプルコードの修正、不要なブロック引数の削除、MINI_DIR の削除(const_missing で警告)、RUBY_VERSION に依存したコードの削除など。あと r33766, r33769, r33771 での assert_raises の省メモリ化が巻き戻されてしまっているようです。

usa:r33783 2011-11-18 13:06:01 +0900

Windows では open(2) に O_NOINHERIT という(O_CLOEXEC と同類?)フラグがあり、それをセットするようにしています。 また fcntl() の F_DUPFD を Windows でエミュレートしているところで FNOINHERIT というフラグを考慮するようにしています。

usa:r33784 2011-11-18 13:21:23 +0900

test/unit で minitest のライブラリのディレクトリを取得するために MiniTest::MINI_DIR という定数を参照していたのが警告が出るということで、とりあえず lib/test/unit/assertions.rb で MINI_DIR という定数を定義してしまうようにしています。

nobu:r33785 2011-11-18 16:12:14 +0900

拡張ライブラリ io/console に IO#cooked および IO#cooked! というメソッドを追加しています。 ChangeLog には [EXPERIMENTAL] と書かれているのでまだ検討中の機能かもしれません。端末の設定を制御文字を受け付け、エコーバックが有効なモードにする、またそのようなモードでブロック内の処理を実行するというメソッドのようです。

nobu:r33786 2011-11-18 17:18:18 +0900

これも拡張ライブラリ io/console の [EXPERIMENTAL] な変更で、IO#raw と IO#raw! および IO#getch というメソッドにオプション引数を追加して、:min, :time というキーで端末の VMIN, VTIME という設定を変更できるようにしています。 VMIN は端末からの入力を受けとる時に何バイトまでバッファリングするかの指定、VTIME はバッファに端末からの入力がない時に read を返すまで待つ間隔が指定できるそうです。細かい動作の指定ができるんですね。ただしこの設定が有効なのは termios.h が利用可能な時だけなので現状ではUNIX系のOSだけだと思います(Windows には termios.h はないですよね)。