ruby-trunk-changes 2020-01-18

今日は拡張ライブラリio/console の修正とバージョンアップなどがありました。

[4e1a7678cd] Hiroshi SHIBATA 2019-12-23 03:14:11 UTC

io-console の gemspec ファイルの要求する ruby バージョンを 2.4.0 以上に更新しています。

[569f56e0f7] Charles Oliver Nutter 2020-01-13 19:42:56 UTC

拡張ライブラリ io/console のテストで ruby のコマンド名を ruby と決め打ちにしていたのを RUBY_ENGINE 定数を使うようにしています。 JRuby など別実装でのテストのため。

[4e56ec4ef7] Nobuyoshi Nakada 2020-01-17 14:49:26 UTC

拡張ライブラリ io/console の set_raw_mode() で intr: true が設定されている時に struct termios のフラグ c_oflag に OPOST をセットするようにしています。出力に対する後処理を有効にするというもので出力されるべき改行などが失われることがある不具合の対応みたいです。 [ruby-core:96858] [Bug #16509]

[199d829a51] Nobuyoshi Nakada 2020-01-17 15:17:05 UTC

io-console の gemspec のバージョンを 0.5.5 に更新しています。

[1e29fe77f4] git 2020-01-17 15:17:39 UTC

version.h の日付更新

[93a51c15d9] Nobuyoshi Nakada 2020-01-18 07:45:31 UTC

make clean で builtin_binary.inc も削除するようにしています。また macOS で .dSYM の削除をディレクトリの削除として扱うように修正しています。

[59d255b940] Nobuyoshi Nakada 2020-01-18 08:43:07 UTC

NEWS でチケットへの参照を footnote にしている? それともチケットの自動リンクがされなくなったのでこれがリンクにする記法なのかな。

[79f0ed3529] Nobuyoshi Nakada 2020-01-18 08:46:52 UTC

NEWS の章立てのレベルを "Changes since the 2.7.0 release" という見出しを削除してその中身をひとつ浅いレベルに変更しています。

[eb96e4e981] Nobuyoshi Nakada 2020-01-18 09:14:47 UTC

Dir.glob のオプションの Symbol 用 ID を rb_intern() で作ってたのを rb_intern_const() を使って static 変数として使いまわすようにしています。

[979b32d76b] Nobuyoshi Nakada 2020-01-18 09:46:19 UTC

Dir.glob のテストで Dir.glob の結果はソートしてたのに対して比較対象のリストのほうもソートしていましたが、こっちは自分で作ったリストなのでソートは不要なので削っています。まあでも作る時にうっかり辞書順じゃないリスト作ることもあるかもしれないから、両方ソートして比較というイディオムでもいいと思いますけどね。

ruby-trunk-changes 2020-01-17

今日は ruby2_keywords で修飾されたメソッドで自動的にキーワード引数から変換された Hash オブジェクトに内部的に付与されるフラグを ruby レベルから参照したりセットしたりするメソッドの追加などがありました。

[ec0b366a5c] aycabta 2020-01-16 11:26:50 UTC

標準添付ライブラリ reline の vi mode のテストに "i" や "a" で編集モードになる時のテストを追加しています。

[800c2a8e4c] aycabta 2020-01-16 16:35:13 UTC

標準添付ライブラリ reline の vi モードに "I" や "A" で行頭や行末で編集モードになる機能の対応を追加しています。

[95301378fc] git 2020-01-16 16:37:30 UTC

version.h の日付更新

[8ab11096ef] Marc-Andre Lafortune 2020-01-16 19:28:37 UTC

Module#included_modules と Module#included? の rdoc 用コメントに親を再帰的に辿って列挙/判定することを明記しています。 [ruby-core:56898] [Bug #8841]

[019a0ed0c7] Kenta Murata 2020-01-17 00:05:17 UTC

internal/rational.h の RRATIONAL_SET_{NUM,DEN} を改名してマクロから inline 関数 RATIONAL_SET_{NUM,DEN}() に変更しています。

[fbc00c2d86] Kenta Murata 2020-01-17 00:45:10 UTC

rational.c の nurat_s_new() という関数を削除して、Rational.convert の実装から呼ぶのは nurat_s_canonicalize_internal() を使うようにしています。

[07ce51c5aa] Kenta Murata 2020-01-17 00:55:50 UTC

019a0ed0c78ccd0eb694d09c6a226761261ec15d で inline 関数に変更して改名した RATIONAL_SET_{NUM,DEN}() に引数の type をチェックする assert(3) を追加。また rational.c の INT_POSITIVE_P() もマクロから inline 関数にして internal/numeric.h に移動しています。

[47465ab1cc] Kenta Murata 2020-01-17 01:41:03 UTC

Rational を作る時に負数が渡された場合内部的に常に numerator のほうで符号を表現して denominator は正数にするようにしています。

[5275d8bf4c] Kenta Murata 2020-01-17 01:47:20 UTC

String#to_r などで文字列から Rational を作る時に使われる rb_rational_raw() で numerator/denominator を to_int を呼んで整数に変換するようにしています。

[4e6bcac23e] Kazuhiro NISHIYAMA 2020-01-17 02:19:01 UTC

再度 make の依存関係を再生成しています。

[f9788ca7fe] Nobuyoshi Nakada 2020-01-17 07:41:46 UTC

さらにもう一度依存関係の再生成。 macOS 上で Xcode の clang だと time.o に internal/warnings.h になるようです。そうかー環境によっても依存関係変わることがあるから自動生成しても違う可能性があるんですね。

[c98c492578] Nobuyoshi Nakada 2020-01-17 07:56:53 UTC

f38b3e8c707ebdcad05aa9485cf1760640b74fbb の numbered parameter に対応する NODE の位置情報修正についてのテストを追加しています。

[b23fd59cbb] Yusuke Endoh 2020-01-11 06:04:44 UTC

2.7 の Kernel#ruby2_keywords などで修飾したメソッドの keyword rest 引数を最後の Hash 引数として自動的に変換して受け取った場合、それをさらに委譲した時に伝播されるように Hash オブジェクトに隠しフラグのように RHASH_PASS_AS_KEYWORDS を立ててましたが、このフラグを Marshal.dump/load 時に保持するようにしています。dRuby 経由のメソッド呼び出しでも伝播するようにと。なるほど。 [ruby-core:96777] [Feature #16501]

[7cfe93c028] Yusuke Endoh 2020-01-06 09:22:43 UTC

同じく Kernel#ruby2_keywords などで修飾したメソッドの keyword rest 引数を最後の Hash 引数として受け取った時のフラグを、Hash.ruby2_keywords_hash? というクラスメソッドで ruby レベルで判定できるようにしています。さらにフラグを立てた Hash オブジェクト(コピーしたもの)を返す Hash.ruby2_keywords_hash というクラスメソッドも追加しています。 これは実用上使うことあるのかな。 rdoc 用コメントにも "This method is not for casual use; debugging, researching, and some truly necessary cases" とあるからまあ通常使うものではないですね。
[ruby-core:96687] [Bug #16486]

[3344f81107] Yusuke Endoh 2020-01-17 08:25:05 UTC

GitHub Actions の cygwin 版を削除しています。 安定していないしメンテナンスする人がいないので。 [ruby-dev:50880] [Misc #16407]

[09271acdaf] Adam Isom 2020-01-16 21:42:36 UTC

doc/syntax/methods.rdoc の rest 引数についての記述を m(a, *b, c) みたいに rest 引数が通常引数の中間に存在する記法がサポートされるようになっているのに追随するようにしています。

ruby-trunk-changes 2020-01-16

今日は正規表現を使うメソッドの不具合修正や numbered parameter を eval 内で使う時の不具合修正の他、net-tenlet と xmlrpc が bundled gems からも外される変更がありました。

[4f19666e8b] Nobuyoshi Nakada 2020-01-16 02:25:43 UTC

正規表現マッチの名前つきグループによる部分マッチに Regexp#last_match に引数で名前を渡してアクセスするとチェックが不足してて不正アクセスで SEGV する可能性があった不具合を修正。 [ruby-core:96845] [Bug #16508]

[0b6682dc57] git 2020-01-16 02:34:30 UTC

version.h の日付更新

[fce54a5404] Nobuyoshi Nakada 2020-01-16 06:36:38 UTC

String#partition に渡した正規表現が行頭の幅0にマッチするような正規表現だった場合に分割した結果空文字列が先頭じゃなくて後ろに出現するという不具合を修正しています。 [Bug #11014]

[62baad9fe1] Hiroshi SHIBATA 2020-01-16 07:56:53 UTC

net-telnet と xmlrpc を bundled gems からも削除しています。 [ruby-core:96682] [Feature #16484]

[f38b3e8c70] Nobuyoshi Nakada 2020-01-16 09:34:31 UTC

parse.y で numbered parameter のために生成する NODE_ARGS_AUX のノードの位置情報がずれてたのを修正しています。テストに追加されてる文が assertion でもないただの Integer#times で、これはどういう意図だろう。

[c171ab23e3] Nobuyoshi Nakada 2020-01-16 09:38:48 UTC

と、思ったら f38b3e8c707ebdcad05aa9485cf1760640b74fbb でテストに追加された Integer#times のブロックに assertion を追加しています。 また numbered parameter が eval の中で外の文脈を引き継いでしまう不具合を修正しています。 [ruby-core:96332] [Feature #16432]

ruby-trunk-changes 2020-01-15

今日は正規表現リテラルの式埋め込みのないものは freeze する変更がありました。

[eb4c86a698] Koichi Sasada 2020-01-15 01:20:19 UTC

GC.stat と GC.latest_gc_info の rdoc 用コメントに引数に Hash オブジェクトを渡すとこれに上書きされるという記述を追加しています。 [ruby-dev:50439] [Bug #14408]

[07aef4c99a] git 2020-01-15 01:23:37 UTC

version.h の日付更新

[98ef38ada4] Jean Boussier 2019-11-27 11:40:18 UTC

正規表現リテラルで式埋め込みがないものは freeze した状態にするようにしています。うむ、まあ Regexp には通常は破壊的な操作はない(メタプログラミング的なものたちは別として)…はずですし freeze しても互換性の問題はないでしょうね(性能的な効果もないかもしれないけど)。 [ruby-core:57353] [Feature #8948] [ruby-core:95977] [Feature #16377]

[ac93cf4ff8] Kazuhiro NISHIYAMA 2020-01-15 01:50:53 UTC

98ef38ada43338c073f50a0093196f0356284625 の rubyspec の version による guard の範囲が間違ってたので修正。

[9feca5ceb9] Yusuke Endoh 2020-01-15 03:42:47 UTC

NEWS ファイルを NEWS.md と改名して、rdoc のかわりに Markdown 形式で記述するようにしています。

[815807d2ab] Yusuke Endoh 2020-01-15 03:43:49 UTC

98ef38ada43338c073f50a0093196f0356284625 の正規表現リテラルの freeze について NEWS.md ファイルに追記しています。 [ruby-core:57353] [Feature #8948] [ruby-core:95977] [Feature #16377]
関係ないですけどこれまで「NEWS ファイルに〜」と書いてましたが「NEWS.md ファイルに〜」と書くのもめんどうなのでこれからは省略して「NEWS に〜」と書くことにしようかな。

ruby-trunk-changes 2020-01-14

今日は Time のちょっとした最適化や irb の自動インデント機能修正と reline の Encoding まわりの修正などがありました。

[5aa0e6bee9] Kazuhiro NISHIYAMA 2020-01-13 12:22:22 UTC

NEWS ファイルに b25e27277dc39f25cfca4db8452d254f6cc8046e で追加した Hash#transform_keys の引数に Hash を渡す新機能について追記しています。 コミットログのチケットの参照は番号が間違ってそう。 [Feature #16274]

[c2e45422f7] John Hawthorn 2020-01-02 19:48:02 UTC

time.s でタイムゾーンを表す文字列で頻出の "UTC" を毎回 rb_fstring_lit() を呼んでいたのを static 変数に格納して使いまわすようにしいています。同様に空文字列の fstring オブジェクトも static 変数に格納するようにしています。

[5f3189474c] John Hawthorn 2020-01-02 19:48:03 UTC

同じく time.c の month_arg() という関数(ここだけみてもよくわかりませんが Time.utc や Time.local などの引数を解釈するもののうち month の部分を解釈するもののようです)で Integer 型オブジェクトの時に不要な文字列化を抑制するためのショートカット? を追加しています。

[91601dcc6a] John Hawthorn 2020-01-02 19:48:03 UTC

5f3189474c3ee3e11b6588acfbb026e119522092 でも利用していた time.c で整数オブジェクトを uint32_t 化する obj2ubits() のビット演算をシンプルにリファクタリングしています。

[e0a9b8ecef] git 2020-01-13 21:58:47 UTC

version.h の日付更新

[440013b2fa] Jun Aruga 2020-01-13 17:00:33 UTC

Travis-CI での s390x のビルドを allow_failures から削っています。すごい、安定しているのか。

[9994eb8a5e] Ben 2019-12-30 16:18:05 UTC

irb の複数行編集時の複数行にまたがった [...] の後のインデントの深さの判定の不具合を修正しています。

[c94025b630] Ben 2020-01-05 19:44:38 UTC

9994eb8a5e72ff68ee2a13ddeff8d9307ba7cd84 の変更の修正で irb の複数行編集で同じ行に開きブラケットが複数並ぶときのインデント深さの計算も修正しています。

[f8ea2860b0] aycabta 2020-01-12 13:24:17 UTC

標準添付ライブラリ reline で Windows 環境で入出力の Encoding と Encoding.default_external が一致しないという問題があるらしくて Reline::Core の生成時に Encoding 指定できるようにして Reline::IOGate.encoding によって指定できるようにしています。 Reline::ANSI では Encoding.default_external ですが Reline::Windows では Encoding::UTF_8 に固定しています。

[a2638c0d87] aycabta 2020-01-13 09:26:32 UTC

irbIRB.set_encoding から @CONF[:ENCODINGS] への設定を削除しています。もう使ってないとのこと。

[8c3efa4940] aycabta 2020-01-14 06:40:03 UTC

irbhistory ファイルの読み込み時の external encoding の指定に存在すれば IRB.conf[:LC_MESSAGES].encoding を利用するようにしています。

ruby-trunk-changes 2020-01-13

今日は小さめの Hash の array 実装の時の潜在的不具合修正などがありました。

[350dafd56a] Koichi Sasada 2020-01-12 18:36:47 UTC

Hash の埋め込み配列実装の時 (AR table) にコールバック関数を呼んだ後で RHASH_AR_TABLE_REF() で要素を取得しなおすように修正しています。 Transient Heap に置かれていたものが移動している可能性があり、不正なアクセスになってしまっている可能性があったようです。

[83b8dfac90] git 2020-01-12 18:44:08 UTC

version.h の日付更新

[61ff5cd5fd] Lourens Naudé 2020-01-12 10:36:15 UTC

gc.c の obj_free() で debug counters が有効な時の switch 文にかっこがなくてコンパイルエラーになっていたのを修正。

[c9b1969fa3] Nobuyoshi Nakada 2020-01-13 01:02:04 UTC

GitHub Actions の cygwin 版の git clone に bash でなく cmd.exe を使うようにしています。 Windows 環境で shell: bash を使うと git コマンドも msys のものになってしまうので改行コードの扱いが変わってしまってうまくなかったみたいです。

[f43940633d] Nobuyoshi Nakada 2020-01-13 03:27:24 UTC

tool/test-bundled-gems.rb で rake コマンドの絶対パスを File.realpath を使って取得するようにしています。また gems サブディレクトリも File.expand_path ではなく File.realpath を使ってシンボリックリンクを解決した絶対パスを得るようにしています。

ruby-trunk-changes 2020-01-12

今日は rexml と rss を標準添付からはずして bundled gems 化する変更などがありました。

[c3ccf23d58] Hiroshi SHIBATA 2020-01-11 12:37:00 UTC

標準添付ライブラリ rexml を削除して bundled gem に変更しています。 [ruby-core:96683] [Feature #16485]

[83240f315a] Hiroshi SHIBATA 2020-01-11 12:48:06 UTC

標準添付ライブラリ rss も削除して bundled gem にしています。 [ruby-core:96683] [Feature #16485]

[e61cab3a36] Hiroshi SHIBATA 2020-01-11 23:14:26 UTC

2.8 以降は rubyspec で rexml のテストを除外するようにしています。

[c7ef7d8a73] Hiroshi SHIBATA 2020-01-12 00:15:46 UTC

e61cab3a367c4040a2a487dd893c7be9a37889a9 に追加して rubyspec の CVE-2014-8080 の rexml のテストも 2.8 以降は除外するようにしています。

[ca6546704a] Hiroshi SHIBATA 2020-01-12 00:59:10 UTC

GitHub Actions で bundled gems のテストのうち rss と xmlrpc のエラーを許容するように設定を追加しています。

[ae69aea3b0] git 2020-01-12 03:28:54 UTC

version.h の日付更新

[cccfc66760] Nobuyoshi Nakada 2020-01-12 10:39:00 UTC

make ChangeLog というターゲットを追加して ChangeLog 生成を実行できるようにしています。

[b34f39e860] Nobuyoshi Nakada 2020-01-12 10:43:59 UTC

tool/lib/vcs.rb の ChangeLog 生成で git notes によるコミットログ書き換えの処理でコミットログの行を削除できるように修正しています。

[8afd304f41] Nobuyoshi Nakada 2020-01-12 10:50:34 UTC

cccfc66760fe479692852adf62167857243b4847 で追加した make ChangeLog ターゲットを phony ターゲットとして定義して常に再生成するようにしています。

[e288632f22] Nobuyoshi Nakada 2020-01-12 10:54:59 UTC

make clean で ChangeLog も削除するようにしています。