ruby-trunk-changes 2019-10-12

今日は標準添付ライブラリ rexml, csv の更新や Thread.exclusive の deprecated 警告で表示するソース位置の修正などがありました。

[f3c4e620ac] Yusuke Endoh 2019-10-11 12:13:52 UTC

拡張ライブラリ syslog で Android 環境では Syslog::LOG_PERROR という定数は定義されるものの実際に利用しようとするとエラーになるのでテストをスキップするようにしています。

[9e4a53fe13] Yusuke Endoh 2019-10-11 12:39:21 UTC

rubyコマンドラインオプション --encoding のテストで WindowsAIX でのみ不正なバイト列がエラーにならないというのに対応して assertion を変更していたのを Android 環境でも同様の対応をするようにしています。

[c866663784] Yusuke Endoh 2019-10-11 12:43:18 UTC

io.c で定義している NUM2IOCTLREQ() というマクロで NUM2INT() のかわりに NUM2LONG() を int にキャストしたものを使うようにしています。これは ioctl(2) に渡す引数を作るためのマクロで引数は int であるにもかかわらず一部の環境では int の範囲を超えた定数が使われることがあるのでその対策とのこと。ひえー。

[412cd56766] Sutou Kouhei 2019-10-12 03:07:15 UTC

標準添付ライブラリ rexml に upstream の変更をマージしてバージョンを 3.2.3 に更新しています。変更点は REXML::XMLDecl に writethis というインスタンス変数を追加しているだけのようです。 https://github.com/ruby/ruby/pull/2548

[f6a666a1fc] git 2019-10-12 03:07:36 UTC

version.h の日付更新

[d6e68bb263] Kazuhiro NISHIYAMA 2019-10-12 04:25:52 UTC

ruby 本体に組み込まれて起動時に評価される prelude.rb で Thread.exclusive で deprecated 警告を表示する Kernel#warn に uplevel キーワード引数を追加して呼び元の位置を表示させるようにしています。

[92df7d98b6] Sutou Kouhei 2019-10-12 05:03:21 UTC

標準添付ライブラリ csv に upstream から変更をマージしてバージョンを 3.1.2 に更新しています。ドキュメントの変更やクラスメソッドの定義の記法の変更などが目立ちますが他にも修正がありそうです。 https://github.com/ruby/ruby/pull/2547

[6333020fc9] Nobuyoshi Nakada 2019-10-12 05:55:55 UTC

テストのためにファイルシステムの情報を取得するためのテスト用拡張ライブラリで、atime が利用可能かどうかの判定で macOS の最新版 Catalina では MNT_STRICTATIME というフラグが立ってないと更新されない(mount 時のオプションで決まる)らしいのでその対応を判定に追加しています。

[710bc00379] Nobuyoshi Nakada 2019-10-12 08:21:05 UTC

include/ruby/ruby.h にあった C++ でのメソッド定義系関数でのコールバック関数の引数の数のチェックを行うためのマクロ定義を include/ruby/intern.h に移動しています。 ruby.h を include する前に使われる可能性があったとのこと。

[04333da7be] Nobuyoshi Nakada 2019-10-12 09:14:15 UTC

eval.c の "clobbered by 'longjmp' or 'vfork'" 警告が gcc 9.2.0 で出るようになったそうでその除去のため volatile 宣言した変数を導入。

[f405564711] Nobuyoshi Nakada 2019-10-12 09:47:06 UTC

拡張ライブラリ md5/digest で Xcode 11.1 での警告除去のため #pragma で -Wdeprecated-declarations を無効にしています。コメント読むとどうやら MD5 はもう推奨されないということで警告が出るみたいです。

[cb14c4a535] Yusuke Endoh 2019-10-12 12:10:49 UTC

missing/setproctitle.c の setproctitle() の代替実装で引数 fmt が NULL の時の分岐を消して fmt に NULL が渡されるのは不正ということにしています。 fmt が NULL の時にバッファが未初期化のまま使われてしまうのを Coverity Scan が検出したとのこと。

[7ebf9da788] Nobuyoshi Nakada 2019-10-12 13:08:50 UTC

710bc003791b90adf3970e137c69f283c88234cd の続きで RB_METHOD_DEFINITION_DECL_XXX() の移動にあわせて __has_attribute() が未定義の時の代替定義も include/ruby/internal.h に移動してします。

[ebc2198d9f] Yusuke Endoh 2019-10-12 13:43:34 UTC

re.c の match_set_string() において onig_region_resize() の戻り値のチェックをしてメモリ確保失敗時に NoMemoryError 例外を発生させるように修正しています。 Coverity Scan の検出とのこと。