ruby-trunk-changes r29739 - r29755

今日はひとつもコミットがなくて、ついに更新が途切れる日がくるか、と思って夕飯食べていたらコミットされていました。今日もなかださん無双です。書いてるあいだにどんどん追加されて最終的にはすごい数になってしまいました。とりあえず r29755 で追い付いたので今日はここまでにしておきます。まだ続くかも……。

しかしどうも r29755 時点で Mac OS X でビルド失敗するようになってしまいました。

making enc
compiling emacs_mule.c
In file included from ./include/ruby/ruby.h:1354,
                 from ./regint.h:87,
                 from ./enc/emacs_mule.c:30:
./include/ruby/missing.h:143: error: expected declaration specifiers or ‘...’ before numeric constant
./include/ruby/missing.h:143: error: expected ‘)’ before ‘!=’ token
./include/ruby/missing.h:143: error: expected ‘)’ before ‘?’ token
./enc/emacs_mule.c: In function ‘code_to_mbc’:
./enc/emacs_mule.c:267: warning: implicit conversion shortens 64-bit value into a 32-bit value
make[1]: *** [enc/emacs_mule.o] Error 1
make: *** [enc] Error 2

2分探索すると r29740 は大丈夫で r29741 でエラーになります。はて。
[追記]てなことを ruby-dev に報告したら r29757 あたりですぐに直ったみたいでした。[/追記]

nobu:r29739 2010-11-11 20:45:32 +0900

export されるシンボルの prefix('_' などが付くことがあるようです)を SYMBOL_PREFIX という変数にして、win32/mkexports.rb でシンボルにマッチさせる正規表現に利用するようにしています。

svn:r29740 2010-11-11 20:45:34 +0900

version.h の日付変更。

nobu:r29741 2010-11-11 20:49:54 +0900

フォーマット文字列の long long に対応する指示子の preifix (PRI_LL_PREFIX) を configure で設定するようにしているそうです。

nobu:r29742 2010-11-11 21:24:41 +0900

cygwin の 1.7 以降ではファイルパスを Windows 形式(?)と Unix ライクな(POSIX)パスの表現とで相互に変換するのに cygwin_conv_path() という関数を利用するようにしています。これが無いときは cygwin_conv_to_posix_path() と cygwin_conv_to_win32_path() を使っています。

nobu:r29743 2010-11-11 21:26:30 +0900

popen や open のパスに "|cmd" のようにコマンドとのパイプが指定された時に開かれたパイプの IO オブジェクトのファイナライザで終了した子プロセスの終了ステータスを $? にセットするための変数を初期化しています。
えーとでもこの場合 fptr->stdio_file が開かれていなかったら rb_last_status_set() も呼ばないほうが良いんじゃなんでしょうか?

nobu:r29744 2010-11-11 21:30:35 +0900

signal.c で sigaction に渡す struct sigaction の sa_flags に SA_SIGINFO を設定する時のプリプロセッサの変数を SA_SIGINFO から USE_SIGALTSTACK が定義されている時に変更しています。sigsegv() 関数が sigaltstack が使える時に引数を拡張されたハンドラを使っているから、だと思います。

nobu:r29745 2010-11-11 21:30:39 +0900

型のキャスト不足やフォーマット文字列の違いによる警告をあちこち除去。

nobu:r29746 2010-11-11 21:32:15 +0900

mkmf.rb で関数名の前に '&' をつけることでそのシンボル名がライブラリに存在するかを確認するようにしています。そして win32ole が cygwin で libuuid を必要とするのでライブラリの探索するパスを追加しています。

nobu:r29747 2010-11-11 21:41:12 +0900

configure で Makefileruby ターゲットを追加しているところを修正しています。コメントによれば二重に ruby ターゲットを追加するのを修正しているらしいです。

nobu:r29748 2010-11-11 21:46:23 +0900

make する時にコンパイラコマンドラインをそのまま表示するのじゃなく "compiling ???" のように短いメッセージだけ表示するようにしています。
make V=1 のようにすると元のようにコマンドラインが表示されるようになります。
http://jarp.does.notwork.org/diary/200605b.html#200605121

nobu:r29749 2010-11-11 21:47:17 +0900

make showflags ターゲットを追加して、コンパイルフラグを表示できるようにしています。

nobu:r29750 2010-11-11 21:49:11 +0900

rdoc で処理した統計情報の表示?あたりで ゼロ除算してしまう可能性があるところを回避しています。

nobu:r29751 2010-11-11 21:52:18 +0900

ARGF.read_nonblock メソッドが追加されています。 IO#read_nonblock の ARGV 版。

nobu:r29752 2010-11-11 21:56:16 +0900

ARGF.write やその他 IO の書き込み系のメソッド群が追加されています。
ARGF に書き込み? 複数ファイルパスがあった時どうなるんですかねー。

nobu:r29753 2010-11-11 22:03:42 +0900

さらに make の他のターゲットもデフォルトで短いメッセージのみ表示するようにしています。

nobu:r29754 2010-11-11 22:37:33 +0900

さらに golf, Doxyfile, capi, rdoc, id.h などのターゲットも短いメッセージのみ表示するようにしています。

nobu:r29755 2010-11-11 22:37:35 +0900

make all, make main などで最初に showflags ターゲットを読んでコンパイルフラグを表示させるようにしています。

configure.in の書きかた勉強しないといけないなと思いました。configure.in の修正は半分くらいわかってません。