php-master-changes 2019-02-20

今日は Preloading の各種修正、opcache の最適化処理の修正、com_dotnet で typelib 経由での case-insensitive な定数定義機能を削除、不要なテストの削除、字句解析器のメモリリーク修正、run-tests.php で並列実行の衝突をコントロールする機能の追加 / PHP_BINARY をデフォルトで使うように / 実行順をシャッフルする --shuffle オプションを追加するなどの修正、Travis でのテスト並列実行有効化、bless_tests.php の修正、コンパイラで ZEND_EXT_FCALL_BEGIN が引数送出の後に発行されるようにする修正、phpdbg で phpdbg.com と書かれていたのを localhost に直す修正、SPL で実行時に処理していた箇所をコンパイル時に解決できるようにする修正、静的メンバ初期化処理のリファクタリング、oci8 のテスト修正、FFI の拡張バージョン修正、ドキュメントの更新、、XmlWriter::openMemory() で zend_parse_parameters_none() を使うようにする修正、幾つかのテストの並列実行対応、FUNC_ARG のフェッチで "Attempt to modify" なエラーメッセージを使うようにする修正、openssl のテスト修正があった！

# 2019-02-20
## dstogov: Accurate handling of not preloaded classes
- https://github.com/php/php-src/commit/26ab6edffc6c4b925f09d74253edec28f550edf6
- [7.4~]
- ext/opacache で、Preloading されないクラスの扱いを修正
- リンクされてないけどクラステーブルにはエントリが入ってる、みたいなケースがこの段であるのか

## dstogov: Check for USER_FUNCTION
- https://github.com/php/php-src/commit/1133ee11672c4d75df67b7934d32cbd3cc832a08
- [7.4~]
- ext/opcache で、最適化対象の判定処理に `op_array->type == ZEND_USER_FUNCTION` な条件を追加

## cmb69: Remove ability to import case-insensitive constants from typelibs
- https://github.com/php/php-src/commit/f04cf7a587400a3cfdea6d551b82281be9b0ba7d
- ext/com_dotnet で、typelib 経由での case-insensitive な定数定義に関連する ini や関数引数の利用を削除
- [こないだ非推奨化の対応してた](https://qiita.com/sj-i/items/17eb3aa8f1c34dce4c38#cmb69-deprecate-case-insensitive-constants-via-typelib-import)ところ

## nikic: Remove some zpp failure tests
- https://github.com/php/php-src/commit/002c096871ff428a3832046aeaf9204446549b6c
- [7.4~]
- 実質的に ZPP のテストを他処理へ組み込んで実行してるに過ぎないようなテストを削除
- [先日](https://qiita.com/sj-i/items/04962b98ab92ee8528df#nikic-remove-zpp-variation-tests)の続き

## dstogov: Fixed memory leak
- https://github.com/php/php-src/commit/723acab660081c2e8c023c34c0fadb088eb13244
- [7.4~]
- 字句解析器に入っていたシングルクォート文字列でのメモリリークの修正

## dstogov: Better new-line handling
- https://github.com/php/php-src/commit/b2073253bf82fdd7feb3f219e442fa3e4a39ea9e
- [7.4~]
- run-tests.php で、[前日に続いて](https://qiita.com/sj-i/items/0c041fa6276d81d6dad5#dstogov-better-line-handling)行末の処理を修正

## krakjoe: begin handlers are currently invoked without access to the arguments being sent, this moves the opcode after SEND
- https://github.com/php/php-src/commit/a3994a9e1601bab7dc576177e184733241ff356a
- [7.4~]
- コンパイラで、ZEND_EXT_FCALL_BEGIN が引数送出の後に発行されるよう修正
- ハンドラが引数へアクセスできるようになる
- たぶん JIT での計測対応でプロファイラとかのツールが ZEND_EXT_FCALL_BEGIN 経由で情報とれるようにする気なんじゃないかな、最近 room11 で krakjoe の人とか beberlei の人がなんか話してた気がする

## petk: Rename non-existing site phpdbg.com to localhost
- https://github.com/php/php-src/commit/b1b392763e1330b11b0862c3881eafba6fb631ea
- [7.4~]
- sapi/phpdbg で、$_SERVER に今や存在しない phpdbg.com が書かれていたのを localhost に修正

## dstogov: Don't restrict preloading with "open_basedir" directive.
- https://github.com/php/php-src/commit/0510b41a0671fc1094a4e4521faaceb920889001
- [7.4~]
- ext/opcache で、Preloading については [open_basedir](http://php.net/manual/ja/ini.core.php#ini.open-basedir) の制限を受けないよう修正

## dstogov: Order of classes may matter
- https://github.com/php/php-src/commit/6b0023897976b6fa8d1b1c5f90e25327d9000913
- [7.4~]
- ext/opcache で、Preloading で共有メモリへクラスを突っ込む際にクラスをソートするよう修正してる

## dstogov: Don't preload tests without --FILE-- section
- https://github.com/php/php-src/commit/555fb294ec4c1948b357ee43b6ca3c81873ddf26
- [7.4~]
- run-tests.php で、`--FILE--` セクションのあるテストは preload モードで実行しないよう修正

## dstogov: Use ZEND_ACC_REUSE_GET_ITERATOR flag instead of run-time class modification
- https://github.com/php/php-src/commit/f2e515e9eb78b09ecaed057241e7a43bf2d9f883
- [7.4~]
- ext/spl で、実行時にクラスエントリをいじってた箇所をコンパイル時に解決できるようにした感じかな

## dstogov: Reorder conditions
- https://github.com/php/php-src/commit/a7c99f3dc52b16f4077819d75a30feb214bbd1c0
- [7.4~]
- 静的メンバ初期化処理で分岐条件の並べ替え
- より早く絞れる方にしたんだとは思うけど実際は知らね！

## dstogov: Skip tests f oci8 extension is not loaded
- https://github.com/php/php-src/commit/2cd24e9d7a47e3ec0c01fa18e83ee45d861d40fc
- [7.4~]
- ext/oci8 で、テスト実行時に拡張が読み込まれていなかったらスキップするよう修正
- すぐ後に「ちゃうねん」みたいなコミットが来る↓

## cjbj: Correct skipif use for OCI8 password tests
- https://github.com/php/php-src/commit/7a9c20f3fd9152ddf1e55aef9120ecfcf4f87613
- [7.2~]
- 俺が本物の SKIPIF を見せてやるぜ！という感じに正しいスキップ方法で 7.2 からで修正

## cjbj: Correct skipif use for OCI8 password tests
- https://github.com/php/php-src/commit/7317de59ecd62353bbb3c16ecdba53f645792994
- [7.4~]
- [マージコミット](https://github.com/php/php-src/commit/47e68921dc2e7184d6986011014729d3bd5f3b47)で 7.4 からめでたく正しい状態に

## petk: Bump FFI extension version to PHP_VERSION
- https://github.com/php/php-src/commit/e5fe8ad6e56336d1071e84a8f5a38487a54e0491
- ext/ffi で、拡張バージョンに PHP_VERSION を使うよう修正
- このほうが更新楽でしょっていう

## petk: Simplify even more - use PHP_VERSION directly
- https://github.com/php/php-src/commit/e765e9a8e0814e2f0681aadac7c09a576ece02fe
- ↑をより単純化して PHP_VERSION を直接使……ってないという typo がある修正

## petk: Fix typo
- https://github.com/php/php-src/commit/a3e3fa78f2debb0638822e2b7eb1bcd67a0e12af
- [7.4~]
- ↑の typo を修正

## dstogov: Added reference to parser generator
- https://github.com/php/php-src/commit/6e17fbefde58644eca3fd3d013b3af450ac42bae
- [7.4~]
- ext/ffi で、README に使っているパーサジェネレータ [LLK](https://github.com/dstogov/llk) へのリンクを追加
- 自作かよ！

## nikic: Use zend_parse_parameters_none() in XmlWriter::openMemory()
- https://github.com/php/php-src/commit/d94a1907b735c1c4b0e40a671fa9044c90456c2d
- [7.4~]
- ext/xmlwriter で、[XmlWriter::openMemory()](http://php.net/manual/ja/function.xmlwriter-open-memory.php) で zend_parse_parameters_none() を使うよう修正
- テストで誤って引数与えていたのも修正

## dstogov: Prevent error reporting during preloading request start-up
- https://github.com/php/php-src/commit/c143794dd9e10edfd2187fefcbdc7855bcf3114e
- [7.4~]
- ext/opcache で、Preloading 内のリクエストスタートアップ中は error_reporting を切るよう修正

## dstogov: Disable preloading for sensetive opcache tests
- https://github.com/php/php-src/commit/12edc453e5cfed69ee150c1c19466dfe52026f94
- [7.4~]
- ext/opcache で、最適化のテストで Preloading を切るよう修正

## nikic: Make ext/spl/tests/bug42364.phpt more robust
- https://github.com/php/php-src/commit/f5872614d87c120e64b94fe1686005da9f53bc2d
- ext/spl で、テストの並列実行対応で DirectoryIterator を使うテスト用に専用ディレクトリを作るよう修正

## nikic: Make proc_open_bug69900.phpt more robust against parallelization
- https://github.com/php/php-src/commit/0513d59ed33c3439b2fb52bc39feff18a2b5436a
- テストの並列実行対応で、1ms 以内で終わることを期待しているテストについて 10ms は待てるよう修正

## nikic: Implement fine-grained conflict handling
- https://github.com/php/php-src/commit/c0e15a3b7fef5b341eb96e0e888f180ba7a39570
- [7.4~]
- テストの並列実行対応で、衝突の可能性があるテストをマークしてそれ以外は並列実行とするよう run-tests.php を修正
- 同じマーク（conflict key）のものは並列実行されない
- --CONFLICTS-- かディレクトリ内の CONFLICTS で指定可能

## nikic: Use "modify" error message for FUNC_ARG fetch as well
- https://github.com/php/php-src/commit/a92db42568d5be412fd536cc96475f0a61666223
- "Attempt to modify property ﾎﾆｬﾗﾗ of non-object" のエラーメッセージを FUNC_ARG のフェッチでも使うよう修正
- FUNC_ARG ってなんだよ、については nikic の人から[若干の解説](https://nikic.github.io/2017/04/14/PHP-7-Virtual-machine.html)がある

## nikic: Make zip oo_addpattern test more robust
- https://github.com/php/php-src/commit/991ea9cc602d93247d35a1ce94b060f58bcd8205
- ext/zip で、oo_addpattern のテストの並列実行対応

## valga: OpenSSL: Improve non-blocking eof test
- https://github.com/php/php-src/commit/74888bede8cb62c31959bb13d92295a79b5abe2e
- [7.2~]
- ext/openssl で、テストの修正
- [PR:3809](https://github.com/php/php-src/pull/3809) から修正経緯は追える

## nikic: Enable parallel tests on Travis
- https://github.com/php/php-src/commit/10e189de76518946c2d5deb28fc10bc8e7d7d365
- [7.4~]
- Travis でテストの並列実行を有効化

## nikic: Use PHP_BINARY by default in run-tests.php
- https://github.com/php/php-src/commit/57fef27521814c575a7ea32abf4bda44f78ff400
- run-tests.php で、[PHP_BINARY](http://php.net/manual/ja/reserved.constants.php#constant.php-binary) をデフォルトで使うよう修正
- どうせいつも -P 使うんでしょ！ということらしい

## nikic: Support passing single file to bless_tests.php
- https://github.com/php/php-src/commit/e53e753c0e90df0039b4789850b2870cf92a8450
- [7.4~]
- bless_tests.php が単一ファイルや複数のディレクトリ/ファイルを受け取れるよう修正し、実行可能フラグを付けた

## dstogov: Remember __COMPILER_HALT_OFFSET__(s) in preloaded scripts
- https://github.com/php/php-src/commit/4f2ad75dbef9e338611a1a37ecc378276df07544
- [7.4~]
- ext/opcache で、[\_\_COMPILER_HALT_OFFSET\_\_](http://php.net/manual/ja/function.halt-compiler.php) を preload されたスクリプトで保持するよう修正

## nikic: Add a --shuffle mode to run-tests
- https://github.com/php/php-src/commit/e5304bb647613da0776e216afb427129d8895b3a
- run-tests.php に実行順をシャッフルする --shuffle オプションを追加
- 並列実行での問題を見つけやすくするためらしい