|
|
|
@ -1,22 +1,14 @@ |
|
|
|
PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
PHP 7.3 INTERNALS UPGRADE NOTES |
|
|
|
|
|
|
|
1. Internal API changes |
|
|
|
a. Path related functions |
|
|
|
b. php_win32_get_random_bytes() |
|
|
|
c. nice() Windows implementation |
|
|
|
d. ZEND_ACC_CLONE removed |
|
|
|
e. IS_TYPE_IMMUTABLE removed |
|
|
|
f. zend_arg_info.class_name removed |
|
|
|
g. ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX changed |
|
|
|
h. valid_symbol_table removed |
|
|
|
i. array_init() and array_init_size() |
|
|
|
j. Run-time constant operand addressing |
|
|
|
k. Array/Object recursion protection |
|
|
|
l. HASH_FLAG_PERSISTENT |
|
|
|
m. AST and IS_CONSTANT |
|
|
|
n. GC_REFCOUNT() |
|
|
|
o. zend_get_parameters() |
|
|
|
p. zend_register_persistent_resource() |
|
|
|
a. array_init() and array_init_size() |
|
|
|
b. Run-time constant operand addressing |
|
|
|
c. Array/Object recursion protection |
|
|
|
d. HASH_FLAG_PERSISTENT |
|
|
|
e. AST and IS_CONSTANT |
|
|
|
f. GC_REFCOUNT() |
|
|
|
g. zend_get_parameters() |
|
|
|
h. zend_register_persistent_resource() |
|
|
|
|
|
|
|
2. Build system changes |
|
|
|
a. Unix build system changes |
|
|
|
@ -29,37 +21,10 @@ PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
1. Internal API changes |
|
|
|
======================== |
|
|
|
|
|
|
|
a. Path related functions |
|
|
|
- CWD_API void realpath_cache_del(const char *path, size_t path_len); |
|
|
|
- CWD_API realpath_cache_bucket* realpath_cache_lookup(const char *path, size_t path_len, time_t t); |
|
|
|
- PHPAPI void php_clear_stat_cache(zend_bool clear_realpath_cache, const char *filename, size_t filename_len); |
|
|
|
- PHPAPI void php_stat(const char *filename, size_t filename_length, int type, zval *return_value); |
|
|
|
|
|
|
|
b. php_win32_get_random_bytes() |
|
|
|
The internal randomness source on Windows switched to use CNG API. |
|
|
|
|
|
|
|
c. nice() now have a Windows alternative that is implemented in win32/nice.c, using |
|
|
|
SetPriorityClass(). See the implementation for more in-depth details. This also |
|
|
|
defines HAVE_NICE. |
|
|
|
|
|
|
|
d. ZEND_ACC_CLONE is removed, but was not used in previous versions |
|
|
|
|
|
|
|
e. IS_TYPE_IMMUTABLE is removed, IS_TYPE_COPYABLE can be used instead |
|
|
|
Z_IMMUTABLE() check function is still available |
|
|
|
|
|
|
|
f. zend_arg_info class_name member is removed, use ZEND_TYPE_NAME instead |
|
|
|
|
|
|
|
g. ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX classname option is removed |
|
|
|
use ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX for simple type |
|
|
|
use ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX for object |
|
|
|
|
|
|
|
h. valid_symbol_table is removed from executor_globals. |
|
|
|
Use EG(active) instead of removed EG(valid_symbol_table) |
|
|
|
|
|
|
|
i. array_init() and array_init_size() are not functions anymore. |
|
|
|
a. array_init() and array_init_size() are not functions anymore. |
|
|
|
They don't return any values. |
|
|
|
|
|
|
|
j. In 64-bit builds PHP-7.2 and below used relative run-time constant operand |
|
|
|
b. In 64-bit builds PHP-7.2 and below used relative run-time constant operand |
|
|
|
addressing. E.g. opline->op1.constant kept an offset from start of literals |
|
|
|
table - op_array->literals. To speedup access op_array->literals was cached |
|
|
|
in execute_data->literals. So the resulting address calculated as |
|
|
|
@ -76,7 +41,7 @@ PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
RT_CONSTANT_EX, EX_CONSTANT should be substituted by RT_CONSTANT than now |
|
|
|
use "opline" (instead of "op_array") as first argument. |
|
|
|
|
|
|
|
k. Protection from recursion during processing circular data structures was |
|
|
|
c. Protection from recursion during processing circular data structures was |
|
|
|
refactored. HashTable.nApplyCount and IS_OBJ_APPLY_COUNT are replaced by |
|
|
|
single flag GC_PROTECTED. Corresponding macros Z_OBJ_APPLY_COUNT, |
|
|
|
Z_OBJ_INC_APPLY_COUNT, Z_OBJ_DEC_APPLY_COUNT, ZEND_HASH_GET_APPLY_COUNT, |
|
|
|
@ -89,10 +54,10 @@ PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
Corresponding checks should be replaced by Z_REFCOUNTED() or |
|
|
|
!(GC_GLAGS(p) & GC_IMMUTABLE). |
|
|
|
|
|
|
|
l. HASH_FLAG_PERSISTENT renamed into IS_ARRAY_PERSISTENT and moved into |
|
|
|
d. HASH_FLAG_PERSISTENT renamed into IS_ARRAY_PERSISTENT and moved into |
|
|
|
GC_FLAGS (to be consistent with IS_STR_PERSISTENT). |
|
|
|
|
|
|
|
m. zend_ast_ref structure is changed to use only one allocation. |
|
|
|
e. zend_ast_ref structure is changed to use only one allocation. |
|
|
|
zend_ast_copy() now returns zend_ast_ref (instead of zend_asr). |
|
|
|
zend_ast_destroy_and_free() is removed. ZVAL_NEW_AST() is replaced |
|
|
|
by ZVAL_AST(). |
|
|
|
@ -102,7 +67,7 @@ PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
attributes are used instead of constant flags. IS_TYPE_CONSTANT flag is |
|
|
|
removed, but Z_CONSTANT() macro is kept for compatibility. |
|
|
|
|
|
|
|
n. GC_REFCOUNT() is turned into inline function and can't be modified direcly. |
|
|
|
f. GC_REFCOUNT() is turned into inline function and can't be modified direcly. |
|
|
|
All reference-counting operations should be done through corresponding |
|
|
|
macros GC_SET_REFCOUNT(), GC_ADDREF() and GC_DELREF(). |
|
|
|
|
|
|
|
@ -110,10 +75,10 @@ PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
GC_REFCOUNT(p)-- into GC_DELREF(p), |
|
|
|
GC_REFCOUNT(p) = 1 into GC_SET_REFCOUNT(p, 1). |
|
|
|
|
|
|
|
o. The zend_get_parameters() and zend_get_parameters_ex() functions were |
|
|
|
g. The zend_get_parameters() and zend_get_parameters_ex() functions were |
|
|
|
removed. Instead zend_parse_parameters() should be used. |
|
|
|
|
|
|
|
p. New functions zend_register_persistent_resource() or |
|
|
|
h. New functions zend_register_persistent_resource() or |
|
|
|
zend_register_persistent_resource_ex() should beused to register |
|
|
|
persistent resources, instead of manual insertion into EG(persistent_list). |
|
|
|
|
|
|
|
@ -125,28 +90,7 @@ PHP 7.2 INTERNALS UPGRADE NOTES |
|
|
|
|
|
|
|
b. Windows build system changes |
|
|
|
|
|
|
|
. Minimum supported Windows versions are Windows 7/Server 2008 R2. |
|
|
|
. --enable-one-shot configure option is removed, --with-mp is usable. |
|
|
|
. The new binary tools SDK is required for Windows builds, the |
|
|
|
documentation is available under https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2 |
|
|
|
. Visual Studio 2017 is utilized for the Windows builds |
|
|
|
. Clang build with ASAN is supported with clang 5+ |
|
|
|
|
|
|
|
======================== |
|
|
|
3. Module changes |
|
|
|
======================== |
|
|
|
|
|
|
|
- Pcre: |
|
|
|
. php_pcre_replace and php_pcre_replace_impl expect a zend_string instead of a zval and |
|
|
|
is_callable_replace options is removed: |
|
|
|
- PHPAPI zend_string *php_pcre_replace(zend_string *regex, zend_string *subject_str, char *subject, int subject_len, zend_string *replace_str, int limit, int *replace_count); |
|
|
|
- PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *subject_str, char *subject, int subject_len, zend_string *replace_str, int limit, int *replace_count); |
|
|
|
|
|
|
|
- Session: |
|
|
|
. php_session_start()/session_reset_id() return value is changed from void to int. |
|
|
|
It returns SUCCESS/FAILURE. |
|
|
|
. Session module manages session status correctly. |
|
|
|
|
|
|
|
- OpenSSL: |
|
|
|
. Windows builds ship with OpenSSL 1.1 by default, lower versions are still supported with custom deps. |
|
|
|
|