ruby-trunk-changes r64783 - r64792

今日は Array#union というメソッドの新規追加などがありました。

kazu: r64783 2018-09-19 21:39:44 +0900

.travis.yml のビルド対象ブランチから ruby_2_2 を削除しています。

marcandre: r64784 2018-09-20 02:12:04 +0900

標準添付ライブラリ net/http の Net::HTTPHeader#initialize_http_header でヘッダに改行コードが入っていた時の例外メッセージにヘッダ名とその値も埋め込むようにしています。 https://github.com/ruby/ruby/pull/1849

svn: r64785 2018-09-20 02:12:05 +0900

version.h の日付更新。

nobu: r64786 2018-09-20 10:43:35 +0900

キーワード引数と共に &b のようなブロック引数を渡すメソッド呼び出しで空ハッシュをキーワード引数として splat して渡した後にブロック引数を渡していたら SEGV していたのを修正しています。 [ruby-core:88890] [Bug #15087]

nobu: r64787 2018-09-20 12:18:52 +0900

Array#union というメソッドを追加しています。これは Array#| と同様の要素毎の論理和を取るメソッドですが、引数に複数の配列を受け取れるので実装は別になっています。 https://github.com/ruby/ruby/pull/1747 [ruby-core:83721] [Feature #14097]

nobu: r64788 2018-09-20 12:18:53 +0900

r64787 で追加した Array#union の実装と Array#| の実装からサイズが小さい時の共通の処理を rb_ary_union() に切り出すリファクタリングhttps://github.com/ruby/ruby/pull/1747 [ruby-core:83721] [Feature #14097]

nobu: r64789 2018-09-20 12:18:54 +0900

r64787 で追加した……と思ったんですが、どうやらその前からあったっぽいですね。 Array#| の rdoc 用コメントで参照しているメソッド名が Array#uniq だったので union に修正しています。 なんかこれ uniq と同様の方法で同値判定するよっていう意味での参照だったんじゃないかなぁ。まあ union のほうが関連が強いのでいいと思いますけど。 https://github.com/ruby/ruby/pull/1747 [ruby-core:83721] [Feature #14097]

nobu: r64790 2018-09-20 12:18:54 +0900

r64787 で追加した Array#union と Array#| の実装からさらにサイズが大きい時の Hash を使った実装も共通部分を rb_ary_union_hash() という関数に切り出すリファクタリングをしています。 https://github.com/ruby/ruby/pull/1747 [ruby-core:83721] [Feature #14097]

shyouhei: r64791 2018-09-20 14:31:51 +0900

tool/ruby_vm/helpers/scanner.rb でインスタンス変数の参照に @ をつけ忘れてたのを修正しています。自分で insns.def を書き換えないかぎりは使わないところらしいですけど。

mame: r64792 2018-09-20 16:36:10 +0900

switch 文などの VM 命令へのコンパイルを行う compile_case() で opt_case_dispatch 命令を用いた最適化を RubyVM の compile_option で specialized_instruction が有効にされてる時だけ実行するようにしています。たぶん普通は有効になってると思います。それを調べるので気がつきましたがこのオプションのデフォルト値を示す定数 OPT_SPECIALISED_INSTRUCTION は typo? していますね。