php-master-changes 2019-02-12

今日は @ で  Fatal を黙らせないようにする修正、Windows 32-bit 版のビルド修正、ext/wddx の非推奨化、AppVeyor の SDK バージョン更新、移植性のないマクロ利用コードの修正、mysqlnd でのメモリリークの修正、FFI のバグ修正、EXIF のメモリリーク修正、PHP Testfest 2017 のテスト取り込み、DatePeriod のリファクタリングとメモリリーク修正、pcntl で pid と uid がリアルタイムシグナルのハンドラ内でとれるようにする修正、FreeBSD 用のソケットオプション追加対応、配列の始点インデックス負値の対応で入ったバグの修正、http_build_query() が指数表記の + を正しくエンコードしない問題の修正、defined()、constant() で private なクラス定数へアクセスしても Fatal にならないようにする修正、ドキュメントの修正、GCC の Global Register Variables の利用箇所の改善、TSRM のマクロで置き換えられる箇所を置き換えるリファクタリングがあった！

この調子でコミットの流量ある日が続くと、そのうち面倒になって「今日は色々あった！」で日々済ましていくようになる気がする。

# 2019-02-12
## nikic: Don't silence fatal errors with @
- https://github.com/php/php-src/commit/a302d1161036988fe220ecd8ecd73e6af1a116fc
- `@` で Fatal を黙らせないよう修正
- internals で[話の出ていた](https://externals.io/message/103513)奴
- エラーハンドラで `@` 利用時に error_reporting() が 0 を返すよう期待しているコードは書き換えが必要

## nikic: Add missing braces in UPGRADING example
- https://github.com/php/php-src/commit/61ef088f21619a9baf84479086cc37a93e5ca4c8
- ↑の書き換え例で中括弧が抜けていた

## weltling: Fix 32-bit build
- https://github.com/php/php-src/commit/877ce69b3077ed1e2bb229c05b7b510f3567696d
- [7.4~]
- Windows での [Ctrl+C 対応](https://qiita.com/sj-i/items/5bb9a7e7d8fe4228da60#weltling-implement-fr-77377-handle-ctrlc-in-windows)箇所について 32-bit 版でビルドに失敗してたのを直したのかな

## cmb69: Deprecate ext/wddx
- https://github.com/php/php-src/commit/6ac8b0a783b20ba28667267b0b09a682bcb129e3
- [7.4~]
- ext/wddx の非推奨化
- 先日 [RFC](https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx) が受理された奴、[次は PECL 送りに](https://externals.io/message/103755#104351)なる

## weltling: Update SDK version for AppVeyor
- https://github.com/php/php-src/commit/e74a91862186bba5bb3eacb5b60631bc174b225c
- [7.2~]
- AppVeyor の SDK バージョンを更新
- ところで AppVeyor ってなんて発音すんの？あっぷべよーる？あっぷべいやー？

## weltling: Replace broken binary SDK version
- https://github.com/php/php-src/commit/186b5de57537a77e764420119257aa296bdeb627
- [7.2~]
- AppVeyor の SDK バージョンを更新
- なんかバイナリ壊れてるバージョンだったらしい

## dstogov: Avoid dependency on "struct flock" fields order.
- https://github.com/php/php-src/commit/9222702633c63254b08466b322266b647ac3e905
- [7.2~]
- struct flock のフィールド順に依存した初期化マクロを使わないようにした
- まあ POSIX.1-2017 でもフィールド順の規定なんか[無い](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html)しな

## dstogov: Fixed bug [#77599](https://bugs.php.net/bug.php?id=77599) (Unbuffered queries; native prepared statements memory leak)
- https://github.com/php/php-src/commit/b6e58dcd2262c30c0657624ca3c372dc90d5a031
- [7.3~]
- ext/mysqlnd で、ATTR_EMULATE_PREPARES を false、MYSQL_ATTR_USE_BUFFERED_QUERY も false とした際にメモリリークする問題の修正

## dstogov: Fixed possible crash
- https://github.com/php/php-src/commit/7d4de1a77e6d2f96232a68005cdee4866e3eeb58
- [7.4~]
- ext/ffi で、クラッシュする可能性があった箇所を修正

## ramsey: Fixed bug [#77564](https://bugs.php.net/bug.php?id=77564): Memory leak in exif_process_IFD_TAG
- https://github.com/php/php-src/commit/c4294440ffc4a59a1298292b76072e6759034a68
- [7.2~]
- ext/exif で、UserComment が複数ある場合にメモリリークする問題の修正

## coudenysj: Test mb_str* functions for 'unknown encoding' warnings
- https://github.com/php/php-src/commit/d8b2705d6262f208b593b7c43cd66670dffc5a12
- [7.4~]
- ext/mbstring で、mb_str*() の不明なエンコーディング利用時の警告が正しく出ることのテストを追加
- [PHP Testfest 2017](https://phptestfest.org/groups/2017/)

## nikic: Remove "defensive copy" of DatePeriod properties
- https://github.com/php/php-src/commit/a109fddba4e3fbb6e3a2e008c0fa20a57f26103d
- [7.2~]
- ext/date で、[DatePeriod](http://php.net/manual/ja/class.dateperiod.php) の「防御的コピー」を削除
- get_properties() でコピーされっから大丈夫だよということらしい

## hsldymq: Make pid & uid available while handling realtime signals
- https://github.com/php/php-src/commit/b5cb3ac8ecab71bfe1eb7d5b2d7a48970e11a5b4
- [7.2~]
- ext/pcntl で、pid と uid がリアルタイムシグナルのハンドラ内でとれるよう修正

## devnexen: Adding bunch of FreeBSD socket options flags specifics.
- https://github.com/php/php-src/commit/4e87e56e22958ae43078c216178e2c080c722f14
- [7.4~]
- ext/sockets で、FreeBSD 用のソケットオプション SO_LABEL、SO_PEERLABEL、SO_LISTENQLIMIT、SO_LISTENQLEN、SO_USER_COOKIE に対応

## dstogov: Fixed resoure numbering
- https://github.com/php/php-src/commit/87bfafe8bf19acfc3611f93c94f98d8eb41d66e3
- リソース番号が正しく振られなくなっていたのを修正
- 配列の始点インデックス負値の[対応](https://qiita.com/sj-i/items/5bb9a7e7d8fe4228da60#pmmaga-implement-the-negative_array_index-rfc)で[入った](https://github.com/php/php-src/blame/6732028273b109cb342387ab5580c367f629d0ac/Zend/zend_hash.c#L223)バグかな

## nikic: Fixed bug [#77608](https://bugs.php.net/bug.php?id=77608)
- https://github.com/php/php-src/commit/8e34de475699a4aa0fbc7b8430574b56dc839362
- [7.2~]
- [http_build_query()](http://php.net/manual/ja/function.http-build-query.php) が指数表記の `+` を正しくエンコードしない問題の修正
- 謎の特別扱いが入っていた

## dstogov: typo
- https://github.com/php/php-src/commit/dbd7fbabe9f0d97b87afec3657ce53b4e5e25b3f
- [7.4~]
- ext/ffi で、なんか気持ちは分かるけど凄い条件式になってたのを修正
- typo と言い切る心の強さ

## DanielCiochiu: Fixed bug [#75546](https://bugs.php.net/bug.php?id=75546)
- https://github.com/php/php-src/commit/07877c46e3057bc679766898d50529be812243f3
- [7.2~]
- 実際 [#75543](https://bugs.php.net/bug.php?id=75543) だなこれ
- [defined()](http://php.net/manual/ja/function.defined.php)、[constant()](http://php.net/manual/ja/function.constant.php) で private なクラス定数へアクセスしても Fatal にならないよう修正
- 可視性は無視しないけど Fatal にはしないよという落としどころ

## nikic: Fix FFI test on Windows
- https://github.com/php/php-src/commit/1449d496701ae5ee1025b73f3d1fa85d33523622
- [7.4~]
- ext/ffi で、Windows でのテストこけを修正

## KasperFranz: Correct section number in UPGRADING
- https://github.com/php/php-src/commit/c4b77e03b1f4444b492cc056d90edb02566f6fe2
- [7.4~]
- UPGRADING のセクション番号の誤りを修正

## dstogov: More accurate handling of global registers (allow VM with single global register)
- https://github.com/php/php-src/commit/626bc3a2de517f4e0ae647324dd05ceacdfe776b
- [7.4~]
- GCC の [Global Register Variables](https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html) というのをよく使う変数のレジスタ割り当てに利用しており、[execute_data は FP、opline は IP](https://github.com/php/php-src/commit/249c2323f4b834188dd8d03fdda1a583c1f3141d#diff-062f4fde41b10a26a280eb7ee31c1470R961) の方で割当たるよう CALL の executor でなっていて、HYBRID の VM でも Global Register Variables を使えるようにするとともに、FP と IP の片方だけレジスタ指定で使うことも可能になるよう区別をはっきりさせた、かな

## dstogov: Use TSRM macros
- https://github.com/php/php-src/commit/083cfc07cc13b1804ceeaa61f44319c598c05670
- [7.4~]
- TSRM のマクロで置き換えられる箇所を置き換え