Hatena::ブログ(Diary)

PB memo このページをアンテナに追加 RSSフィード

2016-06-30 ruby-trunk-changes r55540 - r55546

[][]ruby-trunk-changes r55540 - r55546

今日は cgi の escape の拡張ライブラリ版のリファクタリングunicode の casemap で Unicode バージョン番号のチェックの追加などがありました。

nobu: r55540 2016-06-30 13:16:43 +0900

標準添付ライブラリ cgiCGI.escape を拡張ライブラリ化したもので @@accept_charset というクラス変数の Symbol を毎回 rb_intern() していたのを初期化時に1回だけやって結果を static 変数に格納しておくようにしています。

svn: r55541 2016-06-30 13:16:44 +0900

version.h の日付更新。

nobu: r55542 2016-06-30 14:45:35 +0900

同じく ext/cgi/escape/escape.c で文字列のパターンマッチしているところでマッチさせる文字列のサイズを分岐毎にマジックナンバーで書いていたので、rb_strlen_lit() でリテラルのサイズを得て使うようにマクロ化したものを使うようにリファクタリングしています。

nobu: r55543 2016-06-30 16:31:06 +0900

common.mk で lib/unicode_normalize/tables.rb の生成を制御するためのタイムスタンプファイルをソースディレクトリ直下でなくて $(UNICODE_SRC_DATA_DIR) の下に作るようにしています。このサブディレクトリはバージョン番号を含んでいるのでバージョンアップの時に再作成されなくなるのを防いでいるようです。

nobu: r55544 2016-06-30 17:13:27 +0900

拡張ライブラリ stringio のテストで確保したメモリのアドレスに依存した不具合のテストであきらめるまでの繰り返し回数を減らしています。一部プラットフォームタイムアウトしてしまうため。

nobu: r55545 2016-06-30 17:13:28 +0900

enc/unicode/case-folding.rb の CaseFonding と CaseMapping に @version というインスタンス変数を追加してデータファイル間でバージョン番号が一致しているかのチェックを追加しています。

nobu: r55546 2016-06-30 17:24:11 +0900

enc/unicode/case-folding.rb で生成する enc/unicode/casefold.h にバージョン番号の定数マクロを定義しておくようにしています。

2016-06-29 ruby-trunk-changes r55523 - r55539

[][]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

拡張ライブラリ opensslOpenSSL::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 用みたいですね。

2016-06-28 ruby-trunk-changes r55514 - r55522

[][]ruby-trunk-changes r55514 - r55522

naruse: r55514 2016-06-28 03:30:12 +0900

enc/unicode/casemap.h を生成するのに gperf 3.0.3 を利用するようにしています。コミットログでは 3.0.4 を使うとありますが差分のコメントをみると 3.0.3 を使って生成したみたいです。 __GNUC_GNU_INLINE__ マクロの利用をしないようになってるようですね。

naruse: r55515 2016-06-28 03:30:12 +0900

insns.def の + メソッド最適化命令 opt_plus で最下位ビットを落とすのに "& (~1)" を使っていたのを単に -1 するようにしています。 x86 アーキテクチャでこのほうが高速な命令にできるそうです。

svn: r55516 2016-06-28 03:30:16 +0900

version.h の日付更新。

nobu: r55517 2016-06-28 09:56:31 +0900

Module#=== の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/1393

naruse: r55518 2016-06-28 13:38:32 +0900

r55514 の enc/unicode/casemap.h 生成の gperf 変更を revert しています。コミットミスだったみたい。

nobu: r55519 2016-06-28 15:19:58 +0900

標準添付ライブラリ net/http の Net::HTTP#proxy? で if ... else ... 文を使っていたところを条件演算子を利用するようにしています。 if の前に !! をつけて真偽値化していたのが ruby-mode.el でうまく解釈できなかったのを回避するためだそうです。

nobu: r55520 2016-06-28 15:20:20 +0900

標準添付ライブラリ net/http の Net::HTTP#proxy_uri でインスタンス変数 @proxy_uri キャッシュしてましたが、find_proxy が nil を返した時は結局毎回 find_proxy してしまっていたので、false を格納して再検索しないようにしています。

nobu: r55521 2016-06-28 15:56:50 +0900

test/ruby/enc/test_case_comprehensive.rb の Unicode 用のデータファイルの存在に依存しているテストを、データファイルがダウンロードされてなかったらskip するようにしています。 [ruby-core:76160] [Bug #12433]

nobu: r55522 2016-06-28 16:04:13 +0900

test/ruby/enc/test_case_comprehensive.rb で CaseTest というクラスを定義していたのを、TestComprehensiveCaseFold の中で定義してグローバル名前空間を使わないようにしています。また Struct を使って定義するようにしています。

2016-06-27 ruby-trunk-changes r55509 - r55513

[][]ruby-trunk-changes r55509 - r55513

今日は標準添付ライブラリ fileutils の FileUtils#install の機能追加などがありました。

nobu: r55509 2016-06-27 08:56:57 +0900

VM 命令列へのコンパイル時に trace 命令を埋め込む ADD_TRACE() マクロで行番号が 0以下の時に trace 命令を生成しないようにしています。そんなことあるのかな、と思いましたが RubyVM::InstructionSequence.compile に行番号 0 を渡した時にエラーになってたみたいです。 [ruby-core:76141] [Bug #12517]

svn: r55510 2016-06-27 08:56:58 +0900

version.h の日付更新。

nobu: r55511 2016-06-27 10:24:46 +0900

標準添付ライブラリ fileutils の FileUtils::Entry_#copy_metadata で同じ処理をまとめるリファクタリング

nobu: r55512 2016-06-27 16:55:17 +0900

標準添付ライブラリ fileutils の FileUtils#install の keyword 引数に owner と group を追加してファイルの所有者情報を可能なら変更するようにしています。

nobu: r55513 2016-06-27 16:58:34 +0900

標準添付ライブラリ fileutils の FileUtils#install の mode に整数だけでなく "rwx" などの文字を使った指定を受け付けるようにしています。

2016-06-26 ruby-trunk-changes r55505 - r55508

[][]ruby-trunk-changes r55505 - r55508

今日は Win32API の cygwin での不具合修正がありました。

nobu: r55505 2016-06-26 09:28:13 +0900

cygwin/GNUmakefile.in と template/GNUmakefile.in で MAKEFLAGS から -j オプションの指定を削るようにしています。 sub make に並列度オプションを渡さないようにしているみたいです。

svn: r55506 2016-06-26 09:28:14 +0900

version.h の日付更新。

nobu: r55507 2016-06-26 10:20:27 +0900

拡張ライブラリ win32 の Win32API で dll ファイルを探索する時に拡張子 ".dll" をつけたファイルも試すようにしています。 cygwin でうまく動かなくなっていたのを修正しているようです。 [ruby-list:50339] [ruby-list:50341]

nobu: r55508 2016-06-26 19:35:53 +0900

r55507 の再修正。 拡張ライブラリ win32 の ext/win32/lib/Win32API.rb の magic comment frozen_string_literal を false から true にしています。また Fiddle::Function 用の型の変換処理を最初にやっておくようにリファクタリングしています。