ruby-trunk-changes r59785 - r59792

今日は Fiber の mark 関数の mark 漏れをする場合がある不具合の修正や bundler のテストの修正などがありました。

normal: r59785 2017-09-09 08:51:14 +0900

cont_mark() で machine stack の中身から指されている(かもしれない)オブジェクトの mark の処理を実施する条件として rb_fiber_t::status が SUSPENDED だという条件がありましたが、これを TERMINATED ではない時、と範囲を広げています。r59557 で Fiber の内部構造の状態遷移を変更した時にここの条件の考慮が漏れていたのだと思います。ということは trunk だけ、かと思ったけどチケットをみると 2.4 にも何か(別の)問題がある? [ruby-core:82681] [Bug #13875]

svn: r59786 2017-09-09 08:51:15 +0900

version.h の日付更新。

kazu: r59787 2017-09-09 11:34:30 +0900

.gitignore を svn property svn:ignore の設定を合わせるようにしているようです。

nobu: r59788 2017-09-09 18:16:56 +0900

compile.c でオブジェクトの TYPE() で switch 文で分岐していたのを RB_TYPE_P() や FIXNUM_P(), NIL_P() などのマクロを使った分岐に変更しています。

nobu: r59789 2017-09-09 18:16:59 +0900

sprintf.c の ruby_vsnprintf() にフォーマット文字列として NULL を渡しても SEGV しないようにしています。必要なバッファサイズを知るために NULL を渡して呼び出してからメモリ確保するというイディオムに使えるようにするためみたいです。

nobu: r59790 2017-09-09 19:20:38 +0900

bundler のテストの spec/bundler/support/rubygems_ext.rb で gem install 実行させる時に環境変数 BUNDLE_GEM を参照して呼び出す gem コマンドを変更できるようにしています。

nobu: r59791 2017-09-09 20:30:31 +0900

make test-bundler-prepare というターゲットで GEM_HOME や GEM_PATH の環境変数指定するかわりに ruby の -C オプションで srcdir に移動してから --install-dir オプションでインストール先を指定して rspec を gem install させるようにしています。たぶん bundler 経由すると GEM_HOME などが効かなくなるのに対策しているのかなぁ。

nobu: r59792 2017-09-09 20:30:32 +0900

bundler のテストの spec/bundler/support/path.rb で環境変数 BUNDLE_RUBY と BUNDLE_GEM をチェックして ruby 本体でのテストかどうか判定している部分を for_ruby_core? というメソッドに切り出すリファクタリング。また spec/bundler/support/path.rb と spec/bundler/support/rubygems_ext.rb で環境変数 PATH に追加するのを ruby 本体の時は exe でなくて bin ディレクトリを使うようにしています。