ruby-trunk-changes 2020-01-11

今日は Windows 環境での潜在的? 不具合修正や thread local storage の実装のリファクタリングなどがありました。

[db0398dc04] 卜部昌平 2020-01-10 06:16:48 UTC

internal/bits.h の Windows 環境のチェックのために参照しているマクロの _Win64 → _WIN64typo 修正と nlz_int128() で参照する変数を間違えてた不具合修正。

[7fed7eb50b] 卜部昌平 2020-01-10 10:24:59 UTC

同じく internal/bits.h の Windows 向け実装の不具合修正。

[79dcd26aec] 卜部昌平 2020-01-09 06:13:52 UTC

同じく internal/bits.h で Windows 環境でのコンパイラバージョンのチェックのため MSC_VERSION_SINCE() を使うように変更していいます。

[13064fe5db] 卜部昌平 2020-01-09 07:50:59 UTC

C の規格でビット論理和で論理シフトの幅が大きすぎる時の未定義のケースが internal/bits.h にあったのを修正するため _rotr()/_rotr64()/_lrotr() などの組み込み関数? が利用できたらこれを使うようにしています。

[135b533e84] 卜部昌平 2020-01-10 11:29:24 UTC

internal/compilers.h に GCC 以外の時に #include "ruby/ruby.h" を追加しています。分岐のもう一方でも同じようなマクロを参照しているけどそっちはいらないのかな。

[1b4d406e3a] Nobuyoshi Nakada 2020-01-10 12:26:43 UTC

Hash#transform_values が返す Hash が元の Hash のデフォルト値の Proc オブジェクトを共有してしまうのを抑制してリセットするようにしています。 [ruby-core:96759] [Bug #16498]

[7693897a11] Nobuyoshi Nakada 2020-01-10 12:48:20 UTC

1b4d406e3a04032b6d01e92b6d184a16945c6ac3 の続きで、追加した hash_copy() を rb_hash_s_create() でも利用するようにリファクタリングしています。

[e04366056a] Hiroshi SHIBATA 2020-01-10 13:56:46 UTC

tool/sync_default_gems.rb で参照する bundler のリポジトリGitHub の bundler/bundler から rubygems/bundler に変更しています。統合されたんですね。

[b53d8230f1] Hiroshi SHIBATA 2020-01-10 13:57:20 UTC

doc/maintainers.rdoc に記述されている benchmark の upstream を bundler/benchmark から ruby/benchmark に修正しています。間違ってたっぽい。

[40c57ad4a1] Lourens Naudé 2020-01-04 00:45:58 UTC

Thread#[] や Thread#[]= でアクセスする thread local storage の実装を通常の st_table から id_table にして Symbol の ID でアクセスするようにしています。thread local storage のキーって常に Symbol なんだったっけ。

[52a9e4ffd3] git 2020-01-11 01:40:57 UTC

version.h の日付更新

[8bb24712de] Nobuyoshi Nakada 2020-01-11 01:14:53 UTC

String#encode のテストに改行コードの変換についてのテストケースを追加しています。

[eb737916b1] Nobuyoshi Nakada 2020-01-11 01:19:29 UTC

String#encode の newline オプションが xxxx_newline: true と同時に指定されてたら警告するようにしています。

[7584853cfe] Nobuyoshi Nakada 2020-01-11 01:43:39 UTC

thread.c の st_delete_wrap() という inline 関数はもう未使用になっているので削除しています。

[e62aead269] Kazuhiro NISHIYAMA 2020-01-11 07:24:16 UTC

GitHub Actions のリポジトリを cloneするための job で git clone に --branch オプションをつけるようにしています。

[012f297311] Nobuyoshi Nakada 2020-01-11 07:32:56 UTC

ffdef3674af921d7ddd550dc492dcdbed97f7ba5 で Marshal.dump で "E" という名前の隠しインスタンス変数として Encoding 情報をダンプするため、もし本当に "E" というインスタンス変数が定義されてたら警告を出すようにしていましたが、そこで "E" という名前を直接書かずに name_s_encoding_short というマクロを参照するようにしています。

ruby-trunk-changes 2020-01-10

今日は Random の内部状態がメモリにコピーされた後をクリアして残らないようにする変更や URI.decode/URI.encode を使った時の警告メッセージの修正などがありました。

[661e07c97e] Nobuyoshi Nakada 2020-01-09 10:08:54 UTC

マクロ rb_define_method_if_constexpr() の定義を include/ruby/ruby.h から include/ruby/intern.h に移動して HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P が定義されてる時だけ定義するようにしています。

[4c5eac7323] Nobuyoshi Nakada 2020-01-09 12:39:12 UTC

random.c の関数 init_seed() も 23fbee0311d34da4f623a828bf0c015a90d8edc9 と同様にまぎらわしいので init_hash_salt() に改名しています。

[c6b26f5ccf] Yusuke Endoh 2020-01-09 14:52:01 UTC

io.c と ruby.c に #include "internal/variable.h" を追加しています。 emscripten で WASM にビルドするのに必要だったとのこと。

[d3b28ebc7a] Jeremy Evans 2020-01-09 21:09:06 UTC

URI.escape と URI.unescape の deprecated 警告メッセージで alias 経由で呼ばれた時にメッセージ内のメソッド名も変更するため __callee__ を参照するようにしています。 URI.encode/URI.decode を呼んだ時のため。 [ruby-dev:50907] [Bug #16469]

[5bdc6a0123] git 2020-01-09 21:11:12 UTC

version.h の日付更新

[54e31f4a5f] Nobuyoshi Nakada 2020-01-10 00:09:39 UTC

io.c と ruby.c のヘッダ追加による依存関係追加。

[499de0a0f6] Nobuyoshi Nakada 2020-01-08 14:21:42 UTC

random.c の初期化関数 Init_RandomSeedCore() で hash_salt に初期値を詰めるのに init_hash_salt() で MT(メルセンヌツイスター)を使う前に fill_random_bytes() でもっと質の良い? 乱数ソースを試してみてこれが失敗した時だけ init_hash_salt() を使うようにしています。

[0a67c21401] Nobuyoshi Nakada 2020-01-08 15:27:29 UTC

Random の実装で seed のデータを参照する都度その変数などをクリアしてメモリ上に情報が残らないようにしています。なるほどー。

ruby-trunk-changes 2020-01-09

今日は net/imap のブロックなし Proc.newが残ってたために出ていた警告の抑制などがありました。

[f74021e12b] Marcus Stollsteimer 2020-01-08 19:47:10 UTC

String#=~ の rdoc 用コメントの markup の修正と名前つき capture のある正規表現を引数(右辺値)に渡した時の挙動についての追記。へー、右辺値の時はローカル変数への代入が抑制されるのか。

[841a945d63] git 2020-01-08 19:51:11 UTC

version.h の日付更新

[1d09acd82b] Marcus Stollsteimer 2020-01-08 19:53:31 UTC

String#match の rdoc 用コメントの markup の修正や英文の修正。

[65c2c75e16] Yusuke Endoh 2020-01-08 23:21:42 UTC

標準添付ライブラリ net/imap にブロックなしの Proc.new で渡されたブロックを capture する手法が使われていたのでこれを使わないように書きかえて警告を抑制しています。 [ruby-core:96718] [Bug #16488]

[d254d5563e] Nobuyoshi Nakada 2020-01-08 12:39:39 UTC

tool/lib/vcs.rb の Kernel#open のかわりに File.open を使うようにする変更と IO.copy_stream に渡すためにわざわざファイルを open してたのをファイルパスを直接引数に渡すようにする変更。

[b369f5e8a2] Nobuyoshi Nakada 2020-01-09 01:13:08 UTC

0eeed5bcc5530edb0af2af2ccff09d067c59e8f9 の Kernel#eval 内での __FILE__ の参照の警告をやめたのに追随して eval 内の __dir__ の参照のテストも修正しています。

[b0e9db65c3] Nobuyoshi Nakada 2020-01-09 06:57:10 UTC

rubyspec の Process.gid のテストで macOS 上での id コマンドの出力を /usr/bin/id の結果も追加するようにしています。 HomeBrew などで入れた GNU coreutils の id では macOS では完全なリストが出ないみたいです。

[97485302db] Nobuyoshi Nakada 2020-01-08 14:55:40 UTC

random.c の初期化関数 Init_RandomSeedCore() で変数 mt の内容をゼロクリアするようにしています。けどこの変数は自動変数で、static もついていないし関数の最後でクリアしてるのはなんでかなと思いましたが、乱数の seed を決めるのに使ったものなので値がスタック上に残って漏れてしまわないようにってことみたいですね。

[23fbee0311] Nobuyoshi Nakada 2020-01-09 08:26:01 UTC

random.c の構造体 seed_keys_t を hash_salt_t、static 変数名 seed を hash_salt と改名しています。

ruby-trunk-changes 2020-01-08

今日は Hash のデフォルト値を決めるために Hash.new のブロックとして Proc オブジェクトで指定したものを呼び出す時の最適化などがありました。

[beb59c3b45] Kazuhiro NISHIYAMA 2020-01-08 03:26:48 UTC

標準添付ライブラリ drb のテストで BO というクラスのインスタンスを返すメソッドでオブジェクトを変数などに格納していなかったので GC で回収されてしまう可能性があったのを修正しています。ここまで見逃されてたとは。

[f518b608d6] git 2020-01-08 03:30:37 UTC

version.h の日付更新

[13f4f07f21] Hiroshi SHIBATA 2020-01-08 07:11:52 UTC

bundler に upstream から 2.1.4 をマージしています。

[592d7ceeeb] Lourens Naudé 2020-01-08 00:19:26 UTC

Hash のデフォルト値を決めるのに default_proc に登録されている Proc を起動するのに yield メソッドを rb_funcall() で起動していたのを rb_proc_call_with_block() を直接呼ぶようにしてちょっと効率的にしています。そして関連するベンチマークを追加しています。

[b8fa18079d] Nobuyoshi Nakada 2020-01-08 09:12:21 UTC

592d7ceeebb380d197876400efdb18a27d5192b5 のインデントの修正。

[5b06dd3a42] Nobuyoshi Nakada 2020-01-08 09:13:35 UTC

592d7ceeebb380d197876400efdb18a27d5192b5 の default_proc の Proc の呼び出しの処理は rb_hash_default() にも存在したので共通部分を call_default_proc() という関数に切り出しています。

[23218d4ab2] Nobuyoshi Nakada 2020-01-08 09:35:21 UTC

config.status から config.cache への依存関係を追加しています。 Makefile の wildcard 関数を使ってるのはファイルが存在しない時に依存しないようにするためかな。

ruby-trunk-changes 2020-01-07

今日は標準添付ライブラリ reline の .inputrc での変数 history-size の処理の修正やインスタンス変数用のテーブルのメモリ確保戦略の変更などがありました。

[7392083c2f] aycabta 2020-01-06 12:50:48 UTC

標準添付ライブラリ reline の .inputrc の処理で変数名 history-size がうまく処理できてなかった(数値としてセットできなかった)のを修正しています。うむ、これはやく欲しい。

[e92bebb0c5] Yusuke Endoh 2020-01-06 16:33:30 UTC

test/ruby/test_keyword.rb と test/ruby/test_object.rb の未使用の変数削除とメソッド再定義の警告除去のため remove_method 追加などテストの警告除去。

[95d23f36ff] git 2020-01-06 16:40:26 UTC

version.h の日付更新

[b0bf654c31] Aaron Patterson 2019-07-02 09:33:40 UTC

インスタンス変数用テーブルの更新時にサイズを変更する時にそのインスタンスでまだ使っていないインスタンス変数のぶんもあらかじめ必要になると見込んでクラスの index_tbl のサイズぶん確保しておくようにしています。メモリ使用量は増える可能性はあるけどインスタンス変数を新しくセットする都度 realloc するオーバーヘッドを減らせるので常識的な使い方であればメモリ使用量もそれほど増えず速度を改善できるという見込みでしょうね。

[f132825ffa] Jun Aruga 2020-01-07 03:23:04 UTC

Travis-CI の s390x の環境でのテストで先に sysctl を実行してネットワーク設定の IPv6 を無効にしておくようにしています。テスト自体じゃなくて apt-add-repository がタイムアウトするからとのこと。 https://github.com/ruby/ruby/pull/2819

ruby-trunk-changes 2020-01-06

今日は json の rdoc 用コメントの修正や reline の修正などがありました。

[da028a4fbf] aycabta 2020-01-05 13:46:35 UTC

標準添付ライブラリ reline の Reline::ANSI.retrieve_keybuffer で read_nonblock が EOFError を発生させた時に無視するようにしています。これは Ctrl-D で EOF 送出できるのでこれで異常終了しないようにするためのようです。

[439e1ccd08] aycabta 2020-01-05 16:20:24 UTC

標準添付ライブラリ reline の補完時の自動インデントの不具合を修正。この変更でなぜこう直るのかさっぱりだ。

[46845d03c2] git 2020-01-05 16:24:34 UTC

version.h の日付更新

[ce072fe568] Koichi Sasada 2020-01-06 02:36:51 UTC

TracePoint で eval に文字列を渡した時の compiled イベントの発火が SyntaxError が発生した時にも呼ばれてしまって NULL 参照により SEGV する不具合を修正。SyntaxError 発生時にはイベント発生させないようにしています。 [ruby-core:96529] [Bug #16459]

[33d866558b] Koichi Sasada 2020-01-06 06:06:03 UTC

53a55aeff3d409b4894d077f2b3b874fac53e387 で環境変数 RUBY_ON_BUG が設定されていると rb_bug() で異常終了する時に自分の pid で gdb などデバッガを起動して attach するという機能を呼び出すのを bug_report_begin_valist() 内から rb_vm_bugreport() に移動しています。 rb_assert_failure() からも呼ばれるようにするためとのこと。

[1658e6b5db] Jeremy Evans 2019-08-26 00:21:02 UTC

拡張ライブラリ jsonJSON モジュールの rdoc 用コメントから JSON.generate が Hash や Array のエンコードしか対応していないという古い記述が残ってたのを消しています。

[2e5ef30cb9] zverok 2018-03-08 15:32:36 UTC

同じく jsonJSON モジュールの rdoc 用コメントの整形と JSON.generate のオプションについて追記しています。けど 1658e6b5db0380c39d2423281e10acc5b6c6a8bd で消した記述が復活しているけどこれはいいのかな。

[41ef6df8c9] zverok 2019-12-29 20:55:23 UTC

JSON モジュールの rdoc 用コメントのサンプルの記述の整形。

[7f1e3a7b7c] zverok 2018-03-08 18:32:00 UTC

拡張ライブラリ json に内部的モジュールやクラスの rdoc 用コメントに :nodoc: タグをつけてドキュメント化を抑制する変更。

[8cd292f519] Takashi Kokubun 2020-01-06 09:42:30 UTC

GitHub Actions でリポジトリを clone するのにブランチ名や SHA hash を得るのに環境変数を経由せずに直接 github.event.〜 のような変数? を参照するようにしています。また MinGW 版で標準のチェックアウト用アクションを使ってたのをやっぱり独自に git コマンドを叩く方法に変更しています。

[e3aca28970] Takashi Kokubun 2020-01-06 09:45:47 UTC

8c9450e7b875db846b19cc631af0d7fee66db5c6 の変更の影響で fork したリポジトリでも GitHub Actions が動くようになった? のでリポジトリ名を ruby/ruby に固定せず github.repository 変数を参照するように修正しています。

[e44e3716d0] Takashi Kokubun 2020-01-06 09:52:19 UTC

GitHub Actions のリポジトリを clone する job の名称を変更しています。

ruby-trunk-changes 2020-01-05

今日は reline の補完候補をソートしておく修正やキーワード引数の変更に伴なう不要な変数や構造体メンバーの削除などのリファクタリングがありました。

[ce4d167778] Kazuhiro NISHIYAMA 2020-01-04 15:52:43 UTC

TracePoint#enable の rdoc 用コメントのサンプルコードの出力結果の表示の行番号が間違っていたのを修正しています。

[ded072c2b7] git 2020-01-04 15:53:22 UTC

version.h の日付更新

[9b928fa443] KOBAYASHI Shuji 2019-12-27 04:41:22 UTC

標準添付ライブラリ reline の Reline::LineEditor のタブ補完の処理で候補を辞書順にソートしておくようにして候補の表示がきれいになるようにしています。

[c7f01d889b] Yusuke Endoh 2020-01-05 02:33:40 UTC

C 実装のメソッドの引数を処理する inline 関数 rb_scan_args_set() で beae6cbf0fd8b6619e5212552de98022d4c4d4d4 のキーワード引数の仕様の 3.0 向けの変更で last_idx という変数が不要になった(常に -1 のままになったので変数である必要がなくなった)ので削除しています。 Coverity Scan がみつけてくれたそうです。こういうのも指摘してくれるのか。

[44a164c26f] Yusuke Endoh 2020-01-05 02:36:10 UTC

さらに beae6cbf0fd8b6619e5212552de98022d4c4d4d4 のキーワード引数の変更で rb_scan_args_set() の tmp_buffer という変数も未使用(正確には 0 を代入したまま使われないため解放する分岐に入ることがなくなった)ので削除しています。これも Coverity Scan の指摘とのこと。

[5b0c3754d8] Yusuke Endoh 2020-01-05 02:37:40 UTC

parse.y の vtable_free_gen() で ruby_sized_xfree() に渡すサイズの指定が間違っていたのを修正。

[787c6d591a] Kazuhiro NISHIYAMA 2020-01-05 02:52:39 UTC

c7f01d889becbeffc4254e1b0b7faecb80ea3f3e と同様に class.c の構造体 struct rb_scan_args_t の last_idx メンバーも削除しています。

[c7af1e432a] Kazuhiro NISHIYAMA 2020-01-05 03:25:24 UTC

44a164c26f5371519636585d8ba7aa59f489442e と同様に class.c の構造体 struct rb_scan_args_t のメンバー tmp_buffer も削除しています。

[54fd50c951] zverok 2020-01-02 22:02:26 UTC

標準添付ライブラリ ostruct の require_relative の位置をrdoc 用コメントの上に移動して正しく OpenStruct クラスのドキュメントになるようにしています。