php-master-changes 2019-02-18

今日は PHP Testfest 2017 で追加されたテストの取り込み、bless_test.php の修正、Preloading 周りのバグ修正、メモリアロケータの修正、run-tests.php 並列実行の実験的サポート、マジックメソッド引数チェック周りの局所最適化があった！

# 2019-02-18
## MarkBaker: Range of new tests for xmlreader functionality and exceptions/errors
- https://github.com/php/php-src/commit/40a26587e8714291f19ca16cc6c42bbb0b1ae767
- [7.4~]
- ext/xmlreader のテストを追加
- PHP Testfest 2017

## MarkBaker: SplDoublyLinkedList Iterating a DLL by reference shouldn't be permitted
- https://github.com/php/php-src/commit/a84227650a2210f6a4dcdc30e9acdf4bffce963b
- [7.4~]
- ext/spl で、SplDoublyLinkedList を foreach で順繰りにたどる際は参照が使えないことのテストを追加
- PHP Testfest 2017

## MarkBaker: Tests for XMLWriter write cdata and raw
- https://github.com/php/php-src/commit/cf0dd817f2154fffad5fd8d059cf5b83ed78917b
- [7.4~]
- ext/xmlwriter で、writeCData()、writeRaw() のテストを追加
- PHP Testfest 2017

## Miljar: Test the warning for giving full path to dl()
- https://github.com/php/php-src/commit/5b15908ed7d1765c1776b40ffc58092044aa1332
- [7.4~]
- dl() にフルパスを与えると警告を出すことのテストを追加
- PHP Testfest 2017

## nikic: Handle exception patterns in bless_tests.php
- https://github.com/php/php-src/commit/cc0e01a2fad81ae87b5b2240ddd776e508e4c59a
- bless_tests.php で、処理する出力パターンを追加

## nikic: Don't catch opcache_compile_file failures during preloading
- https://github.com/php/php-src/commit/2f3d61971ff9980a4f2c7b5255e226103b4e72bb
- ext/opcache で、Prealoding 中に opcache_compile_file() 失敗時の例外を捕捉しないよう修正
- Prealoding 中のコンパイル失敗は全体の失敗で、半端にコンパイルされた状態で先に進んだらアカンやろ、という話らしい

## nikic: Don't suppress errors during in preload testing
- https://github.com/php/php-src/commit/b7b3a600cb05c1f80fb11e60cac24f041c4586b3
- run-tests.php で、preload モードのテスト時にエラー出力をしないよう修正

## nikic: Release constant names during preloading
- https://github.com/php/php-src/commit/05363890a0e4246f24fe7ad4f47cf7d2b2a90bbd
- [7.4~]
- ext/opcache で、Preloading の最中に定数名のメモリ領域を解放するよう修正

## dstogov: Fixed use-after-free during preloading, when q class with unresolved constant uses a preloaded trait.
- https://github.com/php/php-src/commit/3ef9f23fce327ab3d157c9d63c245f8a743e956d
- [7.4~]
- ext/opcache で、Preloading の最中の use-after-free を修正
- Preloading 中に解決されない定数を参照するクラスで Preload された Trait を use してる時の問題らしい

## nikic: Use mremap in zend_mm_chunk_extend if available
- https://github.com/php/php-src/commit/7d0d94e230b431e06937855e793ba5ffcfdad55e
- [7.4~]
- メモリアロケータの zend_mm_chunk_extend() で、使えれば mremap() を内部で使うよう修正

## dstogov: Fixed bug [#77633](https://bugs.php.net/bug.php?id=77633)
- https://github.com/php/php-src/commit/c9ffae1bec67d628d2859368be66175b5c693de5
- [7.4~]
- ext/spl で、Iterator/IteratorAggregate を実装して ArrayIterator に使う際、get_iterator() を継承して使うためのクラスフラグを追加
- オブジェクト生成時に spl_array_get_iterator() へ get_iterator() ハンドラが置き換わる旧実装だと、クラスがイミュータブルでないといけない Preloading と互換性がなくなる、という話らしい

## nikic: Make MADV_HUGEPAGE conditional on USE_ZEND_ALLOC_HUGE_PAGES
- https://github.com/php/php-src/commit/928c42211f737640e4dc3c9702ba833c3059bddf
- [7.2~]
- MADV_HUGEPAGE を無条件で使わないよう修正
- すげー遅くなると聞いたので、という話らしい

## hikari-no-yume: run-tests.php: experimental parallel testing support
- https://github.com/php/php-src/commit/39792f5bb7c7c8be9f71090cb3f9a1b30b72c87f
- [7.4~]
- run-tests.php で、テストの並列実行の実験的サポート
- shamedDirs て

## dstogov: Use "quick" macro variants for known argument numbers
- https://github.com/php/php-src/commit/2ed013c38aedcf9684d317d75951773cbb4fc275
- [7.4~]
- zend_check_magic_method_implementation() の実装で、引数が参照をとるかのチェック用マクロ ARG_SHOULD_BE_SENT_BY_REF() を QUICK_ARG_SHOULD_BE_SENT_BY_REF() という引数の数が分かっている場合に使える速い版に置き換え