PHP

php-master-changes 2019-01-08

今日は幾つかの拡張の微妙なコード整理、mysqlnd のリファクタリング、FastZPP のマクロ内変数定義へのアンダースコア追加、opcache の修正、mb_ereg_replace() の 7.2 以前からの非互換修正があった!

2019-01-08

nikic: Remove unnecessary uses of object_and_properties_init

  • https://github.com/php/php-src/commit/ba5cb2eb325ffb933e4120c173c44e2e674e1506
  • 不要に object_and_properties_init() を使ってる箇所を object_init_ex() へ置き換えるコード整理
  • object_and_properties_init() は 第 3 引数でハッシュテーブルをとり、プロパティの初期化に利用する
  • object_init_ex() は 第 3 引数 に 0 を渡して object_and_properties_init() を呼ぶラッパーなので、やってることは変わらず、単にプロパティ指定ここではしないんだよというのの明示かな

Andrey Hristov: Simplify the command factory

Andrey Hristov: Const changes

twose: Prefix error_code with underscore in FastZPP implementation

remicollet: cleanup merge

nikic: Don't swap operands of ZEND_MUL

  • https://github.com/php/php-src/commit/1165a9068cbf3c3c24a78b47e0effcf9b90ec5bc
  • [7.2~]
  • ext/opcache で、$i=expr+$i$i=$i+expr に変換して $i+=expr にするような最適化処理の際、ZEND_MUL を対象から除外、かな
  • 行列操作みたいなの用に演算子オーバーロードが行われる際は積が常に可換ではなくなるから、ということらしい
  • 実際そんなのやる拡張とかあんのかな

nikic: Fixed bug #77428

laruence: Fixed bug #77266 (Assertion failed in dce_live_ranges)