ruby-trunk-changes r41869 - r41897

今日は RubyGems 2.1 のマージ、DateTime.parse のタイムゾーン解釈の不具合修正、Process.daemon の不具合修正などがありました。

akr:r41869 2013-07-10 00:43:48 +0900

bignum.c の bary_mul() でいずれかの数値が 1 だった時の特別処理を追加しています。

svn:r41870 2013-07-10 00:43:53 +0900

version.h の日付更新。

tadf:r41871 2013-07-10 06:24:35 +0900

拡張ライブラリ date の DateTime.parse でタイムゾーンの指定が5桁の数値で書かれていた時の解釈の不具合修正。 [ruby-core:55831] [Bug #8608]

drbrain:r41872 2013-07-10 07:34:58 +0900

RubyGems の修正。 r41148 *1 の警告除去に備えて古いバージョンの psych の対応のため Gem::NoAliasYAMLTree.create が未定義だったら定義するコードの追加、拡張ライブラリを含む gem パッケージインストール後に siteconf ファイルの削除をするようにした変更やテストで 1.8 で動かないものを skip する(Ruby 本体とは独立して使われる時のため)などの修正です。

drbrain:r41873 2013-07-10 08:21:36 +0900

昨日の 2.0.4 に続いて RubyGems 2.1 がマージされました。 変更点ですが、多分ここをみたらいいんでしょうかね。 https://github.com/rubygems/rubygems/blob/master/History.txt まだ Github 上には 2.1 というブランチも存在していないです。 master から直接リリース?
依存関係の解決エンジンが Bundler のものに似た新しい実装に置き換わって賢くなった、ARM アーキテクチャのプラットフォーム判定が賢くなった、gem install でのバージョン指定に上限と下限を指定するなど複数の条件の組み合わせの指定ができるようになった、その他不具合修正多数とのこと。差分が膨大なのでソースはチェックしていません。

nobu:r41874 2013-07-10 08:41:44 +0900

r41873 の rubygems の修正の行末の空白除去。

naruse:r41877 2013-07-10 10:21:44 +0900

tool/rbinstall.rb で Gem::Specification などの定義を利用しているので明示的に require "rubygems" するようにしています。 --disable-gems オプションで rubygems をロードしない起動ができるので、そういう時にも動くようにしているのかと思います。

nobu:r41879 2013-07-10 11:19:47 +0900

r41806 で拡張ライブラリ openssl で OpenSSL をスレッドセーフに利用するためにロックの初期化をするようにしたところで OPENSSL_malloc() に渡すサイズがオーバフローしないようにチェックを追加しています。

nobu:r41880 2013-07-10 11:19:50 +0900

r41879 の追加修正で OPENSSL_malloc() が NULL を返した時のエラー処理を追加しています。

nobu:r41881 2013-07-10 11:19:52 +0900

r41879 のさらに追加修正。 作成した Mutex オブジェクトを GC から保護するために rb_global_variable() で登録していたのを rb_gc_register_mark_object() を使うように書きかえています。 rb_global_variable() は C の変数(メモリ領域)をアドレス指定で監視するもので、その内容(VALUE の値)が変化しても追随しますが、確保したオブジェクトを mark したいだけなら rb_gc_register_mark_object() で管理するほうが軽いみたいです。

nobu:r41882 2013-07-10 11:19:54 +0900

r41879 のさらに追加修正。 ossl_lock_callback() の引数 file に const を追加して、CRYPTO_set_id_callback() と CRYPTO_set_locking_callback() に渡す引数の不要なキャストを削除しています。

usa:r41883 2013-07-10 11:38:17 +0900

Net::HTTP のテストのうち拡張ライブラリ zlib がビルドされていないとエラーになるチェックを Net::HTTP::HAVE_ZLIB を確認して省略するようにしています。

kazu:r41884 2013-07-10 11:59:59 +0900

r41849 の ChangeLog エントリの typo 修正。

kazu:r41885 2013-07-10 12:00:02 +0900

r41883 の ChangeLog エントリの typo 修正。

nobu:r41886 2013-07-10 14:19:01 +0900

Process.daemon の実装で fork 時の処理を呼び出すことで、既に Thread が起動されていた時にそれらを停止させたりするようにしています。

knu:r41887 2013-07-10 14:54:03 +0900

ChangeLogGithub の issue の番号参照の記法を修正しています。 [Fixes GH-***] と書くのが正しいみたいです。ほほう。

nobu:r41888 2013-07-10 14:58:45 +0900

bignum.c で sizeof(BDIGIT_DBL) で分岐しているところは静的に条件が決まるはずなので #if .. #elif .. #endif で条件コンパイルするようにしています。コンパイラの dead code の警告を抑制するためだそうです。

naruse:r41889 2013-07-10 16:45:58 +0900

r41873 の RubyGems 2.1 のマージで Windows 環境で失敗するようになっていた rubygems のテストを修正しています。

kazu:r41890 2013-07-10 17:02:43 +0900

r41886 の ChangeLog エントリが重複していたので片方を削除。

naruse:r41891 2013-07-10 17:10:39 +0900

r41873 の RubyGems 2.1 のマージで Windows で失敗していた rubygems のテストを修正しています(2つ目)。

naruse:r41892 2013-07-10 17:10:43 +0900

もうひとつ r41873 の RubyGems 2.1 マージで Windows 版で失敗していたテストの修正。環境変数 PATH のデリミタを決め打ちで書いていたのを File::PATH_SEPARATOR を使うようにしています。

naruse:r41893 2013-07-10 17:27:34 +0900

もうひとつ rubygems のテストの修正。 Tempfile を明示的に unlink するようにしています。ChangeLog には Windows の削除が云々と書かれていますが、これって Windows 限定で問題があったんでしょうか?

akr:r41894 2013-07-10 20:10:05 +0900

r41888 で bignum.c に追加した SIZEOF_BDIGIT_DBL の定義を、既に定義済みだったら行わないようにしています。テスト時に外から定義を渡すことがあるからその時のためみたいです。

nobu:r41895 2013-07-10 20:47:54 +0900

STATIC_ASSERT() の定義を enum.c から internal.h に移動しています。 STATIC_ASSERT() は r34461 あたりで定義された、静的に判定できる条件(sizeof() の比較など)をチェックして偽ならコンパイル時にエラーにするためのマクロです。が r34461 で追加しているのは st.c ですね。今も st.c にも少し異なる実装で STATIC_ASSERT() が定義されていました。 process.c にも一時期あったみたいですが今はすでになくなっています(r36134 で導入されて r36154 で削除された)。

nobu:r41896 2013-07-10 20:48:24 +0900

STATIC_ASSERT() を使って bignum.c で SIZEOF_BDIGIT_DBL が sizeof(BDIGIT_DBL) と同じ数値に定義されていることをチェックするようにしています。

akr:r41897 2013-07-10 22:06:33 +0900

bignum.c に bary_plus_one() と bary_add_one() という似たような関数があったのを、bary_add_one() の実装を bary_plus_one() と同じものに変更したうえで bary_plus_one() を削除しています。また bary_2comp() で bary_plus_one() を使っていたところは bary_add_one() に置換するのではなくこの関数呼び出しに依存しない実装に変更しています。

*1:を再度適用した r41846