ruby-trunk-changes r55523 - r55539

今日は最適化命令 opt_plus/opt_succ の整数演算の最適化や Proc#curry と Symbol のブロック引数の組み合わせでおきる不具合修正などがありました。

ngoto: r55523 2016-06-28 18:42:29 +0900

r49564 および r55285 で拡張ライブラリ digest と openssl でマクロ展開時にセミコロンがよぶんに付いていて Oracle Solaris Studio 12 で警告が出ていたのを修正しています。 [ruby-dev:49692] [Bug #12524]

nobu: r55524 2016-06-28 21:33:28 +0900

標準添付ライブラリ fileutils の mode の文字列の解釈に 8進数表記の文字列が渡された時も動くようにしています。

arton: r55525 2016-06-28 22:14:48 +0900

標準添付ライブラリ fileutils の FileUtils::_Entry#copy_metadata に r55512 で chown も追加されたので捕捉する例外に Errno::EACCES も追加しています。 [ruby-dev:49687] [Bug #12520]

nobu: r55526 2016-06-28 22:29:38 +0900

bootstraptest/runner.rb で &. 演算子(いわゆるぼっち演算子)が使われていましたが、bootstraptest/runner.rb は古い ruby で実行することもあるので使わないように書きなおしています。

nobu: r55527 2016-06-28 22:55:02 +0900

標準添付ライブラリ pstore の checksum 計算に使うアルゴリズムというか Digest のクラスを直接 Digest::MD5 を参照せずに CHECKSUM_ALGO という定数に代入してこちらを参照するようにしています。

naruse: r55528 2016-06-29 03:42:12 +0900

bignum.c の rb_big2ulong() および rb_big2long(), rb_big2ull(), rb_big2ll() などで負数の時に num が LONG_MIN の符号を反転した数の時を考慮した分岐があったのですが、これをやめて 1+(unsigned long)(-(LONG_MIN+1))) 以下かどうかの分岐1つにしています。コンパイラの最適化でうまく符号反転してくれるとのことですが、そういうもんやろか…。

svn: r55529 2016-06-29 03:42:13 +0900

version.h の日付更新。

nobu: r55530 2016-06-29 07:03:00 +0900

標準添付ライブラリ fileutils の r55524 の mode 引数の 8進数文字列対応を revert して、un.rb の install, chmod で mode の8進数文字列を整数化するように対応しています。 r55513 の修正は元々 un.rb 側の install でやってた変換を消してしまってたので本来の位置で修正するようにしたんですね。 fileutils でより広く対応してしまってもいい気はしますけどね。

nobu: r55531 2016-06-29 08:45:55 +0900

Proc#call にブロック引数として Symbol を渡した時に Symbol をブロック化していなかった部分があったので Proc#curry で作成した Proc オブジェクトに Symbol をブロック引数として渡すと SEGV していた不具合を修正しています。 [ruby-dev:49695] [Bug #12531]

shugo: r55532 2016-06-29 12:45:23 +0900

Refinements のテストで GC.stress = true を使ったものが ARM や MIPSアーキテクチャのマシン上で遅すぎて失敗してしまうので skip するようにしています。 "too slow cpu" ってメッセージで skip されるの現実の厳しさを感じますね。 [ruby-core:76031] [Bug #12491]

nobu: r55533 2016-06-29 13:37:12 +0900

missing/crypt.h で 64bit 整数のマクロ B64 を long long, __int64 の適切なものを選択してマクロ定義するようにしています。

nobu: r55534 2016-06-29 13:37:13 +0900

random.c で VC6 でのコンパイルエラーを抑制するため uint64_t を使っている部分で preprocessor の条件に _MSC_VER の範囲を追加しています。

nobu: r55535 2016-06-29 13:37:14 +0900

win32/win32.c でも VC6 のコンパイルエラーの修正のため GetSystemWindowsDirectoryW をマクロ定義(GetWindowsDirectoryW に置換)しています。

naruse: r55536 2016-06-29 15:23:38 +0900

r55515 の opt_plus の最適化のように opt_succ でも FIXNUM_MAX で分岐して不要な rb_big_plus() の呼び出しを抑制して FIXNUM_MAX + 1 を利用するようにしています。

kazu: r55537 2016-06-29 21:37:37 +0900

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

rhe: r55538 2016-06-29 22:21:54 +0900

拡張ライブラリ openssl の OpenSSL::OCSP の Response, BasicResponse, SingleResponse, CertificateId などの initialize メソッドで d2i_OCSP_XXXX() の関数群の第1引数のポインタに既存のオブジェクトの構造体のポインタを渡すと OpenSSL 1.0.0t では問題が発生するそうで、新規にメモリを確保させて入れ換えるような実装に変更しています。

hsbt: r55539 2016-06-29 22:24:56 +0900

拡張ライブラリ psych に同梱されてる ext/psych/lib/psych_jars.rb というスクリプトを削除しています。これは JRuby 用みたいですね。