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 で Mutex や 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

Bignum#reminder を Integer#reminder へ移動して Fixnum にも対応させています。

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 を使うようにしたのはなぜだろう。