ruby-trunk-changes r60402 - r60422

今日は IO#puts で可能なら writev(2) を使うようにする変更や Enumerable#sum で Range っぽいけど Range じゃないものが渡された時の不具合修正や Windows で OneDrive 配下のファイルを扱った時の SEGV 修正などがありました。

nobu: r60402 2017-10-24 22:48:08 +0900

r60279 の Windows での Etc.sysconfdir の対応が r60399 で revert されてたのでそのリベンジ。 ext/etc/extconf.rb で RbConfig::CONFIG のチェックを追加しています。 [ruby-core:43110] [Bug #6121]

ko1: r60403 2017-10-24 22:59:59 +0900

NEWS ファイルに r60397 でのブロック引数を(使わなければ)高速にする対応について追記しています。 [ruby-core:83536] [Feature #14045]

marcandre: r60404 2017-10-25 03:08:00 +0900

標準添付ライブラリ weakref の rdoc 用コメントの Example の節を消しています。内容が不正確になっている部分やまぎらわしい部分があったためだそうです。 [ruby-core:83366] [Bug #14031]

svn: r60405 2017-10-25 03:08:01 +0900

version.h の日付更新。

marcandre: r60406 2017-10-25 03:08:15 +0900

標準添付ライブラリ ostruct に #frozen_string_literal: true の magic comment を追加しています。これにより inspect の実装を修正しています。 https://github.com/ruby/ruby/pull/1714 [ruby-core:83203] [Bug #14000]

nobu: r60407 2017-10-25 08:19:57 +0900

T_IMEMO 型のオブジェクトのサブタイプのビットマスクの定数を enum の imemo_mask として定義していたのを debug.c に定義している ruby_dummy_gdb_enums という構造体のメンバーに追加して .gdbinit から RUBY_IMEMO_MASK として参照できるようにしています。 enum ならデバッガからもシンボルが見えるかと思ったら、見えないこともあるそうで(最適化などのせいですかね)、それを見えるようにするための hack っぽいです。

normal: r60408 2017-10-25 08:35:52 +0900

r60386 の apply2files(2) システムコールを使う操作を GVL 解放するようにした時に一時オブジェクトを GC からの保護のため配列に入れてたのですが、ALLOCV() で確保したバッファは擬似的な配列オブジェクトに入って mark 対象になるので不要だったので削除しています。 [ruby-core:83535] [Feature #13996]

nobu: r60409 2017-10-25 09:33:29 +0900

r60407 と同様に debug.c の ruby_dummy_gdb_enums に struct RSymbol のメンバーも追加しています。これもデバッガから見えるようにするためかな。

hsbt: r60410 2017-10-25 10:13:35 +0900

bundled gem の rake と test-unit をそれぞれ 12.2.0 と 3.2.6 に更新しています。

nobu: r60411 2017-10-25 10:40:15 +0900

begin, end メソッドがあるオブジェクトは Enumerable#sum で Range オブジェクトという想定で処理されて、exclude_end? が未定義だと NoMethodError が発生するみたいですが(そりゃそうだ)、これを TypeError を発生させるようにしています。 [ruby-core:83541] [Bug #14048]

nobu: r60412 2017-10-25 10:45:28 +0900

rb_iseq_compile_node() で不正な iseq type の時のエラーメッセージにタイプ名を含めるようにしています。

nobu: r60413 2017-10-25 11:41:47 +0900

mspec の Mock.verify_call で mock_respond_to? というメソッドに呼び元から渡された可変長引数をそのまま全部渡すように修正しています。

hsbt: r60414 2017-10-25 12:38:02 +0900

bundled gem の rake を 12.2.1 に更新しています。 12.2.0 が Capistrano との相性問題があったみたいで、サクっと修正されてます。

hsbt: r60415 2017-10-25 14:04:24 +0900

make test-bundled-gems の前準備用のターゲットで power_assert 向けに pry も事前インストールする gem に追加しています。

nobu: r60416 2017-10-25 14:23:54 +0900

r60411 の Enumerable#sum で Range と誤解された時のエラーの修正で begin と end メソッドの存在チェックを rb_check_funcall() を利用するように変更しています。 どうやらこれが r60413 の mspec の修正と関係あったみたいで rb_respond_to() と rb_funcall() してたのを rb_check_funcall() に変更しています。 [ruby-core:83541] [Bug #14048]

nobu: r60417 2017-10-25 14:44:38 +0900

IO#puts で引数と最後に追加される改行を writev(2) システムコールが使える環境では writev() を使って一度に書き込むようにしています。 [ruby-core:83508] [Feature #14042]
おおーこれで行と改行記号が生き別れになって行が連結するのが起きにくくなるのかな?

hsbt: r60418 2017-10-25 15:58:24 +0900

tool/make-snapshot で gems/bundled_gems の内容を読んで gem ファイル名をつくるところで変数名が衝突して上書きされてたそうなので改名しています。 [ruby-core:83553] [Misc #14050]

hsbt: r60419 2017-10-25 16:03:11 +0900

bundled gem の power_assert のバージョンを 1.1.1 に更新しています。

nobu: r60420 2017-10-25 16:28:22 +0900

r60297 で標準添付ライブラリ securerandom に追加された SecureRandom::Formatter#choose の rdoc 用コメントで省略不可能な第2引数を省略したサンプルが書かれてたので修正しています。

nobu: r60421 2017-10-25 17:37:17 +0900

Windows で OneDrive のドライブ配下のファイルを操作(そこのスクリプトファイルを実行)すると SEGV するという不具合修正。 Windows での link を実現する Reparse Point というもの(そういえばそういうの前も読んだな…)のタイプが増えてて、対応できない時はエラーにするようにしているみたいです。 [ruby-core:83539] [Bug #14047]

hsbt: r60422 2017-10-25 18:24:37 +0900

.travis.yml の Slack 通知のトークンを更新しています。