php-master-changes 2019-06-28

この日はproc_open() でシェルを通さずコマンド起動できる機能の追加、不要な条件コンパイルの削除、ドキュメントの更新、password_needs_rehash() が別のアルゴリズムで作られたハッシュ値について false を返す問題の修正、メモリリークの修正、run-tests.php の修正、opcache での ZTS ロックの解放漏れの修正、use-after-free の修正、phpdbg で strndup() でなく zend_strndup() を使うようにする修正、tsrm_is_shutdown() の実装、soap エラー処理オーバヘッドの改善、pdo_sqlite で SEGV が起きる問題の修正、tracked arena allocator の追加、境界外読み込みの修正、libmysql を使おうとした際のコンパイルエラーの修正、Azure Pipelines での asan と ubsan を定期実行設定、zend_ast_export() が参照を含む配列で & を付けない問題の修正、メモリリークの修正、コンパイラの警告潰し、不要コードの削除があった！

# 2019-06-28
## petk: Sync HAVE_HASH, HAVE_HASH_EXT, PHAR_HASH_OK symbols
- https://github.com/php/php-src/commit/033cafacbd8b184260c91a74ea7956b302857706
- [7.4~]
- HAVE_HASH、HAVE_HASH_EXT、PHAR_HASH_OK 絡みの不要な条件コンパイルの削除

## petk: Remove HAVE_STRCOLL check
- https://github.com/php/php-src/commit/638c21765c029f637e45c00a3528ff8ea10c3b72
- [7.4~]
- HAVE_STRCOLL の不要な条件コンパイル / テストの SKIPIF の削除
- C89 で strcoll() は標準化されてるからというやつ

## petk: Fix typo
- https://github.com/php/php-src/commit/05bc5169da196ba3ee3d1c4f44716073bb8a85d9
- typo の修正

## petk: Catch up with some recent changes [ci skip]
- https://github.com/php/php-src/commit/35b6a9f75a5de21bc0d7c311fbf7b5c3f255420b
- [7.4~]
- UPGRADING、UPGRADING.INTERNAL に最近めの修正内容を反映

## sgolemon: Bugfix [#78208](https://bugs.php.net/bug.php?id=78208) Needs rehash with an unknown algo should always return true.
- https://github.com/php/php-src/commit/27f1f3ed1a040a7f20bd9bb16af7bf219f4df97f
- [7.4~]
- password_needs_rehash() が別のアルゴリズムで作られたハッシュ値について false を返す問題の修正

## nikic: Fix custom heap free
- https://github.com/php/php-src/commit/70fa4715a4209049769b8a62687f15e403183120
- [7.4~]
- カスタムヒープの解放処理を修正

## nikic: run-tests: Don't pass --INI-- settings to --SKIPIF--
- https://github.com/php/php-src/commit/b195412bf385cad9d40b1a6669e422fdd91b5e70
- [7.4~]
- run-tests.php の修正
- `--INI--` の設定を SKIPIF へ渡さないようにしている
- INI 設定でこけるようなテストケースを用意する際に SKIPIF 判定がされなくなっちゃう、という話らしい

## nikic: Fix init_file leak in phpdbg
- https://github.com/php/php-src/commit/8c4d199851fb84789b6c23a755e5b03e2f653e74
- [7.4~]
- sapi/phpdbg で、メモリリークの修正

## nikic: Free ZTS lock in opcache
- https://github.com/php/php-src/commit/a78adce5cb766a3e13328bd0d79d6ac599f3f8bc
- [7.4~]
- ext/opcache で、終了処理時に ZTS のロックを解放するよう修正

## nikic: Fix mysqlnd memory leak
- https://github.com/php/php-src/commit/f365d0e00ed93b1c33e984ff3b4cc8677cbca193
- [7.4~]
- ext/mysqlnd で、メモリリークの修正

## dstogov: Fixed use-after-free
- https://github.com/php/php-src/commit/ba8033feb0c2e8c6665a55d13ae2d0957ce72add
- [7.4~]
- 終了処理での use-after-free の修正

## cmb69: Use the portable zend_strndup() instead of strndup()
- https://github.com/php/php-src/commit/bc0db8ce453aab34941cfe510833d218e50fcae4
- [7.4~]
- sapi/phpdbg で、strndup() でなく zend_strndup() を使うよう修正

## krakjoe: implement tsrm_is_shutdown API
- https://github.com/php/php-src/commit/68485f8ab4df0e1b3e4f446006ce25b6be358975
- [7.4~]
- TSRM の API として tsrm_is_shutdown() の実装

## dstogov: Reduce overhead
- https://github.com/php/php-src/commit/143f4e3b5c4d72ae105adb14bde0ecdf361fbbf0
- [7.4~]
- ext/soap で、エラー処理のオーバヘッドが邪魔になる部分を減らすよう修正

## nikic: Add support for proc_open() with a command array
- https://github.com/php/php-src/commit/8be051015e04ce6151da77581922eea65330f354
- [7.4~]
- [FR:78177](https://bugs.php.net/bug.php?id=78177) で [PR:4305](https://github.com/php/php-src/pull/4305)
- [proc_open()](https://www.php.net/manual/ja/function.proc-open.php) で文字列でなく配列でコマンドを指定し、シェルを通さず起動できる機能の追加
- Windows では引数のエスケープも行う

## vincent4vx: Fix bug [#78192](https://bugs.php.net/bug.php?id=78192) PDO SQLite SegFault when reuse statement after schema has changed
- https://github.com/php/php-src/commit/05c00a832c7b395398ef8e60edd8a7ec25439861
- [7.2~]
- ext/pdo_sqlite で、スキーマ変更後に PDOStatement を使い回すと SEGV を起こす問題の修正

## nikic: Add tracked arena allocator
- https://github.com/php/php-src/commit/7632a411e3b839e6a438aa1367ec3d6f310d3d90
- [7.4~]
- tracked arena allocator の追加
- -DZEND_TRACK_ARENA_ALLOC で有効化
- Arena についてデバッグ用にシステムのメモリアロケータを使ってツールでのメモリリークチェックをやれるようにしている
- myqlnd で自前実装を持っていたのは「いらなくね？」と置き換えてる

## nikic: Fix out-of-bounds read in array compilation
- https://github.com/php/php-src/commit/9f81c56e42ebaaea800c7304cf8cb39acedf1c98
- [7.4~]
- 配列コンパイル時の境界外読み込みの修正

## sebpop: Fix compilation errors when building against libmysql
- https://github.com/php/php-src/commit/70ef87539d7723e22ec3659a3ac2bec0511d12f9
- ext/mysqli で、mysqlnd でなく libmysql を使おうとした際のコンパイルエラーを修正

## nikic: Update error message in libmysql test
- https://github.com/php/php-src/commit/c0bf3bc50cfe1ef47a233d5fa3763d7581a57871
- [7.4~]
- ext/mysqli で、libmysql 利用のテストの期待出力に PHP4 形式のコンストラクタがあったのを修正

## nikic: Avoid reliance on arena details on phpdbg oplog
- https://github.com/php/php-src/commit/50cce5eb4f7c2627622875d9360b66b6c3234afe
- [7.4~]
- sapi/phpdbg で、oplog が arena の実装詳細へ依存していたのを修正

## nikic: Fix out of bounds read in sccp
- https://github.com/php/php-src/commit/ca6f41aa5a15a44f841e42c7255294d521c95d5d
- [7.4~]
- ext/opcache で、境界外読み込みの修正

## nikic: Set up asan+ubsan scheduled build on azure
- https://github.com/php/php-src/commit/54dd762f596d4b0ea97d6d10e9d0c96e0f33e76e
- [7.4~]
- Azure Pipelines の設定で、asan と ubsan を定期実行するよう修正
- asan で遅すぎたり動かなかったりするテストはスキップするようにしている

## sunnyeo: Fix bugs in AST printer
- https://github.com/php/php-src/commit/f7327b62442304707f1c6466782c9f8530b61788
- [7.2~]
- zend_ast_export() が参照を含む配列で & を付けない問題の修正

## nikic: Fix arginfo leak in disable_functions
- https://github.com/php/php-src/commit/36983035404fa6a6027addd3589832adb93c92ac
- [7.4~]
- disable_functions の処理での arginfo の解放漏れを修正

## nikic: Mark ifunc resolver functions as unused
- https://github.com/php/php-src/commit/88d52ae7aabec35913b8b4115315729e5f492a27
- [7.4~]
- clang が \_\_attribute\_\_((ifunc)) での指定を無視して文句を言うので ZEND_ATTRIBUTE_UNUSED でマーク

## nikic: Remove phpdbg_xml_asprintf()
- https://github.com/php/php-src/commit/cf29c0f212dd2f3cbf4ba880230fe7824db73ee1
- [7.4~]
- sapi/phpdbg で、使われてなさそうな関数 phpdbg_xml_asprintf() を削除