ruby-trunk-changes r42494 - r42524

今日は新機能として Process.clock_gettime メソッドの追加、ファイルパスのエンコーディング変換の修正と、REXML の主に SAX2Parser の修正などがありました。

akr:r42494 2013-08-11 01:59:58 +0900

r42458 で configure での clock_gettime(2) の検出を librt からの検出結果を流用するようにした変更を revert しています。 HAVE_CLOCK_GETTIME マクロの定義がなくなってしまうので AC_CHECK_FUNCS() の呼び出しは必要だった模様。

svn:r42495 2013-08-11 02:00:03 +0900

version.h の日付更新。

zzak:r42496 2013-08-11 02:44:55 +0900

標準添付ライブラリ time.rb の定数について rdoc 用コメントを追記してます。 https://github.com/ruby/ruby/pull/377

akr:r42497 2013-08-11 03:26:28 +0900

bignum.c の bitsize() というマクロの条件演算子をひとつ削除。元々 cond ? a : b の a までしか書かれていなくて文法エラーだったっぽいです。 uint128_t も long long もない環境という条件の場合の定義だったので気がつかなかったのだと思います。

naruse:r42498 2013-08-11 05:44:10 +0900

r42457 で CoreFoundation を使って HFS+ のファイルパスのエンコーディング変換(正規化変更)をするようにした rb_str_normalize_ospath() ですが、HFS+ は常に分解するわけではなくいくつかの code point の範囲では互換性のために合成形式を使うようになっているそうです。そこで 文字列を一文字ずつチェックしてその範囲の文字でなくてマルチバイト文字の時だけ変換処理にかけるようにしています。うーん遅そうですね。 Mac OS X で Dir.glob などは鬼門……。 (参考URL: http://developer.apple.com/library/mac/qa/qa1173/_index.html )

nobu:r42499 2013-08-11 05:45:14 +0900

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

charliesome:r42500 2013-08-11 05:56:13 +0900

doc/syntax/literals.rdoc のシングルクオートの説明の例でダブルクオートを使ってしまっていた typo を修正しています。 [ruby-core:56514] [Bug #8766]

nobu:r42501 2013-08-11 08:55:05 +0900

r42498 で Dir.glob での HFS+ のパスの正規化変換が常に無効になるように条件が追加されていたのを削除しています。

nobu:r42502 2013-08-11 08:55:09 +0900

テスト用の拡張ライブラリで depend ファイルに extconf.h の依存関係を追加してソースの修正時に再度 extconf.rb を実行するようにしています。 Init_xxx() 関数名を extconf.rb がソースファイルから決定してコンパイラオプションを通じてマクロ定義として渡すようになっているので再実行の必要があるみたいです。

zzak:r42503 2013-08-11 10:44:42 +0900

r42496 でドキュメントを追加した標準添付ライブラリ time.rb の定数ですが、内部的に利用する定数なので :nodoc: タグを付ける方向に修正したようです。 [ruby-core:56517]

akr:r42504 2013-08-11 11:59:30 +0900

Ruby開発者会議で決まった Process.clock_gettime メソッドの追加。clock_gettime(2) (もしくは gettimeofday(2))のラッパとして、指定した種類のタイマーを指定の形式で(ミリ秒、マイクロ秒、ナノ秒などの単位と、整数か Float かの指定)取得するメソッドです。 [ruby-core:56087] [Feature #8658]

akr:r42505 2013-08-11 12:10:56 +0900

r42504 の ChangeLog エントリに ML と チケットの参照を追記しています。

akr:r42506 2013-08-11 12:43:04 +0900

Process.clock_gettime の rdoc 用コメントにタイマーの指定をする引数の定数の説明を追加しています。

charliesome:r42507 2013-08-11 13:04:12 +0900

file.c に変数の宣言がブロックの先頭でないところに現れていたところがあったのを修正しています。

charliesome:r42508 2013-08-11 13:23:12 +0900

include/ruby/encoding.h の ENCODING_INLINE_MAX で struct RBasic::flags でエンコーディング用に利用するビット領域を 3 bits 減らしています。 7 bits もあれば Ruby が扱うエンコーディング全部入るだろってことみたいですが、特に ML や チケットの参照がないけど大丈夫かなぁ。現状の挙動には影響しないだろうと思いますが。

nobu:r42509 2013-08-11 15:11:17 +0900

r42490 の追加で rb_enc_symname_type() に allowed_atttset という引数を追加して文字列のシンボル化でも ID_CONST と ID_LOCAL 以外にも ID_ATTRSET を付けた ID のシンボルを生成できるようにしています。昨日書いた、文字列だと __send__ で代入記号付きメソッドが呼べないというのを修正されたのだと思います。 [Bug #8756]

nobu:r42510 2013-08-11 16:31:25 +0900

r42498 で file.c の rb_str_normalize_ospath() だったものを rb_str_normalize_ospath0() と改名して呼び出しをひとつネストさせたのですがこの関数を static 関数に変更しています。

nobu:r42511 2013-08-11 16:53:32 +0900

r42502 のテスト用拡張ライブラリの depend ファイルの追記を revert しています。よくわかりませんがそもそも ext/extmk.rb の extract_makefileMakefile が再生成されるから不要だったってことでしょうか。

kou:r42512 2013-08-11 17:43:17 +0900

REXML の SAX2 API のテスト test/rexml/parser/test_sax2.rb を追加しています。

kou:r42513 2013-08-11 18:01:33 +0900

標準添付ライブラリ rexml の変更っぽいのですが ChangeLog エントリしか更新されていません。

kou:r42514 2013-08-11 18:01:41 +0900

r42513 の変更の本体のようです。 標準添付ライブラリ rexml の REXML::Parsers::SAX2Parser#parse の引数の個数がドキュメントと食い違っていたのに対して実装のほうを修正しています。一応非互換な変更ということで NEWS ファイルにも追記しています。 [ruby-dev:47582] [Bug #8731]

kou:r42515 2013-08-11 18:08:21 +0900

標準添付ライブラリ rexml の REXML::Parsers::BaseParser で NDATA タグの追加パラメータに対応するため不要なマッチ結果を消す処理を追加しています、多分。テストがないのでどういう文書の時の対応なのかわかりませんが。

kou:r42516 2013-08-11 18:09:25 +0900

標準添付ライブラリ REXML の REXML::Parsers::SAX2Parser に NDATA の external ID entity declaration をサポートするようにしています。はい、なんのことかよくわかってません。が、テストにあるようなタグの XML を SAX2 パーサでもパースできるようにしたのだと思います。

kou:r42517 2013-08-11 18:18:51 +0900

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

kou:r42518 2013-08-11 18:41:29 +0900

標準添付ライブラリ rexml の REXML::Parsers::SAX2Parser で、いまいちよくわかっていませんが ENTITY タグの属性に % があった時の挙動を修正しているようです。

kou:r42519 2013-08-11 18:42:37 +0900

標準添付ライブラリ rexml の lib/rexml/parsers/sax2parser.rb のリファクタリング。 parse メソッドから処理の一部を handle_entitydecl に切り出しています。

kou:r42520 2013-08-11 18:44:42 +0900

標準添付ライブラリ rexml の REXML::SAX2Listener#elementdecl の rdoc 用コメントのサンプルコードの結果を修正しています。 This commit contains only document fix. [DOC] タグを付けておくべきですね。 [ruby-dev:47582] [Bug #8731]

kou:r42521 2013-08-11 19:08:05 +0900

標準添付ライブラリ rexml の REXML::SAX2Listener#notationdecl の引数も変更しています。こっちはデフォルトのハンドラで内部的に呼ばれるので純粋に不具合修正という扱いのようです。 [ruby-dev:47582] [Bug #8731]

kou:r42522 2013-08-11 19:12:28 +0900

test/rexml/parser/test_sax2.rb のテストクラス名を変更しています。

nobu:r42523 2013-08-11 22:57:29 +0900

r42468 で __FILE__ のエンコーディングの修正をした際に Windows 版の考慮が漏れていたので、テストのほうを修正しています。 Windows 版(あれ、cygwin 版も?)は常に UTF-8 が返るとしています。

nobu:r42524 2013-08-11 23:27:04 +0900

r42524 に追加して Mac OS X でもファイルパスのエンコーディングUTF-8 に固定するようにしています。