Browse Source

[ci skip] Fix UPGRADING.INTERNALS, seems it was not reset after 7.2

branch off
pull/2907/head
Anatol Belski 9 years ago
parent
commit
7d14dcc084
  1. 90
      UPGRADING.INTERNALS

90
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.
Loading…
Cancel
Save