ruby-trunk-changes r62549 - r62563

今日は MJIT のデッドロック修正、Kernel#Rational() の不具合修正などがありました。
また今日は JIT という大きな機能追加があったので、広く試してもらうために早期に 2.6.0-preview1 のリリースがありました。 https://www.ruby-lang.org/ja/news/2018/02/24/ruby-2-6-0-preview1-released/

k0kubun: r62549 2018-02-24 09:40:36 +0900

mjit.c の mjit_mark() で rb_gc_mark() を呼ぶとそれが GC を開始してしまってデッドロックに陥る可能性があったので、一時的に mutex を unlock しておくようにしています。

svn: r62550 2018-02-24 09:40:37 +0900

version.h の日付更新。

nobu: r62551 2018-02-24 10:02:58 +0900

vm.c の構造体タグ名およびコメントの typo 修正。 https://github.com/ruby/ruby/pull/1824

k0kubun: r62552 2018-02-24 10:05:20 +0900

NEWS ファイルに MJIT 関連のオプションについてもう少し詳しく説明を追記して、2.6.0-preview1 での状態(まだそんなに速くなってないとか遅くなるケースもあるけど今後改良予定)についても追記しています。

nobu: r62553 2018-02-24 10:12:51 +0900

Array#sample の rdoc 用コメントにキーワード引数 random を使ったサンプルを追加しています。 https://github.com/ruby/ruby/pull/1825

nobu: r62555 2018-02-24 11:08:36 +0900

Kernel#Raitional() に文字列で指数表記の数値を渡した時に指数部が小数点以下の桁数より小さい時に不正な変換をして SEGV する可能性があった不具合を修正しています。 [ruby-core:85783] [Bug #14547]

nobu: r62556 2018-02-24 11:45:12 +0900

Rational() で使ってる read_num() で指数表記の指数部が 0 の時に乗算は不要なのでスキップするようにしています。

nobu: r62557 2018-02-24 11:48:09 +0900

r62555 で追加した Kernel#Rational() のテストに指数部が小数点以下の桁数とちょうど同じケースも追加しています。

nobu: r62558 2018-02-24 11:55:03 +0900

version.h で JIT が有効かどうかで表示する文字列を変えるためにマクロ RUBY_DESCRIPTION と RUBY_DESCRIPTION_WITH_JIT を定義していたのを、RUBY_DESCRIPTION_WITH() という関数マクロ1つを定義して参照元で引数を "" と " +JIT" に変えるようにして、重複を減らしています。

naruse: r62559 2018-02-24 11:58:39 +0900

tool/vcs.rb の ChangeLog を生成するメソッドで git log のオプションに --no-notes を追加して git notes の注釈は表示しないようにしています。 git notes については昔記事を書いたなぁ。 http://d.hatena.ne.jp/nagachika/20111215/git_notes_bottomup

naruse: r62560 2018-02-24 11:58:41 +0900

r62531 の tool/generic_erb.rb と同様に enc/make_encmake.rb と tool/transcode-tblgen.rb も ERB.new の引数を呼び分けるのに RUBY_VERSION ではなく ERB.version をみるようにしています。 cross compile 時には RUBY_VERSION には依存できないとのこと。

kazu: r62563 2018-02-24 17:54:19 +0900

標準添付ライブラリ erb で Kernel#warn で警告メッセージを出力する時にメッセージの先頭に "warning: " とつけてましたがこれは削って、またキーワード引数 uplevel に 1 を指定して位置を呼び元にするようにしています。