Hatena::ブログ(Diary)

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

2016-05-01 ruby-trunk-changes r54858 - r54876

[][]ruby-trunk-changes r54858 - r54876

今日は search_nonascii() の最適化の続きで big endian の考慮や、Fixnum と Bignum の統合に向けたテストの整理などがありました。

akr: r54858 2016-05-01 07:05:43 +0900

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

naruse: r54859 2016-05-01 07:32:05 +0900

昨日の r54854 の search_nonascii() の最適化で big endian なシステムでは ntz_intptr() のかわりに nlz_intptr() を利用するようにしています。

nobu: r54860 2016-05-01 09:56:15 +0900

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

akr: r54861 2016-05-01 10:35:43 +0900

Fixnum#succ と Integer#succ の rdoc 用エントリを一箇所にマージしています。

naruse: r54862 2016-05-01 18:07:14 +0900

r54859 の search_nonascii() の最適化での endian の考慮で BYTE_ORDER をチェックするのではなくて WORDS_BIGENDIAN というマクロをみて分岐するように変更しています。

usa: r54863 2016-05-01 20:42:41 +0900

サポート終了した Windows 95/98, ME, NT4 のためのコードを削除しています。 https://github.com/ruby/ruby/pull/1328

usa: r54864 2016-05-01 21:00:35 +0900

さらに Windows 2000 向けの対応コードも削除しています。

akr: r54865 2016-05-01 21:30:51 +0900

test/ruby/test_file_exhaustive.rb で定義している assert_integer_or_nil という独自の assertion で出力するメッセージの Fixnum -> Integer に修正しています。

akr: r54866 2016-05-01 21:50:19 +0900

dbm/gdbm/sdbm のテストの整数を格納する時のコメントの Fixnum -> Integer に変更しています。

naruse: r54867 2016-05-01 23:19:02 +0900

r54854 からの search_nonascii() の最適化の続きで UNALIGNED_WORD_ACCESS が偽の時の開始端のほうのループ展開で、ポインタのサイズを 8 と固定で書いてたところを SIZEOF_VOIDP に置換したり p を1ずつインクリメントしていたところを、最初に次のアライメントされた位置に移動してから負の添字でのアクセスに変更したりしています。

usa: r54868 2016-05-01 23:54:44 +0900

テスト用のライブラリ test/lib/test/unit.rb でオプションを解析する正規表現を修正しています。

usa: r54869 2016-05-01 23:56:45 +0900

標準添付ライブラリ logger の log rotate のテストでログ出力回数が多くて余分なファイル作成しているところがあったので修正しています。

mrkn: r54870 2016-05-02 00:02:47 +0900

Array#sum で標準添付ライブラリ mathn.rb がロードされていると Rational と整数の足し算が Integer になる可能性があるのでそれに対応するための分岐を追加しています。

svn: r54871 2016-05-02 00:02:48 +0900

version.h の日付更新。

akr: r54872 2016-05-02 00:16:17 +0900

テスト用のライブラリの test/lib/envutil.rb に Integer::FIXNUM_MIN と Integer::FIXNUM_MAX という定数を追加して、Fixnum と Bignum の境界をあちこちで独自に調べていたのをこの定数を参照するようにリファクタリングしています。

akr: r54873 2016-05-02 00:42:52 +0900

Kernel#set_trace_func や TracePoint 用の VM のイベントフック用のフラグを管理する recalc_remove_ruby_vm_event_flags() でオーバフロー回避のためのキャストを追加しています。

akr: r54874 2016-05-02 01:01:36 +0900

テスト用のライブラリに Fixnum および Bignum のインスタンスであることをチェックする assert_fixnum と assert_bignum を追加して assert_instance_of を使っていたところをこの assertion メソッドを利用するようにリファクタリングしています。 Fixnum と Bignum の Integer への統合でクラス自体の統合をした時のための下準備でしょうか。

akr: r54875 2016-05-02 01:15:29 +0900

Class#name のテストのために Fixnum を使っていたところを Integer を使うようにしています。

Fixnum が消されそうな予感がしますね…。

akr: r54876 2016-05-02 01:28:18 +0900

test/ruby/test_numeric.rb に Bignum を作るために class をチェックしながら左シフトのループしていたところが残っていたので、r54872 で導入した Integer::FIXNUM_MAX を参照するように書き換えています。

2016-04-30 ruby-trunk-changes r54820 - r54857

[][]ruby-trunk-changes r54820 - r54857

今日は Fixnum と Bignum の Integer へのメソッド統合の変更がたくさんありました。

nobu: r54820 2016-04-30 10:09:06 +0900

拡張ライブラリ pty の no_mesg の定義を posix_openpt(), openpty(), ptsname() のいずれかが利用できる時だけ(呼び出す場所がある時だけ)定義するようにしたり、 waitpid() の flags に使える定数をチェックするようにしたりしています。

svn: r54821 2016-04-30 10:09:06 +0900

version.h の日付更新。

nobu: r54822 2016-04-30 10:09:07 +0900

拡張ライブラリ pty で起動するシェルを決めるためにユーザを特定する時に環境変数 USER を優先させるようにしています。コミットログによると同じ uid で名前だけ変えてるケースがあるらしいです。そうなのか。

nobu: r54823 2016-04-30 10:12:52 +0900

r54822 の拡張ライブラリ pty の establishShell() でシェルデフォルト値を初期値の代入でセットしておくようにするリファクタリング

yui-knk: r54824 2016-04-30 11:18:00 +0900

Kernel#set_trace_func の rdoc 用コメントの不要な閉じかっこの除去。

akr: r54825 2016-04-30 11:54:14 +0900

Fixnum#| と Bignum#| を Integer#| へ統合しています。

nobu: r54826 2016-04-30 11:55:18 +0900

thread_sync.c で Mutext や Queue などの Thread の名前空間の下の定数の別名をトップレベルに追加する ALIAS_GLOBAL_CONST() というマクロで定義済みかどうかチェックせずに rb_define_const() で定義してしまうようにしています。多分昔はこの部分は拡張ライブラリだったから既に存在している可能性があったけど、コアに組込まれたのでこのタイミングで定義済みの可能性はなくなったからでしょう。

nobu: r54827 2016-04-30 11:56:17 +0900

拡張ライブラリ thread はコアに組み込まれてダミーの空っぽの拡張ライブラリのみ残っている状態だったので、NEWS にも追記してこの拡張ライブラリも削除しています。 thread_sync.c が "thread.rb" を loaded features に追加しているので、require "thread" がエラーになるわけではない(ロード済みとして false がかえってくる)のであまり互換性への影響もなさそうです。

akr: r54828 2016-04-30 12:08:53 +0900

Fixnum#& と Bignum#& を Integer#& へ統合しています。

ChangeLog エントリの Bignum#| は typo みたいですね。

akr: r54829 2016-04-30 12:27:20 +0900

Fixnum#~ と Bignum#~ を Integer#~ へ統合しています。

akr: r54830 2016-04-30 12:30:53 +0900

fix_rev() を fix_comp() に、rb_big_neg() を rb_big_comp() に改名しています。むう、符号の反転をする関数みたいです。 _comp は complementary から来てるのかな?

akr: r54831 2016-04-30 12:59:02 +0900

Fixnum#** と Bignum#** を Integer#** へ統合しています。

akr: r54832 2016-04-30 13:20:56 +0900

Fixnum#fdiv と Bignum#fdiv を Integer#fdiv へ統合しています。

akr: r54833 2016-04-30 13:22:27 +0900

Fixnum#/ の rdoc 用コメントの位置を利用している内部的な関数の前に移動しています。

akr: r54834 2016-04-30 14:05:54 +0900

Fixnum#divmod と Bignum#divmod を Integer#divmod へ統合しています。

akr: r54835 2016-04-30 14:26:52 +0900

Fixnum#modulo と Bignum#modulo を Integer#modulo へ統合しています。

akr: r54836 2016-04-30 14:43:15 +0900

Fixnum#div と Bignum#div を Integer#div へ統合しています。

akr: r54837 2016-04-30 15:30:08 +0900

単項演算子メソッド Fixnum#-@ と Bignum#-@ を Integer#-@ へ統合しています。

akr: r54838 2016-04-30 17:27:30 +0900

Fixnum#reminder と Bignum#reminder を Integer#reminder へ統合しています。

akr: r54839 2016-04-30 17:52:49 +0900

r54837 で Integer#-@ に統合するはずが Fixnum#-@ を定義していたので修正。

akr: r54840 2016-04-30 18:12:11 +0900

Bignum の実装に GMP を利用している場合に Integer::GMP_VERSION という定数を追加しています。 Bignum と Integer の挙動をあわせるためですね。

akr: r54841 2016-04-30 18:48:25 +0900

Bignum#<= を Integer#<= へ移動しています。 Fixnum#<= は残されてるみたいですね。

akr: r54842 2016-04-30 19:10:23 +0900

Bignum#< を Integer#< へ移動しています。 Fixnum#< は残されてるみたいですね。

hsbt: r54843 2016-04-30 19:20:43 +0900

doc/standard_library.rdoc から削除されたり obsoleted とされたクラスなどの記述を削除しています。

akr: r54844 2016-04-30 19:26:17 +0900

Bignum#>= を Integer#>= へ移動しています。 Fixnum#>= は残されてるみたいですね。

akr: r54845 2016-04-30 19:42:06 +0900

Bignum#> を Integer#> へ移動しています。 Fixnum#> は残されてるみたいですね。

akr: r54846 2016-04-30 20:18:00 +0900

Bignum#== を Integer#== へ移動しています。 Fixnum#== は残されてるみたいですね。

akr: r54847 2016-04-30 20:31:28 +0900

Bignum#% を Integer#% へ移動しています。 Fixnum#% は残されてるみたいですね。

akr: r54848 2016-04-30 20:54:26 +0900

Bignum#* を Integer#* へ移動しています。 Fixnum#* は残されてるみたいですね。

akr: r54849 2016-04-30 21:09:31 +0900

Bignum#- を Integer#- へ移動しています。 Fixnum#- は残されてるみたいですね。

akr: r54850 2016-04-30 21:24:06 +0900

Bignum#+ を Integer#+ へ移動しています。 Fixnum#+ は残されてるみたいですね。

akr: r54851 2016-04-30 21:39:53 +0900

Bignum#/ を Integer#/ へ移動しています。 Fixnum#/ は残されてるみたいですね。

akr: r54852 2016-04-30 21:55:59 +0900

numeric.c で Fixnum のメソッド定義を追加する rb_deifne_method() 呼び出しを Integer のものと分けて位置をまとめています。

akr: r54853 2016-04-30 22:05:22 +0900

削除漏れていた Bignum の <=>, odd?, event? などの rdoc 用コメントを削除しています。 また Integer#<=> の rdoc 用コメントのサンプルの変数名修正。

naruse: r54854 2016-05-01 00:39:02 +0900

string.c の search_nonascii() で先頭と末尾のポインタのアライメントからはずれているところはループ展開するようにして、残りのポインタのサイズごとにチェックしている部分では ntz_intptr() を利用するようにしています。

naruse: r54855 2016-05-01 00:39:03 +0900

r53545, r53546 あたりで gcc 6 の不具合対策で UNALIGNED_WORD_ACCESS を 0 にしていたのを revert しています。これにより最適化が効かなくなっていたのを避けるためで、gcc 6.0 では不具合は修正されていたそうです。もともとリリース前の gcc でおきてたみたいですしね。 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69291 [ruby-core:72211] [Bug #11831] [ruby-core:72819] [Bug #11979]

svn: r54856 2016-05-01 00:39:03 +0900

version.h の日付更新。

naruse: r54857 2016-05-01 01:32:36 +0900

r54854 の search_nonascii() の最適化で末尾のほうでループ展開したところで不要な modulo の計算の削除とポインタのインクリメントしていたところは添字でのアクセスにして、また p じゃなくて e (終端のアドレス)からの計算にしています。うーん p じゃなくて e を使うようにしたのはなぜだろう。

2016-04-29 ruby-trunk-changes r54811 - r54819

[][]ruby-trunk-changes r54811 - r54819

今日は主に doc/maintainers.rdoc の更新や bundled gem の test-unit, rake のバージョン更新がありました。

nobu: r54811 2016-04-29 09:56:44 +0900

win32/win32.c から不要な fstat() の宣言を削除しています。

svn: r54812 2016-04-29 09:56:45 +0900

version.h の日付更新。

hsbt: r54813 2016-04-29 19:52:49 +0900

doc/maintainers.rdoc から 1.8 以前の記述を削除しています。

hsbt: r54814 2016-04-29 19:52:51 +0900

doc/maintainers.rdoc から既に存在しない標準添付ライブラリについてのエントリを削除しています。

hsbt: r54816 2016-04-29 20:43:13 +0900

doc/maintainers.rdoc からさらに拡張ライブラリやコアに移動になったり名前が変わったりしたものについて削除や改名をしています。あれ、 ext/io/nonblock はメンテナ不在なのかな、と思ったらあとで追記されてました。

hsbt: r54817 2016-04-29 21:03:13 +0900

gems/bundled_gems で test-unit と rake のバージョンを更新しています。

usa: r54818 2016-04-29 21:18:51 +0900

doc/maintainers.rdoc の ext/win32 のメンテナを usa さんにしています。

nobu: r54819 2016-04-29 22:40:29 +0900

doc/maintainers.rdoc の ext/io/nonblock のメンテナを nobu さんにしています。

2016-04-28 ruby-trunk-changes r54795 - r54810

[][]ruby-trunk-changes r54795 - r54810

今日も Fixnum, Bignum のメソッドの Integer への統合や RubyGems の更新、AIX での Math.lgamma の挙動の修正などがありました。

akr: r54795 2016-04-27 20:56:03 +0900

Fixnum#[ ] と Bignum#[ ] も Integer#[ ] に統合されています。

akr: r54796 2016-04-27 21:46:46 +0900

numeric.c の rdoc 用コメントをメソッド定義として登録している関数の前じゃなくてその前にある Fixnum 用の関数の前に置くように移動しています。

kazu: r54797 2016-04-27 21:59:59 +0900

Integer#[] の rdoc 用コメントのサンプルの変数名を修正。

akr: r54798 2016-04-27 22:05:09 +0900

numeric.c の rdoc 用コメントに Document-method という directive を追加しています。

akr: r54800 2016-04-28 00:35:23 +0900

Fixnum#^ と Bignum#^ も Integer#^ に統合されています。

svn: r54801 2016-04-28 00:35:24 +0900

version.h の日付更新。

naruse: r54802 2016-04-28 01:15:21 +0900

time.c で time.h の #include 前に _BSD_SOURCE を #define しておくようにしていたのですが glibc 2.20 から _BSD_SOURCE が deprecated になってこれだけだと警告が出るようになっているので _DEFAULT_SOURCE というマクロも定義しておくようにしています。 参考URL: https://sourceware.org/glibc/wiki/Release/2.20

odaira: r54803 2016-04-28 05:00:57 +0900

AIX で lgamma_r() が +0.0 に対して -Inf を返すので r54499 で configure で lgamma_r() の挙動をチェックするようにしたソースコードに +0.0 を渡した時の挙動もチェックするようにしています。また代替実装の ruby_lgamma_r() でも +0.0 の時の分岐を追加しています。

hsbt: r54804 2016-04-28 09:33:08 +0900

RubyGems を 2.6.4 に更新しています。 https://github.com/rubygems/rubygems/blob/master/History.txt

svn: r54805 2016-04-28 09:33:09 +0900

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

nobu: r54806 2016-04-28 15:54:03 +0900

win32/file.c の replace_to_long_name() で最後のディレクトリのセパレータ文字を探す処理が重複しているので不要な処理を削っています。

nobu: r54807 2016-04-28 15:54:05 +0900

win32/file.c の replace_to_long_name() の第3引数を渡しているバッファのサイズに変更して不要ならメモリ領域の確保をせず渡したバッファをそのまま利用するようにしています。

nobu: r54808 2016-04-28 16:33:43 +0900

標準添付ライブラリ optparse の rdoc 用コメントのサンプルコードをクラス定義を含むようなものに変更しています。どうやら元のサンプルコードはそのまま動くものではなかったみたいですね。 [ruby-core:75224] [Bug #12323]

naruse: r54809 2016-04-28 16:52:59 +0900

re.c の rb_reg_prepare_enc() および rb_reg_s_union() で既に文字列から rb_enc_get() で rb_encoding を取り出しているので rb_enc_str_asciicompat_p() のかわりに rb_enc_asciicompat() を使って重複した rb_enc/get() が呼ばれないようにしています。

nobu: r54810 2016-04-28 17:03:19 +0900

hash.c の rb_hash_update_block_callback() と rb_hash_update_func_callback() で分岐内の共通の文を分岐の外に括り出すリファクタリングhttps://github.com/ruby/ruby/pull/1338

2016-04-27 ruby-trunk-changes r54788 - r54794

[][]ruby-trunk-changes r54788 - r54794

今日は deprecated な内部用関数をうっかり呼び出したら異常終了させるようにする変更や StringIO.new にブロックが渡された時に IO.new と同様の警告が出るようにする変更などがありました。

kazu: r54788 2016-04-27 00:14:18 +0900

r54756 の ChangeLog エントリと、あと lib/rdoc/rd/block_parser.rb と lib/rdoc/rd/inline_parser.rb のコメントの typo が修正されています。

svn: r54789 2016-04-27 00:14:19 +0900

version.h の日付更新。

nobu: r54790 2016-04-27 14:29:07 +0900

internal.h の inline 関数の定義のスタイル変更。

nobu: r54791 2016-04-27 14:29:49 +0900

rb_compile_error_with_enc()、rb_compile_error()、rb_compile_error_append()、rb_str_associate()、rb_str_associated()、rb_frame_pop()、rb_clear_cache() などの deprecated になっている内部用関数を呼び出した時に fatal error で異常終了させるようにしています。

nobu: r54792 2016-04-27 15:47:56 +0900

拡張ライブラリ stringio の StringIO.new にブロックを渡すと IO.new と同様に警告を表示するようにしています。 IO.open はブロックを受け取るけど IO.new はブロックを受け取らないんですよねー。

naruse: r54793 2016-04-27 16:11:06 +0900

VM の命令の合成命令用の設定ファイル defs/opt_insn_unif.def からすでに setlocal に改名されて存在しなくなっている setdynamic 命令の記述を削除しています。

naruse: r54794 2016-04-27 16:11:07 +0900

tool/instruction.rb で融合命令(合成命令? なんて言うんでしたっけ)を作る処理を現状に追随させているそうです。