ruby-trunk-changes r40530 - r40540

今日はリファクタリングやドキュメント変更、マイナーな標準ライブラリの対応などでした。

nobu:r40530 2013-05-01 11:38:44 +0900

昨日の r40528 のあたりで内部から proc や lambda メソッドを呼ぶ時に毎回 rb_intern() でシンボル化して ID を取得していたのをあらかじめ作っておいた ID を利用するようにしています。またこのために "proc" の ID を事前に定義するシンボルリストに追加しています。

svn:r40531 2013-05-01 11:38:55 +0900

version.h の日付更新。

nobu:r40532 2013-05-01 11:40:41 +0900

他に eval.c や vm.c で "" というシンボルの ID を毎回 rb_intern() していたのを事前に計算した ID を使うようにしています。

nobu:r40533 2013-05-01 12:03:58 +0900

win32/configure.bat の --help で表示されるヘルプメッセージから --disable-win95 という既に消されているオプションを削除しています。 Windows95 のサポートは r36342 のあたりで打ち切られています。割と最近ですね。

nobu:r40534 2013-05-01 12:14:55 +0900

daemon(3) がない環境での Process.daemon の実装で fork(2) が失敗した時の rb_sys_fail() は呼び出し元の proc_daemon() で実行しているので return -1 するようにして、 fork を 2回するのでマクロにまとめています。 また setsid(2) の呼び出しも直接呼んでエラー処理は呼び元にまかせるようにしています。 setsid() がないときのチェックが……と思いましたが process.c で setsid(2) がない時には ruby_setsid() というのを定義してそれに #define ですりかえるようにしているので呼べそうですね。

zzak:r40535 2013-05-01 12:21:45 +0900

lib/rake/version.rb の rdoc コメントに :include: directive? を修正して相対パスでファイルを指定するようにしているようです。 しかし ri がうまく動かないということでチケットが reopen されているので追加の対応があるかもしれません。 [ruby-core:54699] [Bug #8347]

nobu:r40536 2013-05-01 13:43:00 +0900

拡張ライブラリ socket の ext/socket/ancdata.c の未初期化変数や未使用の変数の警告除去。ついでに rb_scan_args() マクロのオプション引数対応を利用するようにしています。

nobu:r40537 2013-05-01 16:17:53 +0900

extmk.rb のビルドする拡張ライブラリの検出の変更。 ext/-test-/* などのテスト用の拡張ライブラリはインストール対象からはずされているのですが、 static link 版にする時にはこれらの拡張ライブラリはリンクしないようにしています。

nobu:r40538 2013-05-01 16:48:06 +0900

拡張ライブラリ curses の extconf.rb による libncurses などのライブラリの検出でクロスコンパイル時かどうかで分岐していたところを、利用するメソッドを変数に格納することでまとめるようにしています。ついでに curses_version というシンボルが関数か変数か判定できなかった時に警告メッセージを表示するようにしているみたいです。

eregon:r40539 2013-05-01 19:04:21 +0900

Enumerable#chunk のブロックがアンダースコア "_" からはじまる Symbol を返した時に発生させる例外のメッセージの英文法を修正。また対応する rdoc コメントのサンプルの表示も修正しています。 [ruby-core:54725] [Bug #8351]

akr:r40540 2013-05-01 21:12:25 +0900

Time#localtime などで呼ばれる localtime_with_gmtoff_zone() で localtime(3) が返す struct tm の tm_zone が NULL で返される標準ライブラリがあるそうで(musl libc というライブラリだそうです)、条件分岐を入れて SEGV を回避しています。