ruby-trunk-changes 2019-07-24

今日は TracePoint の不具合修正や mkmf.rb の不具合修正、特異クラスに対する singleton_methods の不具合修正などがありました。

[676df311d9] Nobuyoshi Nakada 2019-07-23 11:51:23 UTC

0338c44bde4fe55f0507a82fe470dce2ac70127a や e8d4f0cbc78b0e06806394a93ba73b7d04eba14d のあたりの Travis CI での macOS のビルドの再修正で env のところでシェルスクリプトを動かしてソースディレクトリ? 配下のファイルのタイムスタンプを touch で更新しておくようにしています。調査用に入れた ls の結果、ファイルの mtime が未来のタイムスタンプになってることがあったそうです。

[b6f07f748a] Jesús Burgos Maciá 2019-07-19 19:59:21 UTC

prelude.rb の IO#read_nonblock メソッドの rdoc 用コメントに Windows など一部の環境では socket 以外の IO では non-blocking はサポートされてなくて Errno::EBADF が発生すると追記しています。

[325f7b6008] Jeremy Evans 2019-07-08 03:16:57 UTC

mkmf.rb の r47458 の変更で Mkmf#pkg_config で INCFLAGS に分離したフラグが結果に含まれなくなっていたのを修正しています。 [ruby-core:67137] [Bug #10651]

[c9826c20d2] Nobuyoshi Nakada 2019-07-23 15:24:12 UTC

標準添付ライブラリ net/http の Net::HTTP::Header#initialize_http_header の警告で uplevel を調節して呼び元の位置を表示するようにしています。

[f295e23e54] git 2019-07-23 15:32:43 UTC

version.h の日付更新

[afea8db8c7] Nobuyoshi Nakada 2019-07-23 16:42:05 UTC

拡張ライブラリ date のテストで DateTime.parse に不正な offset 部分を持った文字列を渡した時の警告を確認するチェックを追加しています。

[11662c70b0] Nobuyoshi Nakada 2019-07-23 16:42:35 UTC

c9826c20d204d4b8894e6fd51e5913959676776d の影響? かと思われますが net/http のテストで警告抑制のためのヘッダ追加や、逆に警告が出ることを確認する assertion の追加など。

[9aba971e42] Jeremy Evans 2019-07-08 00:58:25 UTC

Object#singleton_methods で receiver 自体が特異クラスの時にその特異クラスのインスタンスが所属するクラスにあるクラスメソッドが出現してしまうという不具合を修正しています。このために singleton_metods を呼んだら内部で singleton_class を生成して見えないようにしているんだけど、うーんまあこれはしょうがないかな。副作用があるわけだけどはっきり ruby レベルで見えるものではないし。 [ruby-core:68289] [Bug #10901]

[a4e5690760] Yusuke Endoh 2019-07-23 19:49:51 UTC

transcode.c の rb_econv_open0() で rb_enc_find_index() 呼び出し後その index で rb_enc_from_index() を呼ぶパスは通らない? らしいので削っています。 Coverity Scan が指摘してきたとのことで、結果を使ってないからかなぁ。軽く見ただけだとこれが「不要」と言いきれるのよくわからないけど Coverity Scan すごいな。

[df317151a5] Koichi Sasada 2019-07-23 20:32:09 UTC

TracePoint のイベントフック内でその TracePoint を disable すると target が特定されているイベントの場合 rb_hook_list_t を早く解放してしまって SEGV する恐れがあったので解放しないようにしています。 https://twitter.com/joker1007/status/1153649170797830144

[a39f218f22] Nobuyoshi Nakada 2019-07-24 02:51:04 UTC

make test-bundled-gems で環境変数 TEST_BUNDLED_GEMS_ALLOW_FAILURES によるエラーの無視を if 文を使ってテスト実行を分けてたのを、一時的に set -e してエラー無視させる方法に書きかえテスト実行部分のコマンドは共通のものを使うようにしています。

[5108a5dd7f] Nobuyoshi Nakada 2019-07-24 03:13:07 UTC

a39f218f22e8ec205291022f9b748d51daa8df3b の続きで make test-bundled-gems-run で -k オプションが指定されてたら最初のエラーで中断せずに全ての gem のテストを実行してエラー件数を返すようにしています。

[3a227b99e7] Nobuyoshi Nakada 2019-07-24 03:25:02 UTC

defs/gmake.mk の test_%.rb で指定したテストファイルを実行するようにしたターゲットでも test/runner.rb から test/tool/runner.rb への統合に追随させています。

[99680f81e8] Nobuyoshi Nakada 2019-07-24 04:24:18 UTC

rubygems でテスト用の Gem::TestCase というクラスの定義部分で @@project_dir というディレクトリパスを Dir.pwd を元にして作って保持してたのを必要なテストスクリプト内でファイルからの相対パスで作るように修正しています。ソースディレクトリ外でビルドしてる時を考慮。

[99fb637c41] Nobuyoshi Nakada 2019-07-24 04:57:59 UTC

99680f81e832506792cf32d830d09954acd220fc の追加修正でクラス変数を使ってたのを定数にディレクトリパスを格納するように変更しています。

[dc954cbb75] Nobuyoshi Nakada 2019-07-24 11:08:40 UTC

tool/test/runner.rb および tool/lib/test/unit/parallel.rb で Gem::TestCase クラスを定義して @@project_dir を用意してたのが 99680f81e832506792cf32d830d09954acd220fc の変更で不要になったので削っています。