今日は rubygems での Kernel#warn の uplevel の指定がずれることがある問題の対処や rubyspec/mspec の更新などがありました。
k0kubun: r64824 2018-09-24 21:40:28 +0900
VM 命令に opt_and と opt_or というのを追加して & および | 演算子のコンパイル時に利用して、receiver と引数がともに Fixnum の時に最適化して処理を inline 化するようにしています。 MJIT 時にこれが効いて optcarrot でかなり高速化されるようです。 optcarrot は特異的に Integer のビット演算をかなり使ってそうですからね。 https://github.com/ruby/ruby/pull/1963
nobu: r64825 2018-09-24 22:04:40 +0900
r64817 の rubygems での Kernel#warn の上書き定義で引数を 1つしか受け取らないように再定義してしまってたので複数受け取るように修正しています。
nobu: r64826 2018-09-24 23:26:00 +0900
r64825 で r64817 の rubygems の Kernel#warn の再定義の問題を解決したので r64822 で Kernel#warn の上書きをやめてたのを戻して、またスタックフレームを底から順に rubygems/core_ext を含んでないかチェックして uplevel の指定より下に存在した時も除外できるようにしています。けどその前の pack("l!").unpack("l!") は何をしているんだろう? オーバーフローの回避だとしたらもうちょっと直接的なチェック方法がありそうだし。
nobu: r64827 2018-09-25 08:23:14 +0900
コアのテスト用の test/lib/test/unit.rb でコマンドラインオプション --subprocess-timeout-scale の処理を setup_options から non_options というメソッドに分離しています。 Test::Unit::Options のメソッドで setup_options で処理すると他のオプションの設定はブロック内で参照できないので、後で呼ばれる non_options メソッドのほうに遅延して --timeout_scale オプションの設定の有無を参照できるようにしています。
svn: r64828 2018-09-25 08:23:16 +0900
version.h の日付更新。
k0kubun: r64829 2018-09-25 13:03:35 +0900
r64824 の Integer#& と Integer#| の最適化命令の導入を revert しています。 Appveyor で MinGW でのビルドが失敗したみたいです。
eregon: r64830 2018-09-25 19:40:39 +0900
mspec に upstream から最新版をマージしています。
eregon: r64831 2018-09-25 19:41:16 +0900
rubyspec に upstream から最新版をマージしています。
svn: r64832 2018-09-25 19:41:19 +0900
r64831 の新規追加ファイルの svn property 設定。