ruby-trunk-changes r62415 - r62431

今日は rubygems の更新などがありました。

nobu: r62415 2018-02-16 09:49:46 +0900

コマンドラインオプションの --enable-frozen-string-literal と --enable-frozen-string-literal の組み合わせのテストでエラー時のメッセージに実行するスクリプト内容とオプションを出力するようにしています。

svn: r62416 2018-02-16 09:49:47 +0900

version.h の日付更新。

nobu: r62417 2018-02-16 09:54:50 +0900

String#-@ による dedup の効果を確認するテストで object_id で比較していたのを assert_same という assertion メソッドを利用するようにリファクタリングしています。

nobu: r62418 2018-02-16 10:15:35 +0900

r62039 や r62407 の再修正。 iseq_poophole_optimize() で freezestring 命令を消してましたが、オペランドとして debug_info がある場合(nil でない場合)は削除しないように条件を追加しています。--debug オプションを使った時かな。 [ruby-core:85542] [Bug #14475]

shyouhei: r62419 2018-02-16 11:10:52 +0900

mjit.c で配列の初期化子として変数を使っているところがあったので、NULL で埋めておいて後から明示的に代入するように書きかえています。

hsbt: r62422 2018-02-16 17:08:06 +0900

RubyGems 2.7.6 がリリースされたので標準添付されている rubygems も更新しています。脆弱性修正を含むリリースだそうです。 http://blog.rubygems.org/2018/02/15/2.7.6-released.html

svn: r62423 2018-02-16 17:08:07 +0900

r62422 の行末の空白除去。

hsbt: r62424 2018-02-16 17:08:52 +0900

r62422 で追加したテストで tempfile の leak が検出されたので IO#close の後始末を追加しています。

nobu: r62429 2018-02-16 17:39:48 +0900

rb_intern() は include/ruby/ruby.h で gcc拡張機能で引数のリテラル(定数)だとわかったら RUBY_CONST_ID_CACHE() というマクロを使って static 変数にキャッシュを作って何度も処理しなくてすむようにする仕組みが作られていますが、各ソースファイルの Init_xxx() 内で rb_intern() しているところは、起動時や拡張ライブラリのロードに1回呼ばれるだけで、キャッシュの意味はあまりないので、 #undef rb_intern してこの自動キャッシュ機能を迂回するようにしています。逆に拡張ライブラリ readline では CONST_ID() マクロを明示的に使ってキャッシュを使ってるところがありましたが、ここは rb_intern() の呼び出しに変更しています。

shyouhei: r62430 2018-02-16 17:49:09 +0900

拡張ライブラリ fiddle で関数ポインタへの代入を void * の型から行なっているところがありましたが明示的にキャストするようにしています。 cosmetic って書いてあるけど関数ポインタと void * は暗黙の変換はだめって最近のコミットであったような。

shyouhei: r62431 2018-02-16 17:51:23 +0900

NEWS ファイルに VM 用のソースコード生成のツールの書き換えについて追記しています。