ruby-trunk-changes 2020-06-20

今日は標準添付ライブラリ webrick の再修正や拡張ライブラリ date の Marshal.load 時の不具合修正などがありました。

[78d4eace02] Kazuhiro NISHIYAMA 2020-06-19 13:08:19 UTC

標準添付ライブラリ webrickWEBrick::HTTPServlet::DefaultFileHandler の 750203c514e0e9a49f7d53fb54084e6844fca42a93e6fa1d319d19ce7fba37e4b9924862447b9f38 の修正を revert。

[97c1782db6] Kazuhiro NISHIYAMA 2020-06-19 13:47:08 UTC

標準添付ライブラリ webrick のテストで 6fe1919486111bcdd5ef41fea15b0e82f7f50d82 の @root の encoding にあわせる変更を revert して、やっぱり req.path_info を filesystem encoding に force_encoding するようにしています。ただし filesystem encoding が US-ASCII だったら ASCII-8BIT に変換しています。

[32e2440a66] Kazuhiro NISHIYAMA 2020-06-19 14:06:38 UTC

97c1782db634ab0344fbc829477897d5de034475 の再修正。req.path_info を丸ごと変換してから String#scan にかけてたのを、先に scan で分解してから Encoding の変換するようにしています。 force_encoding した結果不正なバイト列になってた場合に String#scan でエラーになるのを防ぐためみたいです。

[640e6c9be6] Kazuhiro NISHIYAMA 2020-06-19 15:17:07 UTC

標準添付ライブラリ webrick の非ASCII 文字のファイルパスのテストでひらがなの "あ" を含むファイル名を使っていたのを、日本語環境じゃない Windows でのテストを考慮して "\u00a7" ("§" という文字)を使うようにしています。

[b3aff6a11c] git 2020-06-19 15:20:43 UTC

version.h の日付更新

[878af5147d] Jeremy Evans 2020-06-01 19:28:05 UTC

2.5 で入ったブロック引数の Proc オブジェクト生成を遅延させる変更の影響で、同じブロックの実体を使った Proc オブジェクトが同一と判定されなくなっていた不具合(?)を修正しています。むしろ、同じブロックだと同値と判定されてたのを知らなかった。 [ruby-core:84583] [Feature #14267]

[37cd877dbd] Yusuke Endoh 2020-06-19 03:43:58 UTC

branch coverage の測定用の trace 命令を生成するマクロ DECL_BRANCH_BASE() と ADD_TRACE_BRANCH_COVERAGE() を削除して、かわりに static 関数 decl_branch_base() と add_trace_branch_coverage() に書きかえています。

[4b523e79a0] Yusuke Endoh 2020-06-19 03:48:30 UTC

37cd877dbd70745c05aab7e1e155beb5ae6ad772 で関数に変更した decl_branch_base() と add_trace_branch_coverage() から冒頭の共通部分を branch_coverage_valid_p() に切り出すリファクタリング

[bc0aea0804] Yusuke Endoh 2020-06-19 03:59:47 UTC

decl_branch_base() と add_trace_branch_coverage() の引数 first_line、first_column、last_line、last_column のかわりに、それを格納した NODE を渡して中で取り出させるようにリファクタリングしています。

[50efa18c6c] Yusuke Endoh 2020-06-19 05:52:35 UTC

拡張ライブラリ coverage の branch coverage 機能による測定が ensure 節において重複する? という不具合の修正。 coverage counter の登録を compile 時の AST を辿る処理で行なわせてたのが、ensure 節の中身は 2度 traverse されるので重複していたみたいです。 ISeq 内で分岐している命令ごとに通し番号を対応させてその id で branch counter の管理をするようにしているみたいです。 [ruby-core:98844] [Bug #16967]

[a3c8ade1b3] Yusuke Endoh 2020-06-19 06:10:29 UTC

50efa18c6cf102e070ba0f95edc01c72516495a3 の branch coverage の不具合修正に対応するテストを追加しています。 [ruby-core:98844] [Bug #16967]

[e8b2578d31] Kazuki Tsujimoto 2020-06-20 02:11:50 UTC

878af5147def7fed089d3cc388742f0111db58ae で追加された proc_eq() の未使用のローカル変数の削除。

[ad156f7e2c] Jeremy Evans 2020-06-11 18:40:45 UTC

拡張ライブラリ date の Date.allocate の定義を d_lite_s_alloc_simple() から d_lite_s_alloc_complex() に変更しています。また Date#initialize の定義は削除してかわりに Date.new メソッドを直接 date_s_civil() という関数で再定義するようにしています。コミットログによると Date を Marshal.dump したものをロードしようとした時に、その Date オブジェクトの内部表現が complex タイプだとうまく再構築する方法がないということに対応するためみたいです。Date は(条件はよく知らないのですが)内部表現に struct SimpleDateData と struct ComplexDateData と二種類あって、Date.allocate が simple のほうになってると complex タイプにする方法がないからとのこと。 https://github.com/ruby/date/issues/20

[97e8b7d098] Nobuyoshi Nakada 2020-06-12 06:32:09 UTC

ad156f7e2caa28f429a9f05f3b9b184118b85432 の再修正。ad156f7e2caa28f429a9f05f3b9b184118b85432 は revert してかわりに Marshal.load 時の実装 d_lite_marshal_load() で dump されたデータが simple タイプのはずなのに表現できない情報を含んでた時に自動的に complex タイプ用の処理に移行するように修正しています。 https://github.com/ruby/date/issues/20

[b68ddcf30c] Hiroshi SHIBATA 2020-06-19 21:06:26 UTC

拡張ライブラリ date の gemspec ファイルでバージョンを 3.0.1 に更新しています。