ruby-trunk-changes r60927 - r60938

今日は rubygems の 2.7.3 への更新、拡張ライブラリ strscan と File.lutime などの新メソッド追加、例外メッセージの端末での強調表示機能、Data クラスの obsolete 化などいろいろありました。

hsbt: r60927 2017-11-29 07:30:28 +0900

RubyGems の 2.7.3 を upstream からマージしています。バージョン上げただけじゃなくて細かい修正が含まれているようです。 http://blog.rubygems.org/2017/11/28/2.7.3-released.html

svn: r60928 2017-11-29 07:30:29 +0900

version.h の日付更新。

nobu: r60929 2017-11-29 16:57:48 +0900

拡張ライブラリ strscan に StringScanner#size と StringScanner#captures、StringScanner#values_at といったメソッドを追加して、直前の scan でマッチした group の capture 数やその内容を取得できるようにしています。ありそうでなかったメソッドって感じですね。 [ruby-core:20412] [Feature #836]

nobu: r60930 2017-11-29 17:23:16 +0900

T_DATA 型のオブジェクトは deprecated として拡張ライブラリでは T_TYPEDDATA 型に移行することにして、Data クラスの定数は depreceted にマークして警告が出るようにしています。ついに。 [ruby-core:29186] [Feature #3072]

shugo: r60931 2017-11-29 17:39:47 +0900

Module#refine で refinements が定義されている Module を include していると、Module#using で有効にしていなくてもメソッド探索に影響が出て NoMethodError が発生するケースがあった不具合を修正しています。 [ruby-core:83613] [Bug #14068]

svn: r60932 2017-11-29 17:39:48 +0900

r60931 で追加したテストの行末の空白除去。

nobu: r60933 2017-11-29 18:59:20 +0900

File.lutime というメソッドを追加しています。 lutimes(3) という symblic link の atime, mtime をセットする関数に対応するメソッドのようです。 ずいぶん昔のチケットですね。 [ruby-core:33163] [Feature #4052]
あれでも configure.ac で AC_CHECK_FUNCS(lutime) でチェックしてるけど、#ifdef でチェックしてるのは HAVE_LUTIMES で実際の関数も lutimes() なので configure.ac が間違ってないかな?

nobu: r60934 2017-11-29 19:38:36 +0900

r60930 の Data クラスの deprecate にあわせて rubyspec の C API のテストで rb_cData をチェックしていたテストを 2.4以前だけ実行するように変更しています。

sorah: r60935 2017-11-29 20:14:23 +0900

例外が rescue されなかった時に表示するバックトレースが端末に表示される場合に、エスケープシーケンスを用いて、エラーメッセージの部分を強調して表示するようにしています。 サンプルのスクリーンショットがこちらに。 https://img.sorah.jp/s/2017-11-29_1711_xj2fu.png [ruby-core:83963] [Feature #14140]

sorah: r60936 2017-11-29 20:16:14 +0900

NEWS ファイルの r60935 のチケット参照を修正しています。

k0kubun: r60937 2017-11-29 20:27:32 +0900

r60901 で Binding#irb のテストを Windows 環境でテストメソッドの定義自体をやめるようにしていたのを、テストメソッドは定義して明示的に skip するようにしています。また windows? というメソッドで platform のチェックができたのでそっちを使うようにしています。

naruse: r60938 2017-11-29 21:04:24 +0900

LEGAL ファイルに Onigmo についての記述がなくてその前身(?)の Oniguruma (鬼車)についての記述だけだったので、Onigmo(鬼雲)について追記し、Oniguruma のライセンスについてもシンプルな Copyright 表記だけだったので条文が追記されています。 [ruby-core:82388] [Bug #13818]