Hatena::ブログ(Diary)

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

2016-02-10 ruby-trunk-changes r53796 - r53801

[][]ruby-trunk-changes r53796 - r53801

今日はほとんど内容が理解できなかったのですが、ビルドプロセスの修正だけでした。

naruse: r53796 2016-02-10 03:43:45 +0900

Method#parameters の rdoc 用コメントにサンプルコードを追加しています。 [ruby-core:19759]

svn: r53797 2016-02-10 03:43:46 +0900

version.h の日付更新。

nobu: r53798 2016-02-10 12:03:57 +0900

configure で ar コマンド(static link ライブラリ .a を作るコマンド)の D フラグの存在をチェックして、可能なら u のかわりに D を指定するようにしています。 deterministic mode を指定するフラグだそうです。

nobu: r53799 2016-02-10 13:16:53 +0900

shell 力か autoconf 力が足りなくて何やっているのかよくわからないのですが、universal binary での型の sizeof の検出の変更をしています。

nobu: r53800 2016-02-10 15:28:55 +0900

r53798 で ar(1) コマンドのフラグに D を追加しましたが、ARFLAGS の末尾に空白文字を入れておくようにしています。 VC のリンカ向けに必要だったとのこと。

nobu: r53801 2016-02-10 16:06:12 +0900

これまた autoconf 力が足りなくてよくわからないのですが、整数型のチェック用の confdefs.h の生成時に不要な型定義をしないように #ifdef を追加するようにしているみたいです。 configure 中のビルドの警告除去かな?

2016-02-09 ruby-trunk-changes r53781 - r53795

[][]ruby-trunk-changes r53781 - r53795

今日は --enable/--disable や --debug, --dump などのオプション引数に受け付ける名前の管理方法の変更についてのリファクタリングなどがありました。

nobu: r53781 2016-02-09 10:51:38 +0900

r53777 の RubyGems のテストでの WEBrick::Utils::TimeoutHandler#terminate の呼び出しの再適用ruby 1.8 でも動くように、defined? でのチェックに WEBrick::Utils::TimeoutHandler の参照も含めています。 1.8 ではこのモジュール自体が存在していなかったようです。 https://github.com/rubygems/rubygems/commit/72b3701

svn: r53782 2016-02-09 10:51:38 +0900

version.h の日付更新。

nobu: r53783 2016-02-09 11:09:24 +0900

.gdbinit の rp_imemo コマンドで method entry と iseq 用の imemo の表示に対応しています。

zzak: r53784 2016-02-09 13:54:39 +0900

Regexp.new の rdoc 用コメントから廃止された第3引数 kcode の記述を削除しています。 [Bug #11495]

zzak: r53785 2016-02-09 14:33:35 +0900

Zlib::GzipWriter#mtime= の rdoc 用コメントに説明を追記しています。 https://github.com/ruby/ruby/pull/1129

nobu: r53786 2016-02-09 14:47:12 +0900

ruby の --enable/--disable オプションの feature 名のあいまいな時のメッセージに使う ADD_FEATURE() というマクロ名を ADD_FEATURE_NAME() に改名しています。

nobu: r53787 2016-02-09 15:50:53 +0900

Windowsruby スクリプトを含みつつ実行可能な bat ファイルでもあるファイル群を生成する tool/mkrunnable.rb で symbolic link の生成前に既存の link を削除するようにしています。

nobu: r53788 2016-02-09 15:57:09 +0900

tool/mkrunnable.rb で Windows 向けに mklink コマンドで ln_safe を実装する Mswin モジュールを利用するかどうかの判定に File.symlink が利用可能かも含めるようにしています。 Windows での File.symlink が実装されたので、最新の ruby を使っていたら Mswin モジュールの実装は不要だからですね。

nobu: r53789 2016-02-09 16:36:27 +0900

ruby の --debug オプションの feature 名も --enable/--disable と同じように EACH_DEBUG_FEATURES() というマクロを導入して1ヶ所で名前のリストを定義するようにしています。 まあ今は frozen_string_literal の 1つしかないのですが。

sonots: r53790 2016-02-09 16:41:51 +0900

標準添付ライブラリ logger の Logger#add の未使用だったブロック引数を削除しています(yield でブロックを起動していた)。 https://github.com/ruby/ruby/pull/1240 [ruby-core:73709] [Bug #12054]

nobu: r53791 2016-02-09 16:42:21 +0900

r53789 の影響かと思いますが --enable/--disable の各 feature の指定のビットフラグデフォルト値 DEFAULT_FEATURES の計算時に debug_flag のぶんは除外するようにしています。

nobu: r53792 2016-02-09 17:24:37 +0900

ruby の --dump オプションでも --enable/--disable と同様に EACH_DUMPS() というマクロを定義して dump 方式の名前をまとめて1ヶ所に書くようにしています。

nobu: r53793 2016-02-09 17:32:20 +0900

r53763 の --enable/--disable オプションで feature 名が決まらなかった時にサポートする feature 名一覧を出力するようにしたところにも EACH_FEATURES() マクロを利用してここに feature 名を直に書かないようにしています。また --dump オプションの時も同様に r53792 で導入したマクロを使って一覧を作るようにしています。が、マクロ名が間違っていて次の r53794 で修正されています。

kazu: r53794 2016-02-09 17:55:18 +0900

r53793 で --dump の名前一覧を作る時のマクロ名が間違っていたのを修正しています。

nobu: r53795 2016-02-09 19:18:50 +0900

r53791 で DEFAULT_FEATURES から --debug 用のビットフラグは落とすようにした変更で、FEATURE_BIT(debug_frozen_string_literal) のぶんは元々明示的に落としていたので、それは r53791 で不要になったので削っています。

2016-02-08 ruby-trunk-changes r53771 - r53780

[][]ruby-trunk-changes r53771 - r53780

今日も String#downcase の :fold オプションに対応して enc/unicode/casefold.h の変更(再生成)などがありました。

duerst: r53771 2016-02-08 09:44:10 +0900

common.mk で enc/unicode/casefold.h を依存したファイルの更新があったら常に生成するようにしていたのを、unicode-up というターゲットを明示的に指定した時だけ生成するようにしています。ヘッダの生成に gperf が必要だったため、CIビルド失敗していたので一時的にその回避のためとのこと。

nobu: r53772 2016-02-08 10:30:22 +0900

ruby の --enable/--disable オプションで feature 名は前方一致でマッチする名前で省略できますが、複数の feature 名にマッチする指定の時に例外を発生させる実装を AMBIGUOUS_FEATURE_NAMES というマクロが新の時に有効になるように追加しています。けど今のところ使える feature 名は先頭の文字から違うので、この機能が実際に使われる事態にはなりませんし、AMBIGUOUS_FEATURE_NAMES も 0 に定義されています。 [ruby-core:73700] [Bug #12050] での議論の結果曖昧だったらエラーにしたほうがいいよねってことで入れてるみたいです。

nobu: r53773 2016-02-08 12:41:16 +0900

rb_external_str_with_enc(), rb_str_concat(), rb_str_dump() などの関数文字列に Encoding を関連付けるのに rb_encoding を使っていたのを encindex で指定するように最適化しています。

nobu: r53774 2016-02-08 12:44:48 +0900

rb_str_dump() で ASCII 非互換な Encoding の文字列を dump した時に '.force_encoding("xxx")' のような suffix を追加する時のサイズの拡張をマジックナンバーを書かずに strlen() などを使って計算するようにしています。

duerst: r53775 2016-02-08 13:00:31 +0900

enc/unicode/case-folding.rb で生成するヘッダファイルの flags に CaseFolding.txt から得た type に応じて ONIGENC_CASE_FOLD のフラグを追加するように処理を加えて、enc/unicode/casefold.h を生成し直したものをコミットしています。

nobu: r53776 2016-02-08 14:01:00 +0900

enc/unicode.c の codepoint の比較にマジックナンバーが使われていたところに enum による宣言を使って定数化したり、C 言語の 'i' の文字リテラルを利用して可読性を上げています。

nobu: r53777 2016-02-08 14:09:49 +0900

r53439 で標準添付ライブラリ webrickWEBrick::Utils::TimeoutHandler の終了処理をちゃんと排他処理するようにした対応で rubyems のテストも修正していたのが r53707 で 2.5.2 にした時に巻き戻ってたので再度適用しています。また古い ruby でも動くように defined? で WEBrick::Utils::TimeoutHandler.terminate の呼び出し可能かチェックしてから呼ぶようにしています。

duerst: r53778 2016-02-08 20:44:12 +0900

String#downcase で省略可能引数に :fold を指定した場合内部的な flags には ONIGENC_CASE_DOWNCASE と ONIGENC_CASE_FOLD の論理和が渡されていたのを、ONIGENC_CASE_FOLD だけビットを立てるようにしています。 ONIGENC_CASE_FOLD が downcase であるという意味を内包するようにしているってことだと思います。しかし onigenc_unicode_case_map で flags のチェックを1箇所だけ変更していますが、その下の code==I_WITH_DOT_ABOVE の時のところとかはいいのかなぁ。

duerst: r53779 2016-02-08 21:26:35 +0900

enc/unicode/case-folding.rb で ONIGENC_CASE_UPCASE と ONIGENC_CASE_DOWNCASE のフラグも出力するようにして enc/unicode/casefold.h を再生成しています。

svn: r53780 2016-02-08 21:26:36 +0900

r53779 の行末の空白除去。

2016-02-07 ruby-trunk-changes r53759 - r53770

[][]ruby-trunk-changes r53759 - r53770

今日は enc/unicode/casefold.h の生成用スクリプトの変更がありましたが、具体的な出力の変更まではなかったようです。

duerst: r53759 2016-02-07 10:39:26 +0900

enc/unicode/casefold.h をダウンロードした CaseFolding.txt を元に enc/unicode/case-folding.rb を使って自動生成するように common.mk にルールを追加しています。また enc/unicode/case-folding.rb で -m オプションで CaseFolding.txt の存在するディレクトリの指定で動かせるようにしています(が、これはビルド時には使ってないようです)。

svn: r53760 2016-02-07 10:39:27 +0900

r53759 の行末の空白除去。

duerst: r53761 2016-02-07 10:43:39 +0900

r53759 の ChangeLog 追加。

duerst: r53762 2016-02-07 11:16:12 +0900

r53759 で追加した enc/unicode/casefold.h の生成時のコマンドで enc/unicode/case-folding.rb に追加した -m オプションを利用するように変更しています。また enc/unicode/case-folding.rb で -m オプション引数を受け取るようにできていなかったのを修正しています。

nobu: r53763 2016-02-07 11:40:52 +0900

rubyオプション --disable-xxx や --enable-xxx で xxx の部分がサポートされてない名前だった時の警告に、現在サポートされている名前を表示するようにしています。 gems, did-you-mean, rubyopt, frozen-string-literal の4つですね。

duerst: r53764 2016-02-07 11:44:14 +0900

enc/unicode/case-folding.rb で CaseMapping と CaseMappingDummy というクラスを導入して、元となるデータの指定時に生成するようにしています。しかし今は中身はほとんどなくて使われてないようです。

しかしさっき r53762 で追加した ChangeLog が上書きされて消えていますね。

duerst: r53765 2016-02-07 14:12:44 +0900

r53764 に追加して enc/unicode/case-folding.rb の print_table というメソッドに CaseMapping を渡すようにして、表示する文字列に flags を埋め込むようにしています(今は flags は常に空文字列なので実際には何も変化していません)。

nobu: r53766 2016-02-07 19:21:27 +0900

ruby の --enable-xxx/--disable-xxx のオプションで指定できる feature 名を EACH_FEATURES というマクロで定義して enum feature_flag_bits の宣言と SET_FEATURE() の定義で使いまわすようにしています。

duerst: r53767 2016-02-07 22:10:20 +0900

enc/unicode/casefold.h の依存関係に UnicodeData.txt と SpecialCasing.txt というファイルも追加して enc/unicode/case-folding.rb で UnicodeData.txt を読み込んで MapItem というクラスのインスタンスを CaseMapping に保持するようにしています。 しかし結局 MapItem#flags は常に空文字列なので、まだ実際の動作には影響していないようです。あと SpecialCasing.txt はまだ読んでないですね。

svn: r53768 2016-02-07 22:10:21 +0900

r53767 の行末の空白除去。

nagachika: r53769 2016-02-08 04:40:05 +0900

r53764 で上書きされて消えてた r53762 の ChangeLog エントリを追加しています。

svn: r53770 2016-02-08 04:40:06 +0900

version.h の日付更新。

2016-02-06 ruby-trunk-changes r53747 - r53758

[][]ruby-trunk-changes r53747 - r53758

今日は主に String#downcase の :folding オプションの追加や CGI.escapeHTML, CGI.unescapeHTML の ASCII 非互換エンコーディング文字列対応などがありました。

duerst: r53747 2016-02-06 14:37:29 +0900

String#downcase の省略可能引数 flags に指定できるオプションに :fold というのを追加しています。よくわかりませんが "ß" -> "ss" と展開されたりするようですね。

duerst: r53748 2016-02-06 14:51:33 +0900

r53747 とも関連して正規表現の casefold のテストを追加しています。r53590 で追加した CaseFolding.txt からデータを読み込んでテストを生成するようにしているようです。

duerst: r53749 2016-02-06 15:18:38 +0900

String#downcase などの :folding オプションの対象となるコードポイントの下限を 0x00C0 から 0x00B5 まで引き下げています。 0x00B5 (micron sign) つまり "µ" が最小のコードポイントで folding による展開の対象になる文字みたいです。

nobu: r53750 2016-02-06 20:44:33 +0900

configure で存在チェックする型に __int64_t と __int128_t を追加しています。 OS X 向けだそうです。

svn: r53751 2016-02-06 20:44:34 +0900

version.h の日付更新。

nobu: r53752 2016-02-06 20:51:40 +0900

標準添付ライブラリ optparse.rb で ruby-mode.el の不具合によるハイライトの異常? を避けるため if 文を条件演算子 (? :) に変えたり、ブロックパラメータのパイプ記号に空白を入れたりしています。

nobu: r53753 2016-02-06 21:02:09 +0900

r52429 で defs/lex.c.blt で struct kwtable::name の型を int に変更したのに追随して lex.c.blt で明示的なキャストを追加しています。

nobu: r53754 2016-02-06 22:31:07 +0900

標準添付ライブラリ cgiCGI.escapeHTML および CGI.unescapeHTML で文字列ASCII 非互換なエンコーディングだった時に置換用の正規表現もそのエンコーディングで作成するようにしています。 https://github.com/ruby/ruby/pull/1239

nobu: r53755 2016-02-06 23:23:26 +0900

r53750 で追加した __int64_t と __int128_t のチェックですが __int64 と __int128 のほうを優先するようにチェックの順番を変更しています。

naruse: r53756 2016-02-06 23:45:49 +0900

r53756 で追加した test/ruby/enc/test_regex_casefold.rb で CaseFolding.txt を読み込む時に ASCII-8BIT で読み込むように encoding の指定オプションを追加しています。

naruse: r53757 2016-02-07 02:56:47 +0900

r53750 および r53755 の __int64_t と __int128_t のチェック追加を revert しています。これらの型は C++ 用で古い gcc でのビルドコンパイルエラーを引き起こしていたみたいです。

svn: r53758 2016-02-07 02:56:47 +0900

version.h の日付更新。