php-master-changes 2019-04-16

今日は .gitignore の更新、不要コードの削除、新しめのバージョンの curl で廃止予定関数を使わないようにする修正、デフォルトの php.ini の typo の修正、7.2 〜 7.3 系の開発バージョンの引き上げ、ArrayIterator が 7.3.0 からバグっていた問題の修正、ハッシュテーブルの実装修正、JIT の Context Threading の実装を改善する修正があった！

# 2019-04-16
## petk: Remove not needed extension generated files gitignores
- https://github.com/php/php-src/commit/68842534616cd0ab29af4c1b8966c4ebf9900c2c
- [7.4~]
- .gitignore で不要になった行の削除

## dstogov: execute_data->return_value is not used for internal functions
- https://github.com/php/php-src/commit/3f7bf35e169556f441e5840909261f1677fff640
- [7.4~]
- 内部関数では execute_data->return_value は使われていないため初期化コードを削除

## cmb69: Use curl_mime_*() functions if available
- https://github.com/php/php-src/commit/a83b68ba56714bfa06737a61af795460caa4a105
- [7.4~]
- ext/curl で、新しめのバージョンの curl で廃止予定関数を使わないよう修正

## nikic: Partial fix for bug [#77903](https://bugs.php.net/bug.php?id=77903)
- https://github.com/php/php-src/commit/e1b4cabbd6d5ce72bb73ec4988b91c1e62c71335
- ArrayIterator が [7.3.0 からバグっていた](https://3v4l.org/Ft0Dh)問題の部分的修正
- とりあえずハッシュテーブルの無効な内部ポインタでは処理しないようにした

## nikic: Fix second part of bug [#77903](https://bugs.php.net/bug.php?id=77903)
- https://github.com/php/php-src/commit/9a9eed472b05292f8e8aa82129ea5d1da4b0e0c2
- ↑の残っていた部分の修正
- テストコードを [3v4l に投げる](https://3v4l.org/OAKNO)と、わりと「にゃーん」という気持ちになる

## nikic: s/mysql_connect()/mysqli_connect() in php.ini
- https://github.com/php/php-src/commit/9a85a944d8ed79a9f006873be5c5f762e037ccbf
- [7.3~]
- デフォルトの php.ini で、mysql_connect() と書いてあったのを mysqli_connect に修正

## cmb69: Prepare main branch for PHP 7.3.6
- https://github.com/php/php-src/commit/5ae49c43dc618ad373b88480a1662e480bd125fb
- [7.3~]
- 7.3 系の開発バージョンを 7.3.6 に引き上げ

## nikic: Fix HT flags copying wrt iterator count
- https://github.com/php/php-src/commit/f9a755d0d27eebd02fdeb9b1750aaca70b15f409
- [7.3~]
- HT_FLAGS のコピー時イテレータ数を考慮するよう修正
- [PHP 7 の foreach 修正](https://wiki.php.net/rfc/php7_foreach) 時に[ハッシュテーブルに紐づくイテレータの数を管理するような修正](https://github.com/php/php-src/commit/15a23b1218b3e38630d677751a975907daa2cd54)が入っている
- [HT_FLAGS](https://github.com/php/php-src/blob/39724f4645897a3e2f4d7f90c7961b5f0507c888/Zend/zend_hash.h#L46) にはこれが[含まれてる](https://github.com/php/php-src/blob/39724f4645897a3e2f4d7f90c7961b5f0507c888/Zend/zend_types.h#L252)
- 不要な箇所ではイテレータ数をコピーせずマスクするよう修正している

## nikic: Don't overwrite iterator count during real init
- https://github.com/php/php-src/commit/bd6ebf40b205387457d51288691e31a05ce7ad27
- [7.4~]
- ハッシュテーブルの "real init" 時にイテレータ数を上書きしないよう修正
- [シリアライズ関係で入った奴？](https://github.com/php/php-src/commit/62c448ab8b0f38489af4b9c02061506b65b00c91)っぽいけどあまり追っておらずよく分かっておらず

## dstogov: Improved support for "context threading" (not enabled).
- https://github.com/php/php-src/commit/f603f5c63caa6cdd94e0cf6540082efa9345f071
- ext/opcache/jit で、（現状ではデフォルト無効の）[Context Threading](http://higepon.hatenablog.com/entry/20080510/1210414499) の実装を改善
- リンク先の説明見てて i386 で eip の値をとるのに call-pop だと call と ret の対応崩れてプロセッサの分岐予測を乱すから call-mov-ret を使おうみたいな話を昔聞いたのを思い出した
- PHP の JIT エンジンでは呼び出しの多いベンチマークでは 25% 程度の性能向上があったらしい、けど別の再帰のベンチマークでは遅くなったらしい

## remicollet: next is 7.2.19
- https://github.com/php/php-src/commit/6c44a71e4a0fd86c885a939a0b2f2ae082dcdf34
- [7.2~]
- 7.2 系の開発バージョンを 7.2.19 へ引き上げ