ruby-trunk-changes 2019-07-01

今日は Marshal.dump の挙動を marshal_dump でカスタマイズしている時に不正なダンプをする可能性があった不具合の修正やテストの警告除去などの修正がありました。

[35cf3e8904] Takashi Kokubun 2019-06-30 15:14:11 UTC

デフォルトブランチが trunk から master に変更されたので .travis.yml でテスト対象のブランチ名を変更しています。

[fc4abbfcd0] git 2019-06-30 15:15:04 UTC

version.h の日付更新

[9cb58f1698] Nobuyoshi Nakada 2019-06-30 13:48:39 UTC

racc で未使用変数の警告抑制のため変数名の prefix に _ を追加しています。

[51b2b605e7] Nobuyoshi Nakada 2019-06-30 13:49:10 UTC

CMath の deprecated になったメソッドが警告を出すことを確認するテストで assert_warning の外でも再度 CMath.sqrt! を呼んでて警告が出てたので assert_warning の中で呼んだ結果を利用するようにしています。

[f13fb814e0] Nobuyoshi Nakada 2019-06-30 13:49:56 UTC

test/unit の assert_warning および assert_no_warning でブロックの評価値をメソッドの返り値にするようにしています。

[3d1536e618] Takashi Kokubun 2019-06-30 15:24:10 UTC

appveyor.yml で除外するブランチ名を master から trunk に変更。

[dbe834ab5a] Takashi Kokubun 2019-06-30 16:04:40 UTC

README.md/README.ja.md の CI のバッジで参照するブランチ名や GitHub へのリンクなどを trunk から master のほう変更しています。また rubyspec のコメントで GitHubリポジトリ内への URL が書かれてたところも master を参照するように変更。

[fe03bbaf34] Nobuyoshi Nakada 2019-07-01 01:16:47 UTC

bootstraptest で Thread や Fiber などの生成できる上限を検査するテスト? で進捗を "." を表示して表すのは標準エラー出力が端末の時だけにしています。

[6982a9049e] Nobuyoshi Nakada 2019-07-01 04:01:31 UTC

IPAddr のテストで IPAddr#ipv4_compat? の呼び出し時に assert_warning で obsoleted 警告の出力をチェックするようにしています。

[99dc885974] Nobuyoshi Nakada 2019-07-01 04:56:55 UTC

未定義のインスタンス変数名に対して rb_iv_get() を呼ぶと rb_intern() を呼んでて ID が割り当てられてしまっていたので rb_check_id_cstr() で既に ID があるかチェックしてなかったら警告を出してすぐ nil を返すようにしています。

[77a073239c] git 2019-07-01 05:00:37 UTC

99dc885974bfe637f3e74f52efdbbf77d66d0d68 のインデントのタブを空白に展開。

[c9423b016c] Nobuyoshi Nakada 2019-07-01 06:02:27 UTC

Marshal.dump の方法をカスタマイズするために marshal_dump メソッドを定義している場合にそのメソッド内でインスタンス変数を追加する副作用のあることをすると不正なバイナリを吐いてしまい load 時にオブジェクトが化けるということがあるので、インスタンス変数の数が途中で変わったら例外を発生させるようにしています。 [ruby-core:93445] [Bug #15968]

[0b1e26398e] Nobuyoshi Nakada 2019-07-01 07:18:51 UTC

c9423b016cfeab852bc5a829e55e0a11f80b3ab7 で修正した w_ivar() と w_objivar() でほぼ共通の処理を w_ivar_each() という関数に切り出すリファクタリング

[78ee2c2453] Nobuyoshi Nakada 2019-07-01 07:20:03 UTC

c9423b016cfeab852bc5a829e55e0a11f80b3ab7 の再修正で w_ivar() から呼び出す w_encoding() で要素を出力したかどうかでインデックスを調整するようにしています。逆にインスタンス変数が減った時にもエラーを出せるようにしています。 [ruby-core:93445] [Bug #15968]

[70dcf5b368] git 2019-07-01 07:25:56 UTC

78ee2c245331e353e218b8fac9ca722a2bcd8fea のインデントのタブを空白に展開。

[7f4f40ab31] Nobuyoshi Nakada 2019-07-01 08:09:08 UTC

fe03bbaf3405b9e45bb3504fab5f4195ec6c3630 で標準エラー出力が端末の時だけプログレス表示するようにした bootstraptest/runner.rb の show_limit で @verbose が真の時だけ更新しながら出力するようにしています。また @verbose が真の時は1行を更新しながら出力せずに毎回改行してたのを抑制するようにしています。

[babaad1065] Nobuyoshi Nakada 2019-07-01 11:05:06 UTC

template/Makefile.in でアセンブリソースコードファイルの拡張子を指定する変数 ASMEXT を S 固定にせず configure 時の変数指定を継承するようにしています。