ruby-trunk-changes 2019-11-03

今日は String#match や String#match? メソッドなどで TypeError 例外を発生させるようにしていた変更の revert がありました。

[452bee3ee8] Kenichi Kamiya 2019-11-01 15:54:36 UTC

2a22a6b2d8465934e75520a7fdcf522d50890caf で String#match String#match? や Symbol#match, Symbol#match? で引数に nil が渡された時の挙動を TypeError を発生させるようにしていたのを revert しています。非互換を踏むライブラリなどが結構あったからのようです。かわりに警告メッセージを表示するようにしています。なのですがこれは Regexp#match などの時にも出るようになりそう。 と、思ったけど 2a22a6b2d8465934e75520a7fdcf522d50890caf を読み間違えてたみたいで、これは Regexp#match の挙動も元は nil/false を返していたのを TypeError にした? みたいですね。なんかチケットの説明に書かれているのと違うなぁ…。 [Feature #13083]

[31110d820c] Kenichi Kamiya 2019-11-03 00:24:55 UTC

452bee3ee8d68059fabd9b1c7a75661b14e3933e の続きで match/match? メソッドに nil が渡された時の警告メッセージに次回のリリースで TypeError に変わると追記しています。 [Feature #13083]

[985e6ced99] git 2019-11-03 10:03:24 UTC

version.h の日付更新

[4a16623707] Benoit Daloze 2019-11-03 10:08:58 UTC

NEWS ファイルから String#match, String#match? の仕様変更についての記述を削除しています。 [Feature #13083]

[fbacfe6820] Benoit Daloze 2019-11-03 10:11:20 UTC

4a166237074edeaf5b7c1a0fb3c0bb4489c0dbf4 と同様に NEWS ファイルから Regexp#match と Regexp#match? の仕様変更についての記述を削除しています。 [Feature #13083]

[782d1b8fb0] Benoit Daloze 2019-11-03 10:25:42 UTC

31110d820cc1258cbc84b46ecc65b254c7d5529a で Regexp#match, Regexp#match? の警告メッセージを追加したのに合わせて他の一部のテストで警告を抑制して実行するように suppress_warning を追加しています。

ruby-trunk-changes 2019-11-02

今日は reline の LineEditor の描画修正とドキュメントの更新だけでした。

[ea97933645] aycabta 2019-11-01 14:45:07 UTC

標準添付ライブラリ reline の Reline::LineEditor で表示するサイズの高さの計算をする時にプロンプトの幅も考慮して計算するようにしています。

[e6f0fd8af4] git 2019-11-01 15:15:05 UTC

version.h の日付更新

[772b0613c5] Burdette Lamar 2019-11-02 06:32:49 UTC

ENV の各種メソッドの rdoc 用コメントの call-seq で戻り値が Hash と書かれてたところは ENV 自身がかえるのでそのように修正しています。 #2620

ruby-trunk-changes 2019-11-01

今日は拡張ライブラリ zlib の Zlib::GZipWriter#mtime= に 0 をセットした時の不具合修正や拡張ライブラリ date のタイムゾーンの略記でうまく認識しないものがあった不具合修正などがありました。

[0aaa15f636] Alan Wu 2019-10-25 23:15:24 UTC

拡張ライブラリ zlib で Zlib::GzipWriter#mtime= に値がセットされなかった場合というのを 0 がセットされていることで判定していましたが、明示的に 0 をセットすることもありえるので struct zstream::flags のフラグを利用してセットされているかどうかを渡すように修正しています。 https://github.com/ruby/zlib/pull/10

[63f70eb651] Nobuyoshi Nakada 2019-10-31 13:21:11 UTC

拡張ライブラリ zlib の未使用変数の削除。

[2c889e9b05] 卜部昌平 2019-11-01 05:32:05 UTC

コンパイラの拡張 attribute __alloc_size__ が使えるかどうかの判定として GCC のバージョンでの判定をしていたのに追加して組み込みマクロ __have_attribute() が使える場合はそれで __alloc_size__ が使えるか判定する条件も追加しています。

[fb495b2928] 卜部昌平 2019-11-01 05:33:44 UTC

Transient Heap 用のメモリ確保関数 transient_heap_block_alloc() 内で rb_aligned_malloc() の戻り値のチェックが漏れてたので rb_bug() で異常終了させるように対応しています。

[f5e4063272] 卜部昌平 2019-11-01 06:56:02 UTC

ruby_mimmalloc() の宣言にコンパイラ拡張の attribute __malloc__ があればそれをつけて宣言するようにしています。また ruby_mimmalloc() や malloc(3) の呼び出しの戻り値をチェックしていないところがあったので NULL チェックするように修正しています。

[72f997edf6] 卜部昌平 2019-11-01 07:48:31 UTC

メモリ確保系の関数で NULL を返さない(内部で例外発生による大域脱出をするように処理しているなど)についてコンパイラの拡張 attribute __returns_nonnull__ が使えたらこの attribute で修飾しておくようにしています。

[51825c04db] git 2019-11-01 07:59:02 UTC

version.h の日付更新

[469545307f] Jeremy Evans 2019-10-31 18:29:37 UTC

拡張ライブラリ date で Date.parse に渡した文字列のタイムゾーンに地域を示す略記を使っている時にうまく認識しないことがあるのを修正。どうやらタイムゾーン指定のデータベースが古くなっていた? ようなので bin/update-abbr というスクリプトを追加して最新版をダウンロードして ext/date/zonetab.list を更新できるようにしています。またこれを使って zonetab.h を再生成しています。 [ruby-core:95597] [Bug #16286]

[b2126d3fcf] Jeremy Evans 2019-11-01 03:55:57 UTC

469545307f7b688d0b7a15a5cfd33bcecb775123 で追加した bin/update-abbr の無意味な文が残ってのを削っています。

[6abf4c4802] Nobuyoshi Nakada 2019-11-01 08:24:52 UTC

469545307f7b688d0b7a15a5cfd33bcecb775123 で追加した bin/update-abbr を ext/date/update-abbr に移動して、これを利用して ext/date/zonetab.list を更新する make update-zonetab というターゲットを common.mk に追加しています。

[cc8116b03e] Kazuhiro NISHIYAMA 2019-09-30 09:03:30 UTC

TRICK 2018 の受賞作品の説明 sample/trick2018/05-tompng/remarks.markdowntypo 修正。

[c56d8deaff] Alan Wu 2019-10-24 18:43:04 UTC

MatchData クラスのインスタンスが初期化されてるかチェックする match_check() で発生させる例外のメッセージでクラス名が Match とだけ書かれてたのを MatchData と修正しています。

[b800410387] Justin McNally 2019-10-08 03:04:27 UTC

拡張ライブラリ socket の extconf.rb で SOCKS ライブラリを探す時に libsocksd という名前も探索するようにしています。どの環境向けだろう。

[68e0bfcd4a] Justin McNally 2019-10-08 03:36:22 UTC

b8004103873f4e18bfaefea8e2f540f451c4ae68 の追加修正で libsocks より先に libsocksd の方を先に探すようにしています。

[10c2a08548] Justin McNally 2019-10-08 03:12:17 UTC

拡張ライブラリ socket の SOCKSSocket.new の rdoc 用コメントの説明追加と、第2引数の名前を serv → port に変更しています。

ruby-trunk-changes 2019-10-31

今日は各種ライブラリでの taint フラグの扱いをやめる変更の続きや racc の upstream からのマージなどがありました。

[d3272fcba3] Hiroshi SHIBATA 2019-10-30 12:00:01 UTC

tool/sync_default_gems.rb で racc の upstream のディレクトリ構造変更で JRuby 向け jar ファイルなどが含まれてるのを削除するように対応しています。

[e6d611ad37] Hiroshi SHIBATA 2019-10-30 12:01:30 UTC

racc のテストで racc が生成するソースコードの fixture を生成しなおしています。行末の空白が入るようになったんですね。

[6c3ed0d71c] Hiroshi SHIBATA 2019-10-30 12:36:59 UTC

racc のソースコードの $Id:$ の展開される commit hash を更新しています。

[4c7f789e94] Alan Wu 2019-10-30 00:08:01 UTC

Struct.new に keyword_init: true を渡して作った Class の initialize で2つの引数を渡してもエラーにならない不具合を修正しています。

[5f8795a07b] git 2019-10-30 15:38:16 UTC

version.h の日付更新

[1c03026ea3] Hiroshi SHIBATA 2019-10-30 12:38:55 UTC

racc のテストで minitest のかわりに test/unit を使うようにして assert_output_unchanged という assertion を使っていたところをコメントアウトしていたのを実行するようにしています。 GitHub Actions 上では結果が変わってしまうので実行しないようにしていたりして、結果が安定しなくて大変そう。

[8540efd342] Hiroshi SHIBATA 2019-10-30 13:17:01 UTC

1c03026ea3cd90cbc37eb4c612aca3c6129032c8 でスキップするのは GitHub Actions の時という条件ではなくプラットフォームが Linux の時に変更しています。

[e08f2e47e3] Hiroshi SHIBATA 2019-10-30 21:57:06 UTC

8540efd3429c51682d2d0822935163f0930826b9 の再修正で、Linux の時にスキップするのではなく macOS 以外の時にスキップするように修正しています。元になるテストの fixture が macOS 上で作られたものなんでしょうかね。

[e1bf29314f] Aaron Patterson 2019-10-30 23:28:21 UTC

GC.compact の実装 gc_compact_after_gc() でオブジェクトの移動によってある page にオブジェクトが詰められて空の slot がなくなってしまった場合にその page が free_page のリストに繋がってるのはおかしいので、リストを再構築して一杯になった page は外すようにしています。なのですが次で revert されています。

[79d96b42df] Aaron Patterson 2019-10-31 01:05:32 UTC

e1bf29314feee6aaf535917da0178e868e7ff3fa の gc_compact_after_gc() の変更を revert。

[c38ba75780] Hiroshi SHIBATA 2019-10-31 01:18:57 UTC

tool/sync_default_gems.rb の拡張ライブラリ json の ext/json/depend の変更を無視するのと ext/json/lib/json/pure の内容を削除するようにしています。

[bc7fbb6f02] Martin Dürst 2019-10-31 06:19:59 UTC

NEWS ファイルに Unicode Emoji のバージョン更新について追記しています。

[290903dba0] Jeremy Evans 2019-10-18 19:45:15 UTC

拡張ライブラリ zlib で String の taint フラグの伝播をしているところを削っています。

[b93ab7d693] Jeremy Evans 2019-10-18 19:22:03 UTC

拡張ライブラリ gdbm でも戻り値を taint しているのを削っています。

[39281d5774] Hiroshi SHIBATA 2019-08-03 10:37:07 UTC

拡張ライブラリ gdbm の gemspec ファイルで development dependency を書いてたのを削っています。

[e4cd0d7287] Jeremy Evans 2019-10-18 16:36:11 UTC

標準添付ライブラリ fileutils で不要な untaint 処理を削ってますが、古い ruby 向けの分岐も残しています。

[fce940aac7] glaszig 2019-08-09 00:41:47 UTC

拡張ライブラリ date で Date.new で不正な値に対する例外を ArgumentError から Date::Error という新規追加した ArgumentError を継承した例外を発生させるようにしています。継承してるから互換性の問題は大きくなさそうですね。

[3895e548bd] Jeremy Evans 2019-10-27 01:20:46 UTC

af01edd7d8575f544f647dbe8cde5b6ae535d459 で Date#inspect から暦の種類とかの情報を削ったのを revert しています。

[ebc884461b] Jeremy Evans 2019-10-18 19:39:49 UTC

拡張ライブラリ stringio で taint フラグの伝播処理を削っています。

[473882e01f] Hiroshi SHIBATA 2019-10-31 07:50:00 UTC

rubyspec の stringio の taint フラグの扱いについてのテストを一旦 2.7 以前でのみ実行するようにしています。

[5f6fbf8725] Yusuke Endoh 2019-10-31 08:11:23 UTC

473882e01f7e55753733e2607ace633b5041f11f の rubyspec の guard 追加で do .. end ブロックの do を書き忘れてたところを修正しています。

[d6ed7a984c] Jeremy Evans 2019-10-27 22:23:05 UTC

irb -w オプションをつけると irb 自身というか reline が警告を発するのを修正。未初期化のインスタンス変数の参照の警告が出てたので attr_reader によるメソッド経由でアクセスするようにしています。 [ruby-core:95552] [Bug #16281]

ruby-trunk-changes 2019-10-30

今日は GC.comact 処理中に GC を停止する範囲を少し広げる変更や Unicode Emoji のバージョン更新などがありました。

[fee5cde00b] Nobuyoshi Nakada 2019-10-29 13:39:30 UTC

標準添付ライブラリ tempfile や tmpdir のディレクトリトラバーサル脆弱性(CVE-2018-6914)対策のテストで Windows のドライブレターを削る対策の強化(?)と rubyspec では逆にルートディレクトリまで遡らせようとせず一時ディレクトリの1レベル上に遡るようにしています。

[22dbbbeb32] Aaron Patterson 2019-10-29 15:13:38 UTC

gc_compact_after_gc() でヒープ上でオブジェクトを移動すると各種 st_table の更新を伴なうため GC のトリガーがかかる可能性があるがこのタイミングで GC が走って欲しくないので rb_gc_disable() を呼んで GC 禁止するのを gc_compact_heap() を呼ぶ前に移動しています。

[92c13380e8] git 2019-10-29 15:14:03 UTC

version.h の日付更新

[c54635c08b] Martin Dürst 2019-10-29 23:25:45 UTC

利用する Unicode Emoji のデータファイルのバージョンを 12.1 に更新しています。

ruby-trunk-changes 2019-10-29

今日は GC.compact 関連の修正や、内部的に使う一時オブジェクトの Array や Hash をあらかじめ必要なサイズのバッファを指定して作るようにする最適化などがありました。

[6e0b40af3d] Nobuyoshi Nakada 2019-10-28 09:31:00 UTC

.github/workflows/ の各種ビルドでソースディレクトリ以外でのビルドをするようにしているようです。

[aec16b7540] Aaron Patterson 2019-10-08 00:41:26 UTC

st_table の mark 時に key も value もどちらも pin して GC.compact で移動不可にするようにしています。 Marshal 時の影響で pin が必要になっちゃうみたいです。

[a51583b678] git 2019-10-28 18:19:25 UTC

version.h の日付更新

[339a891c7d] Aaron Patterson 2019-10-08 20:15:44 UTC

RubyVM::InstructionSequence の配列からの構築時に内部的に使う st_table を wrap したオブジェクトの mark 処理に rb_mark_set() を指定して pin するようにしています。mark_st のまちがい? じゃなくて key だけ pin する時の関数ですね。

[bbf3de22b6] Aaron Patterson 2019-10-08 20:35:24 UTC

RubyVM::InstructionSequence#to_a や #disasm で処理中にラベル情報を管理するために確保する st_table をオブジェクトで wrap して rb_mark_set() で mark することで key を pin して GC.compact で移動されないようにしています。

[6147fa82a9] Aaron Patterson 2019-10-14 21:52:58 UTC

Continuation の GC.compact 対応で rb_context_t から self でオブジェクト自体を逆参照していたものを GC.compact の移動に追随させるように修正しています。

[60a7f9f446] Aaron Patterson 2019-10-17 18:37:32 UTC

finalizer のリストを linked list で管理していたのを Array オブジェクトを使って管理することで実行中に mark されるようにしています。

[da3774e5eb] Aaron Patterson 2019-10-28 23:14:50 UTC

と思ったら 60a7f9f446604571f8a81499080c57c47baf0e6b は revert しています。 finalizer 対象のオブジェクトを通常のオブジェクトから参照すると T_ZOMBIE に変更されたオブジェクトを参照することになって GC の mark 処理で assertion にひっかかるため。

[b4229c0a90] Nobuyoshi Nakada 2019-10-28 23:58:39 UTC

後置 in の記法 expr in key で右辺がキーワード引数の時に、さらにその後の同じ行に(?)キーワード引数があり、さらにそのキーと値の間に改行が含まれていた時文法エラーになっていたのを修正。

[0547627705] aycabta 2019-10-29 01:34:32 UTC

標準添付ライブラリ reline のバージョンを 0.0.4 に更新。

[65744fb19e] Lourens Naudé 2019-10-21 21:31:44 UTC

compile.c の関数マクロ DECL_BRANCH_BASE() で一時バッファとして rb_ary_tmp_new() で確保する配列は要素数5まで使うとわかっているので最初から capa 5 で確保するようにしています。

[4480d68931] Lourens Naudé 2019-10-21 22:28:41 UTC

iseq.c の make_compile_option_value() で一時的に使う Hash も rb_hash_new_with_size() で要素数 11 ぶんのバッファを確保するようにしています。

[0e68913f81] Lourens Naudé 2019-10-21 22:31:46 UTC

Enumerator::Lazy#to_enum に Symbol を渡した時の不具合修正として a7d7a0df91805e59fe6b383ea7ecdad509222966 で InitVM_Enumerator() で Enumerable への alias を生成するために作る Hash オブジェクトもあらかじめ必要な数の要素数のバッファを指定して作るようにしています。しかしこの数は今後変化しそうだなぁ。

[0095362918] Lourens Naudé 2019-10-21 22:49:54 UTC

vm.c の vm_default_params() でも一時的に使う Hash オブジェクトをあらかじめ 4要素で作っておくようにしています。

[fecaa6e946] Lourens Naudé 2019-10-21 23:03:05 UTC

vm_backtrace.c の backtrace_collect() でも一時的に使う配列の capa をあらかじめわかっている要素数にあわせて作るようにしています。

[85b88c1d89] Lourens Naudé 2019-10-21 23:18:37 UTC

class.c の class_instance_method_list() および rb_obj_singleton_methods() でもあらかじめわかっているメソッド数ぶんの capa で配列を作成するようにしています。

[b86e5c9fec] John Hawthorn 2019-10-29 00:24:07 UTC

コンパイラの拡張 attribute の __nonnull__ が使える時に rb_funcallv() を rb_funcallv_with_cc() を使って呼び元での call cache を有効にする preprocessor 分岐を clang でも有効にしています。

[54eb51d72b] Nobuyoshi Nakada 2019-10-29 03:12:07 UTC

b86e5c9fec9d9ea0f9c70d9b20456680607399b3 のチェック clang かどうかとか gcc のバージョンによって判定するのではなく configure 時に __nonnull__ が使えるかどうかより具体的にチェックするようにしています。

[b4da6fc1c2] aycabta 2019-10-26 17:28:25 UTC

標準添付ライブラリ rdoc のテストで skip のかわりに test-unit の omit を使うようにしています。

[c8ce37d427] aycabta 2019-10-27 16:44:09 UTC

標準添付ライブラリ rdoc のオプションで指定するファイルパスで Windows 環境で異なるドライブレターのファイルパスをサポートしているらしい。ちょっと差分をみてもよくわからない。

[9525541d02] aycabta 2019-10-28 04:39:37 UTC

標準添付ライブラリ rdoc のテストで生成したファイルパスを Windows の long path に変更する(Windows のファイル名は8文字に切り詰める short path というのが別名みたいにあって、どうも File.expand_path ではそっちの名前になってしまうらしい)ため Dir.glob を一度通すようにしています。うへー。

[ca5812fe45] Yusuke Endoh 2019-10-29 03:57:31 UTC

b4da6fc1c277190bbd10e795ebf3be45772038e8 の rdoc のテストで omit を使うようにした変更を revert。 make test-all でも minitest が使われる(あれ、そうだっけ)ので omit は使えなかったため。

[1820aeeeb2] Yusuke Endoh 2019-10-29 04:15:09 UTC

tool/lib/minitest/unit.rb で skip の alias として omit を追加しています。

[79a7fd9120] Yusuke Endoh 2019-10-29 04:16:31 UTC

ということで b4da6fc1c277190bbd10e795ebf3be45772038e8 を revert した ca5812fe4516a10cc687281f9e47e1a08449f1ab を revert して、やっぱり rdoc のテストで omit を使うようにしています。

[7bf51ced55] Yusuke Endoh 2019-10-29 05:34:31 UTC

rubygems のテストで一時ディレクトリに Gemfile があるとうまくテストが動かないのでファイル先頭でこのファイルが存在しないかチェックして、存在してたらトップレベルで例外を起こしてすぐ終わらせるようにしています。

[9195ed18ca] 卜部昌平 2019-10-29 07:05:39 UTC

54eb51d72bc43f90b595f0d7ffb5069ebf1a56d9 の configure でコンパイラ拡張の attribute __nonnull__ が使えるかどうかチェックするようにした影響で Windows でのビルドがエラーになってたそうなので revert しています。

[ad4da86669] Nobuyoshi Nakada 2019-10-29 03:12:07 UTC

54eb51d72bc43f90b595f0d7ffb5069ebf1a56d9 のリトライ。 include/ruby/defines.h に fallback 用マクロ RUBY_FUNC_NONNULL() の定義を追加しています。

ruby-trunk-changes 2019-10-28

今日は protected メソッドのキーワード引数の変換の不具合修正などがありました。

[d8d581bfc4] Koichi Sasada 2019-10-28 03:19:18 UTC

thread_sync.c の rb_mutex_owned_p() からメインのロック保持チェック部分を mutex_owned_p() という関数に切り出し、do_mutex_lock() から最後に抜ける直前にカレントスレッドが mutex を保持した状態になってるかチェックして不正だったら rb_bug() で異常終了するようにしています。デバッグのためかな。

[a72cb6b11d] git 2019-10-28 03:20:36 UTC

version.h の日付更新

[cc5580f175] 卜部昌平 2019-10-28 05:36:28 UTC

protected として定義されたメソッドの通常引数にキーワード引数から Hash に変換されたオブジェクトを渡す呼び方ができなくなっていた不具合を修正しています。

[3e83f1f00a] Kazuhiro NISHIYAMA 2019-10-28 06:34:42 UTC

GitHub Actions WindowsUbuntu の設定で Slack 通知のメッセージに build matrix の OS 情報も含めるようにしています。

[07b5fec008] Nobuyoshi Nakada 2019-10-28 09:15:12 UTC

make clean-local で MJIT 用の生成ヘッダファイルとタイムスタンプディレクトリも削除するようにしています。

[48f982aba7] Nobuyoshi Nakada 2019-10-28 10:14:38 UTC

tool/test-bundled-gems.rb がソースディレクトリで実行されることを前提としたコマンドライン構築をしていたのでファイルからの相対パスで gem のディレクトリを取得するようにしています。