diff options
Diffstat (limited to 'UPGRADING.INTERNALS')
-rw-r--r-- | UPGRADING.INTERNALS | 90 |
1 files changed, 17 insertions, 73 deletions
diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index 59ac0bbadc..c76780fd56 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -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. - |