ruby-trunk-changes 2020-03-08

今日は libffi のダウンロード元の再修正と無引数の String#split を使わないようにする修正などがありました。

[47a1872cd8] Hiroshi SHIBATA 2020-03-07 11:42:44 UTC

86022167461dc90b70164e2bb233 の追加修正で libffi のダウンロード元をやっぱり ftp.osuosl.org というドメインのところから取得するようにしています。checksum が元に戻っているので完全に元のと一致しているようですね。

[2b6ec768fc] David Rodríguez 2020-03-08 01:18:53 UTC

tool/rbinstall.rb の修正。 Gem.ensure_gem_subdirectories への mode 引数の渡しかたの間違い(キーワード引数/オプション引数としてでなく通常の引数として渡す)や Gem.default_specifications_dir を利用するようにするリファクタリングなど。 https://github.com/ruby/ruby/pull/2930

[53efe63280] git 2020-03-08 01:19:18 UTC

version.h の日付更新

[2b7409a2f2] Nobuyoshi Nakada 2020-03-08 08:38:37 UTC

標準添付ライブラリやツール類などリポジトリに含まれてる .rb で String#split を無引数で呼んでいるものを明示的に空白文字(" ")を指定するようにしています。 $; の設定の影響を受けないようにするためとのこと。

[daa04c5562] Nobuyoshi Nakada 2020-03-08 08:39:22 UTC

C APIのテスト test/-ext-/string/test_normalize.rb で文字列リテラルを split して使ってたところを %W による配列リテラル記法を使うように書き直しています。

ruby-trunk-changes 2020-03-07

今日は標準添付ライブラリ prime の不具合修正などがありました。

[e79fc05a4c] Jeremy Evans 2019-08-11 20:14:38 UTC

Prime に Module#include? を呼び出すと無限ループ状態に陥る(おそらく Prime に Enumearble が include されていて、Prime#each が素数をどこまでも数え上げるため)のを回避するため Prime#include? メソッドを定義して引数が Integer の時は prime? に委譲して、Module だった場合は Module#include? を UnboundMethod を取り出して bind することで呼ぶようにして回避しています。 [ruby-core:64546] [Bug #10167]

[f236f6082c] Marcus Stollsteimer 2019-12-25 19:01:03 UTC

e79fc05a4ca672816c6b737d00a85fea4aa6c2b7 の Prime#include? の rdoc 用コメントの文法や typo の修正。

[e92fbaf609] Marcus Stollsteimer 2019-12-27 18:47:04 UTC

Prime クラスの rdoc 用コメントの typo 修正。

[baaf681570] Marcus Stollsteimer 2019-12-27 19:19:37 UTC

標準添付ライブラリprime の rdoc 用コメントのサンプル追加や文法の修正。

[0256e4f0f5] Yusuke Endoh 2020-03-06 12:32:42 UTC

Thread を新規作成する時に sigaltstack を確保するために xmalloc() を呼び、そこでGCが発生してしまうとまだ ruby のThread として動くための準備が完了していないので abort が発生してしまうという不具合があったので、このメモリ領域の確保を rb_register_sigaltstack() の中から rb_allocate_sigaltstack() にまで釣り出して引数で渡すようにしています。

[87ad5ea729] Takashi Kokubun 2020-03-06 17:38:55 UTC

FreeBSD 12 と RHEL 8 では MJIT のテストは skip するようにしています。

[44462d3206] git 2020-03-06 17:39:19 UTC

version.h の日付更新

[4c019f5a62] Koichi Sasada 2020-03-06 18:32:15 UTC

Hash の要素数が少ない時のテーブルによる実装になっているものに hash メソッドを呼ぶと st_table による実装に切り替えられる場合があり(なんでだっけ)、その場合 array hash 向けの処理の途中で st_table 向けの実装に切り替えないといけないことがあるので、RHASH_AR_TABLE_P() をチェックして分岐するようにしています。 [ruby-core:97383] [Bug #16676]

[c3584dfacc] Koichi Sasada 2020-03-06 18:55:54 UTC

4c019f5a626523e99e2827ed917802e3097c380d の変更によりすでに st_table 実装に切り替わってる Hash オブジェクトに対して ar_try_convert_table() を呼ぶ場合がでてきて、この中で array hash 実装であることをチェックする assertion のあるマクロが使われているので、その前に RHASH_AR_TABLE_P() でチェックして既に st_table だったらすぐ return するようにしています。

[f991340e07] Jeremy Evans 2020-03-06 21:03:58 UTC

Kernel#global_variables の rdoc 用コメントと doc/syntax/miscellaneous.rdoc の defined? の説明に正規表現のマッチ後の thread local な特殊変数の扱いについて追記しています。global_variables は $1 とかは含まないんですね。 [ruby-core:69731] [Bug #11304]

[9745e90197] Takashi Kokubun 2020-03-07 04:19:56 UTC

87ad5ea729735ff6b8f1ac0bb3aad2aedd6f716e の追加で FreeBSD 12 と RHEL 8 での MJIT のテストの skip を test/lib/jit_support.rb の JITSupport.supported? メソッドの実装に移動することで全ての MJIT を使うテストに影響するようにしています。

[fcd605020b] Kazuhiro NISHIYAMA 2020-03-07 04:49:28 UTC

rubyspec のテストの説明文の typo 修正。

[65aa68b009] Takashi Kokubun 2020-03-07 07:46:55 UTC

AppVeyor の設定にエラー時の Slack への通知を追加しています。

[108f7536b3] Nobuyoshi Nakada 2020-03-07 07:41:19 UTC

標準添付ライブラリ net/smtp でレスポンス行を chomp してからsplit してたのを chomp を削っています。コミットログによると split を無引数、または空白文字を渡して呼ぶと自動的に末尾の改行コードを取り除くので不要だということ。そういえばそんな仕様があったような気もする。ほかにもテストや rubyspec でも同様の変更をしています。

[b9d45d3ac0] Takashi Kokubun 2020-03-07 08:16:21 UTC

.travis.yml にもエラー時の Slack? (secure 化されてて URL はわからない)通知を追加しています。

[f9f3510e64] Takashi Kokubun 2020-03-07 08:34:41 UTC

GitHub Actions の各種アクションにも新規に Slack 通知を追加しています。通知先を増やしてるのかな。

[ada2f71c70] 卜部昌平 2020-03-07 09:58:58 UTC

e91c39f1c0f7d5e670266d9593d533fd444957f6 で safe level の操作の C API を消した時に rb_check_safe_obj() の宣言を include/ruby/ruby.h から削除しています。

[8602216746] Hiroshi SHIBATA 2020-03-07 10:57:28 UTC

ext/fiddle/extlibs の同梱版 libffi のダウンロード元を GitHub に変更しています。

ruby-trunk-changes 2020-03-06

今日は pp のテストの JRuby 対応(おそらく)だけでした。

[e57dd8c2b5] Charles Oliver Nutter 2020-03-05 22:48:52 UTC

標準添付ライブラリ pp のテストで RubyVM::AbstractSyntaxTree を利用しているものがあるので CRuby 以外の実装の対応のため defined?(RubyVM) でチェックしてから定義するようにしています。

[2630757fb5] git 2020-03-05 22:49:50 UTC

version.h の日付更新

ruby-trunk-changes 2020-03-05

今日は fidle のテストやビルドの修正などがありました。

[502d9bcd36] Nobuyoshi Nakada 2020-03-04 12:00:17 UTC

拡張ライブラリ fiddle のテストで Fiddle::Function.new に渡すポインタを "rb_obj_frozen" という関数名で取り出してたのを rb_obj_frozen_p に修正しています。こんな名前存在してなかったと。なんでエラーにならなかったんだろう。TypeError を rescue してたから遮蔽されてたのかな。

[364526cd70] Nobuyoshi Nakada 2020-03-04 12:02:24 UTC

mjit_worker.c で(誤検出の)警告を抑制するため free(3) に渡すポインタを一度ローカル変数に代入するようにしています。

[5bb80b76b0] Nobuyoshi Nakada 2020-03-04 14:13:18 UTC

mingw でのコンパイラの警告抑制のため変数の初期化を追加しています。

[528a3a1797] Nobuyoshi Nakada 2020-03-04 14:13:45 UTC

95f387f61a4a4ea92635da760b7de5b1e09bb84e の fiddle の extconf.rb で ffi_closure_alloc() の存在チェックを同梱されてる libffi を使う時に省略する変更を revert して libffi のバージョンを元にして判定するように変更しています。

[f08cd708b1] Nobuyoshi Nakada 2020-03-04 14:26:57 UTC

net/http のテストで Net::HTTP#finish の呼び出しが漏れてたのを修正しています。

[261569d4aa] Nobuyoshi Nakada 2020-03-05 02:31:08 UTC

528a3a17977aa1843a26630c96635c3cb161e729 の fiddle での ffi_closure_alloc() の利用チェックを libffi のバージョンによらず mswin および mingw でも ffi_closure_allloc() があるものとして扱うようにしています。

[740511834f] git 2020-03-05 02:31:57 UTC

version.h の日付更新

[43a3c88187] Nobuyoshi Nakada 2020-03-05 03:00:50 UTC

win32/Makefile.sub で生成する config.h でマクロ _INTEGRAL_MAX_BITS を定義する時に #ifndef で既に定義済みなら上書きしないようにしています。 mswin では同名のマクロが定義済みのようなのでその警告抑制のためとのこと。

[e4a9e926f0] Nobuyoshi Nakada 2020-03-05 04:31:25 UTC

261569d4aac440f25de588cca365163ecf1124a2 で mingw 環境かどうか判定するのに参照する変数名が間違ってたので修正。

[7d05f98a84] Nobuyoshi Nakada 2020-03-03 08:58:19 UTC

20a2ab0825b7e441e303002f0feeb1b643198ffc で parse.y の struct parser_params から切り出した struct lex_flags を struct lex_context と改名しています。またメンバー名にも "in_" という prefix を追加しています。

[17d5efa4fe] Yusuke Endoh 2020-03-05 09:24:46 UTC

rubyspec の Process.exec のプログラム名にディレクトリのパスを渡した時のテストで OpenBSD のみエラー内容が違うということで分けていたのを一本化しています。 CI で他の環境と同じエラーが発生するように変わったみたです。

ruby-trunk-changes 2020-03-04

今日は GC のテストがたまにエラーになる事象の対策などがありました。

[501f2c44e6] Yusuke Endoh 2020-03-03 11:54:31 UTC

c8d0bf0156878df03a71fffc97c44abf7333d5d7 で pattern match のテストに追加したパターンでまた未参照のローカル変数警告が出てたので "_" で始まる変数への代入で抑制しています。

[43ed4eb6d1] Yusuke Endoh 2020-03-03 12:00:03 UTC

1ad9364440f6685d2df3b855f5e22f644e9f1f43 で tool/lib/leakchecker.rb に追加したデバッグ用の GC.verify_internal_consistency の呼び出しを i386-solaris のみに範囲を狭めています。

[03f9e8746e] Charles Oliver Nutter 2020-02-23 20:49:26 UTC

test/ruby/test_settracefunc.rb の setup/teardown の RubyVM::InstructionSequence.compile_option の設定と復旧に defined?(RubyVM) のチェックを追加しています。このテストは JRuby も利用しているからかな。

[14dd377e51] git 2020-03-03 15:11:35 UTC

version.h の日付更新

[cf52f37cae] Koichi Sasada 2020-03-04 02:25:43 UTC

43ed4eb6d1cbbd31de2c98ae515630ee8f988c1e で対象を i386-solaris に絞った tool/lib/leakchecker.rb のデバッグ用コードをさらにテスト名に TestGem が含まれる時だけに絞っています。

[6e271e4cbb] Koichi Sasada 2020-03-04 02:31:07 UTC

というわけで(?) GC.start(full_mark: false) のテストでその前に一度 GC.start を明示的に実行しておくようにしています。次の GC を極力 minor GC にするためとのこと。これでも確実ではないようですけど。

[02705b27be] Koichi Sasada 2020-03-04 02:33:55 UTC

6e271e4cbbe6a8bc4d4f75dc553ce054eae7af00 と同様に GC.latest_gc_info のテストでもターゲットの GC.start の前に一度 GC.start を実行しておくようにしています。コメントないとこれうっかり重複として消してしまいそう。

[ce586107d8] Koichi Sasada 2020-03-04 02:36:34 UTC

6e271e4cbbe6a8bc4d4f75dc553ce054eae7af00 で assertion に追加してた msg はそんな変数はなかったので削っています。

[97fa6468dc] 卜部昌平 2020-03-02 02:20:50 UTC

マクロ CALC_EXACT_MALLOC_SIZE を定義してビルドした時にコンパイルエラーしていたようで preprocessor の分岐を少し修正しています。

[2325017477] 卜部昌平 2020-02-25 03:42:00 UTC

同じくマクロ USE_TRANSIENT_HEAP=0 に定義してビルドした時にコンパイルエラーしていたようで preprocessor の分岐を追加しています。

[f12b9a3338] 卜部昌平 2020-02-26 02:45:29 UTC

fprintf(3) の "%p" フォーマット指示子に渡すポインタを void* に明示的にキャストするようにしています。

[f7048f9d55] 卜部昌平 2020-03-02 06:50:22 UTC

Test::Unit が --seed オプションの指定がなかった時に子プロセスに渡すオプションに --seed を追加するのを最後ではなくて先頭に追加するようにしています。TESTS="-- -ext-" のように "-" ではじまる通常の引数を渡すため "--" を使った時に --seed もオプションにならなくなってしまうのを避けるためとのこと。

[aa44b29030] 卜部昌平 2020-02-20 05:02:01 UTC

bignum.c と vm_method.c の変数の初期化を追加しています。 GCC7 で警告が出るようになった(おそらく誤検出?)そうです。

[16415fefc1] Yusuke Endoh 2020-03-04 03:31:11 UTC

test/lib/jit_support.rb の未サポートのコンパイラリストの icc のパスが変化したみたいなので正規表現の先頭部分のパターンを削っています。

[87f6154bb4] Yusuke Endoh 2020-03-04 06:46:26 UTC

efd641ffab34e433a8d8a7d78914576f2425aa90 の ce6caade7c57a505f73086ccd7b33c14f7715f22 で fiddle で常に ffi_prep_closure() を使うようにしたのを revert したのを revert しています。CI のエラーだったと思われるけどこの変更で Ubuntu でビルド時の警告が出るのでリトライしてみるみたいです。

[d732bc51bd] Yusuke Endoh 2020-03-04 08:28:21 UTC

efd641ffab34e433a8d8a7d78914576f2425aa90 で efd641ffab34e433a8d8a7d78914576f2425aa90 の ce6caade7c57a505f73086ccd7b33c14f7715f22 で fiddle で常に ffi_prep_closure() を使うようにしたのを revert したのを revert したのを revert しています。やっぱり macOS 上の CI でエラーになったみたいです。

[633a1f15d8] Nobuyoshi Nakada 2020-03-04 09:13:03 UTC

拡張ライブラリ fiddle で USE_FFI_CLOSURE_ALLOC の指定に libffi のバージョンやアーキテクチャなどいろいろ条件が書いてありましたが、シンプルに HAVE_FFI_CLOSURE_ALLOC の有無だけで分岐するように変更しています。

[95f387f61a] Nobuyoshi Nakada 2020-03-04 09:41:47 UTC

拡張ライブラリ fiddle の execonf.rb でバンドルされている libffi を使う場合は ffi_closure_free() が定義されていることはわかっているので have_func() を使わずに直接 -DUSE_FFI_CLOSURE_ALLOC=1 をコンパイラオプションに追加するようにしています。

ruby-trunk-changes 2020-03-03

今日は Kernel#send での method_missing 起動時のエラー種類の修正などがありました。

[65dd50fc25] Yusuke Endoh 2020-03-02 13:37:04 UTC

f5c904c2a907013e22ff74bc3686952c5448d493 で追加した pattern match のテストで未参照のローカル変数の警告が出てたので _ ではじまる変数への代入を追加して抑制しています。

[91de0daaa2] Koichi Sasada 2020-03-02 17:32:45 UTC

Kernel#send 経由で method_missing に委譲(っていうのかな)される場合で、メソッド名に対応する ID がまだ存在していない(そもそもその名前がまだインタプリタ内で利用されてない)時のパスで rb_execution_context_t::method_missing_reason のセットが漏れてたのを修正しています。SEGV とかはしないけど例外の種類が変わってしまってたようです。

[485ef0bdc1] git 2020-03-02 17:44:38 UTC

version.h の日付更新

[91440ff13f] aycabta 2020-03-03 05:40:45 UTC

標準添付ライブラリ irbIRB::InputCompletor.retrieve_completion_data の全 Symbol のリテラル表現を文字列化する時に Symbol の Encoding を考慮して Encoding.default_external に変換しておくようにしています。あーということは、同じ文字列の Encoding 違いの Symbol を作ったりするとめんどうなことになりそう。

[aa9a38c0ed] Koichi Sasada 2020-03-03 06:27:23 UTC

91440ff13fbf3b14dc6ac6c1e0a33bc5a1e3237c の Encoding 変換時に Encoding::UndefinedConversionError が発生したらその Symbol は無視するようにしています。

[1ad9364440] Koichi Sasada 2020-03-03 06:51:42 UTC

tool/lib/leakchecker.rb のテストでの各種リソースの leak チェックの先頭で Solaris 上でのみ GC.verify_internal_consistency を実行するようにしています。 CI のデバッグのため。

[c8d0bf0156] Nobuyoshi Nakada 2020-03-03 06:48:53 UTC

f5c904c2a907013e22ff74bc3686952c5448d493 の hash pattern の変更で struct lex_flags::kwarg の復帰が漏れていたのを修正しています。

[a8c5b9a2fd] Nobuyoshi Nakada 2020-03-03 08:37:51 UTC

NEWS のセクションの見出しに () つきで書かれてた文章をそのセクションの先頭のテキストにするよう整形しています。

ruby-trunk-changes 2020-03-02

今日は pattern match の Hash pattern 内に改行を許容する変更や Travis-CI/GitHub Actions の整理などがありました。

[0bfee2397b] Koichi Sasada 2020-03-02 02:43:17 UTC

$stdin.fileno のテストにデバッグのため assertion メッセージを追加しています。

[5d3b38d697] git 2020-03-02 02:44:21 UTC

version.h の日付更新

[31c55b6725] Koichi Sasada 2020-03-02 04:13:24 UTC

0bfee2397ba59112902d2b49f08461db3a637b46 で判明したのか cgi のテストで $stdin を変更していたのを ensure で元に戻すようにしています。

[fb377e8f3a] Koichi Sasada 2020-03-02 04:16:10 UTC

0bfee2397ba59112902d2b49f08461db3a637b46 のデバッグ用メッセージ追加を revert しています。

[d348b4adef] Koichi Sasada 2020-03-02 04:42:35 UTC

Reline.completion_proc のテストで初期状態で nil でなかったらエラーになるので skip するようにしています。他のテストで既にセットされていると未初期化時の値のテストはできないので。

[4fd51f848a] Koichi Sasada 2020-03-02 05:25:35 UTC

構造体 struct rb_callcache のメンバー共用体 aux_ の値に VALUE v を追加して vm_cc_fill() で aux_ を 0 クリアするために利用しています。

[648eb31b9a] Koichi Sasada 2020-03-02 05:42:33 UTC

標準添付ライブラリ reline のテストで teardown で Reline.point = 0 にリセットするようにしています。

[cdf8471aec] 卜部昌平 2020-02-26 03:31:44 UTC

.travis.yml に ruby_2_7 のテストがまだなかったので追加しています。

[9086f6bfc8] 卜部昌平 2020-02-26 03:33:43 UTC

.travis.yml の macOS でのテストは 91aa8bfff8a9f9c0af96915c120d863fc474e8d5 で削除されているので関連するデバッグ用のコードが残ってたのを掃除しています。

[01fc48c26f] 卜部昌平 2020-02-26 03:39:16 UTC

clang の -fsanitize=undefined つきのビルドを allow_failures から消してエラーを検出するようにしています。

[f4a3830ff2] 卜部昌平 2020-02-26 04:20:56 UTC

.travis.yml の複数行の文字列を記述するのに >- という記法を使っています。こんな記法があるのか。

[bdf2d91326] 卜部昌平 2020-02-26 03:41:33 UTC

.travis.yml と GitHub Actions の ubuntu 版で環境の情報を表示する処理を削っています。

[e06ad731f0] 卜部昌平 2020-02-26 03:52:07 UTC

GitHub Actions で branch の指定がすべて "*" になったので削って対応するイベントの種類のみ列挙するようにしています。

[888e736524] 卜部昌平 2020-02-26 04:12:46 UTC

GitHub Actions で working-directory の設定をすることでコマンド内で cd しなくてすむようにしています。

[2bfa1025a9] 卜部昌平 2020-02-26 04:17:08 UTC

GitHub Actions で make leaked-globals を他の make check などと並行して実行できるようにしています。

[0711ceeb37] 卜部昌平 2020-03-02 01:59:30 UTC

GitHub Actions の configure する step に name で名前をつけています。

[f5c904c2a9] Nobuyoshi Nakada 2020-03-02 06:49:03 UTC

pattern match の Hash パターン内で改行を許容するようにしています。

[761528e8aa] Kazuhiro NISHIYAMA 2020-03-02 05:53:18 UTC

Pathname の class の rdoc 用コメントに write と binwrite メソッドについての参照を追記しています。

[20a2ab0825] Nobuyoshi Nakada 2020-03-02 07:08:39 UTC

struct parser_params から defined, kwarg, def, class といった bit field を struct lex_flags という別の構造体に切り分けています。これこうすると構造体のサイズは増えるのかな。またこの struct lex_flags の parse.y の %union の型のひとつにして node の値として持てるようにしています。

[85620ffaa6] Nobuyoshi Nakada 2020-03-02 07:45:35 UTC

20a2ab0825b7e441e303002f0feeb1b643198ffc の追加修正。分離した struct lex_flags flags を node の値としてアクセスする時に $<flags>$ ではなく $<flags>1 のようにアクセスするようにちょっと変えてますが、この手法よくわからない。