ruby-trunk-changes r49009 - r49030

昨日 2.2.0 がリリースされましたが、fiddle のビルドでバンドルされている libffi のリンクで失敗するケースというのがあったようでその修正などがありました。

nobu: r49009 2014-12-26 00:02:12 +0900

r49007 での ext/fiddle/extconf.rb のリンクするライブラリの libffi_convinience.a に変更したのに追随しているのだと思いますが mswin 版の Makefile のテンプレート ext/fiddle/win32/libffi.mk.tmpl でも STATICLIB を _convinience を追加するように修正しています。 [ruby-core:67128]

svn: r49010 2014-12-26 00:02:25 +0900

version.h の日付更新。

usa: r49011 2014-12-26 00:15:18 +0900

依存ライブラリのない拡張ライブラリがビルドされていなかったらエラーになるようなテストを追加しています。うっかりビルドに失敗していても拡張ライブラリがないとテスト自体もスキップされたりするので、ビルドの問題に気付きにくいので、ということだと思います。 readline とか tk とか、そもそもシステムに対応したライブラリがないとビルドできないものはチェック対象からはずしています。 zlib については libz などが必要なのでこの条件からするとはずれるのですが、rubygems のために必須ということでチェック対象としています。

svn: r49012 2014-12-26 00:15:32 +0900

r49011 で新規追加されたファイルの svn property 設定。

usa: r49013 2014-12-26 00:37:03 +0900

r49011 でチェック対象とした拡張ライブラリのうちもう削除されているものを削ったり、サブディレクトリ毎に拡張ライブラリが作られるものを分解したり調整しています。

usa: r49014 2014-12-26 01:25:57 +0900

r48941 で open-uri の :ssl_ca_cert オプションに配列で複数の証明書を指定できるようにしましたが、tool/downloader.rb がこれに依存していたため、tool/downloader.rb でモンキーパッチを書いて古い ruby でも実行できるようにしています。また net/https (つまり openssl) が使えない時は警告を出した上で http 経由でダウンロードするようにしています。

usa: r49015 2014-12-26 01:48:32 +0900

tool/rbinstall.rb で拡張ライブラリ zlib が利用できない環境では rubygems が使えないので bundled gem パッケージのインストールをスキップするようにしています。 [ruby-dev:48787] [Bug #10647]

usa: r49016 2014-12-26 01:51:20 +0900

r49015 の ChangeLog エントリに ML とチケットの番号を追記しています。

zzak: r49017 2014-12-26 02:15:39 +0900

r49015 の変更で例外クラス LoadError を typo していたので修正しています。

naruse: r49018 2014-12-26 06:36:18 +0900

r49011 で追加された拡張ライブラリの存在チェックをするテストで mathn/complex と mathn/rational のチェックは削っています。 mathn のライブラリは require すると組込みクラスの挙動を変更してしまうため思わぬ影響が出てしまうためです。

zzak: r49019 2014-12-26 08:20:52 +0900

同じく r49011 の拡張ライブラリ存在チェックテストでメソッド名の英語の typo 修正。

usa: r49020 2014-12-26 10:57:32 +0900

r49011 および r49018 で拡張ライブラリチェックのテスト で mathn/complex と mathn/rational は対象外とされたのに対して、require するのを子プロセスにすることで対応して復活させています。

nobu: r49021 2014-12-26 14:33:01 +0900

各所で printf(3) 系のフォーマッティングの指示子の型の間違いを修正しています。

nobu: r49022 2014-12-26 14:45:08 +0900

r49021 の修正についての ChangeLog エントリ追記。

nobu: r49023 2014-12-26 14:48:12 +0900

Windows 版の実装で realloc() の戻り値チェックがされていない箇所があったのを修正しています。

nobu: r49024 2014-12-26 14:51:36 +0900

ソースコード上決して NULL にならないのに NULL チェックをしているところを条件から削除しています。 うーん、個別に見てませんが、こういうのは変更への耐性という面もあるしコンパイラがうまいこと分岐を消してくれたりしそうだから無理に直さなくてもいいような気もしますね。

nobu: r49025 2014-12-26 15:09:11 +0900

win32ole および process.c regexec.c などで未初期化の変数参照をする可能性があった(どうも静的解析による検出っぽいので実際に参照されてたかはわかりませんが)ところがあったのを修正しています。

nobu: r49026 2014-12-26 15:09:31 +0900

拡張ライブラリ nkf で typedef の最後にセミコロンが抜けていたのを修正しています。

nobu: r49027 2014-12-26 15:13:15 +0900

拡張ライブラリ json の ext/json/parser/parser.rl でビット演算に使う char 型の変数を unsigned char にキャストしておくようにしています。

nobu: r49028 2014-12-26 15:20:55 +0900

marshal.c の w_long() で 1バイトずつ w_byte() で配列から書き出していたのを w_nbyte() という関数でまとめて処理するようにしています。

nobu: r49029 2014-12-26 15:28:29 +0900

拡張ライブラリ tk でクラス名からクラスオブジェクトの VALUE の値を得るために rb_eval_string_protect() とかを使ってなにやらゴリゴリやっていたのを rb_path2class() で取得するようにリファクタリングしています。

nobu: r49030 2014-12-26 15:32:18 +0900

拡張ライブラリ tk で重複して不要になっていたコード部分を削除しています。