ruby-trunk-changes r63638 - r63649

今日は Bignum な整数の計算で rb_funcall() によるメソッド呼び出しを迂回して直接関数を呼ぶようにする最適化や、公式サイトの FTP の終了に伴なう README の変更などがありました。

kazu: r63638 2018-06-12 23:36:30 +0900

test/test_pty.rb で後置 if のかわりに &. 演算子を使うようにしています。

kazu: r63639 2018-06-12 23:36:32 +0900

同じく test/test_pty.rb で同じチェックをしている冗長な assertion を削除しています。

stomar: r63640 2018-06-13 05:22:43 +0900

標準添付ライブラリ securerandom の rdoc 用コメントに SecureRandom.alphanumeric を使ったサンプルを追加しています。比較的最近追加されたのでモジュールレベルのコメントに含まれてなかったんですね。 https://github.com/ruby/ruby/pull/1812

svn: r63641 2018-06-13 05:22:44 +0900

version.h の日付更新。

nobu: r63642 2018-06-13 10:04:33 +0900

bignum.c の rb_big_pow() で引数が負の Float の時に Complex を返すのに rb_funcall() で Complex#pow をメソッド呼び出ししてたのを pow(3) と rb_complex_polar() でこの場で計算して Complex を生成して返すようにしています。 また引数が負の整数(Fixnum)だった時も同様に rb_funcall() で Rational#pow を呼んでたのをこの場で Rational を組み立てて返すように最適化しています。

nobu: r63643 2018-06-13 10:21:59 +0900

r63642 と類似ですが rb_int_powm() int_pow_tmp1() int_pow_tmp3() などの関数で rb_funcall() でメソッド呼び出ししていたのを直接対応する C 関数を呼ぶようにしています。

ko1: r63644 2018-06-13 11:50:21 +0900

.gdbinit に VALUE 型から struct RBasic::flags のフラグ一覧を表示する print_flags コマンドを追加しています。

mame: r63645 2018-06-13 13:51:43 +0900

vm_insn_info() の実装を succinct bitvector とかそれ以外(なんだったっけ……)に切り替える VM_INSN_INFO_TABLE_IMPL が 1 の時に未使用の関数の宣言が残っていたので preprocessor の分岐を修正しています。

mame: r63646 2018-06-13 18:04:32 +0900

r63192 で導入された終端のない Range いわゆる endless range をリテラルで (1..nil) のように明示的に終端を nil に指定した記法はできないようにしているようです。 (1..) のように終端を書かない記法は許されています。 (1..var).to_a みたいに書いた時に var がうっかり nil だったら to_a がメモリを食い潰すから、ということみたいですが、ってことはリテラルnil だけじゃなくて評価した結果が nil の時も NG なんですね。でも to_a の時点でエラーにしたら? という提案があり後に revert されています。 [ruby-dev:50568] [Bug #14845]

normal: r63647 2018-06-13 19:00:46 +0900

sleep_forever() の引数 deadlockable と spurious_check が呼び元でどっちがどっちかわからなくなるから、ということでまとめて 1つの unsigned int の引数にしてビットフラグで指定するようにしています。うむ、気持ちはわかる。

kazu: r63648 2018-06-13 19:27:17 +0900

パッケージの配布などを行なっている ftp.ruby-lang.org の FTP プロトコルのサポートをこの 6 月で終了します、というアナウンスがあり、それにあわせて README.md/README.ja.md の入手方法から FTP の記述を削除しています。さらば FTP。長らくお疲れさまでした。 [ruby-core:87478] [Bug #14842]

mame: r63649 2018-06-13 20:00:28 +0900

r63646 の (1..nil) による endless range をエラーにする変更を revert しています。 [ruby-dev:50568] [Bug #14845]