LoginSignup
0

More than 5 years have passed since last update.

php-master-changes 2018-10-02

Posted at

今日は内部クラスの静的プロパティの扱い修正、run_time_cache をヒープで持つ部分や内部フラグのリファクタ、ext/mbstringのバグ修正があった!

2018-10-02

dstogov: Allocate only necessary space for static properties of internal classes in ZTS mode.

dstogov: Rename ZEND_ACC_NO_RT_ARENA into ZEND_ACC_HEAP_RT_CACHE and use it for pseudo-main op_arrays.

  • https://github.com/php/php-src/commit/26065662692f2ce7d1b7ebd1ab6c1c96d177a067
  • ZEND_ACC_NO_RT_ARENA を ZEND_ACC_HEAP_RT_CACHE と改名し、クロージャだけでなくトップレベル main の擬似 op_array でも使うようリファクタ
  • op_array は run_time_cache を持つ
  • 基本的に同じクロージャーは同じ Arena の領域を run_time_cache に使うが、\Closure::call() などでスコープを変えて使う際には Arena ではなくヒープへ別途確保、という修正が2015年にあって、この際ヒープへ run_time_cache が確保されてることを示すよう導入されたのが ZEND_ACC_NO_RT_ARENA

dstogov: Make ZEND_ACC_IMMUTABLE and ZEND_ACC_HAS_TYPE_HINTS to be common (for functions and classes)

dstogov: typo

nikic: Don't fall back to vtbl_pass if no matching vtbl found

  • https://github.com/php/php-src/commit/9cfd8f43c2a6386bcf1567a5c0de47dcb182b109
  • [7.3~]
  • ext/mbstring で vtbl_pass へのフォールバックを廃止
  • mbstring の文字コード変換は、 mbfl_convert_vtbl という、各エンコーディング間の変換処理を持つ C 言語構造体というか関数テーブルというか C 言語でオブジェクト指向!みたいなノリのブツがあり、入力と出力のエンコーディングに応じ適切なものを使う
  • vtbl_pass は素通し用で、適切な変換方法が見つからない場合に使われていたが、これをやめてエラーとするよう修正、かな
  • 変換元と変換先が同じ場合には vtbl_pass が使われる
  • これ BC break ではないのだろうか?という素朴な疑問
  • ↓のバグ修正の一環で「わかりづらいわ!」となって直したっぽいかな

nikic: Fixed bug #76958

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0