mirror of
https://github.com/php/php-src.git
synced 2024-11-23 09:54:15 +08:00
94 lines
3.8 KiB
Plaintext
94 lines
3.8 KiB
Plaintext
$Id$
|
|
|
|
UPGRADE NOTES - PHP X.Y
|
|
|
|
1. Internal API changes
|
|
a. virtual_file_ex
|
|
b. stat/lstat support
|
|
c. readlink support
|
|
d. layout of some core ZE structures (zend_op_array, zend_class_entry, ...)
|
|
e. Zend\zend_fast_cache.h has been removed
|
|
f. API Signature changes
|
|
|
|
========================
|
|
1. Internal API changes
|
|
========================
|
|
|
|
a. virtual_file_ex
|
|
|
|
virtual_file_ex takes now a TSRM context as last parameter:
|
|
CWD_API int virtual_file_ex(cwd_state *state, const char *path,
|
|
verify_path_func verify_path, int use_realpath TSRLS_DC);
|
|
|
|
b. stat/lstat support
|
|
|
|
lstat is now available on all platforms. On unix-like platform
|
|
php_sys_lstat is an alias to lstat (when avaible). On Windows it is now
|
|
available using php_sys_lstat. php_sys_stat and php_sys_lstat usage is recommended
|
|
instead of calling lstat directly, to ensure portability.
|
|
|
|
c. readlink support
|
|
|
|
readlink is now available on all platforms. On unix-like platform
|
|
php_sys_readlink is an alias to readlink (when avaible). On Windows it is now
|
|
available using php_sys_readlink. php_sys_readlink usage is recommended
|
|
instead of calling readlink directly, to ensure portability.
|
|
|
|
d. layout of some core ZE structures (zend_op_array, zend_class_entry, ...)
|
|
|
|
. zend_function.pass_rest_by_reference is replaced by
|
|
ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags
|
|
. zend_function.return_reference is replaced by ZEND_ACC_RETURN_REFERENCE
|
|
in zend_function.fn_flags
|
|
. zend_arg_info.required_num_args removed. it was needed only for internal
|
|
functions. Now the first arg_info for internal function (which has special
|
|
meaning) is represented by zend_internal_function_info structure.
|
|
. zend_op_array.size, size_var, size_literal, current_brk_cont,
|
|
backpatch_count moved into CG(context), because they are used only during
|
|
compilation.
|
|
. zend_op_array.start_op is moved into EG(start_op), because it's used
|
|
only for 'interactive' execution of single top-level op-array.
|
|
. zend_op_array.done_pass_two is replaced by ZEND_ACC_DONE_PASS_TWO in
|
|
zend_op_array.fn_flags.
|
|
. op_array.vars array is trimmed (reallocated) during pass_two.
|
|
. zend_class_entry.constants_updated is replaced by
|
|
ZEND_ACC_CONSTANTS_UPDATED in zend_class_entry.ce_flags
|
|
. the size of zend_class_entry is reduced by sharing the same memory space
|
|
by different information for internal and user classes.
|
|
See zend_class_inttry.info union.
|
|
|
|
e. Zend\zend_fast_cache.h
|
|
It should not have been used anymore since php5, but now this header has
|
|
been removed. The following macros are not available anymore:
|
|
|
|
ZEND_FAST_ALLOC(p, type, fc_type)
|
|
ZEND_FAST_FREE(p, fc_type)
|
|
ZEND_FAST_ALLOC_REL(p, type, fc_type)
|
|
ZEND_FAST_FREE_REL(p, fc_type)
|
|
|
|
Use emalloc, emalloc_rel, efree or efree_rel instead.
|
|
|
|
f. API Signature changes
|
|
. zend_list_insert
|
|
ZEND_API int zend_list_insert(void *ptr, int type TSRMLS_DC);
|
|
call: zend_list_insert(a, SOMETYPE TSRMLS_CC);
|
|
NB: If zend_list_insert is used to register a resource,
|
|
ZEND_REGISTER_RESOURCE could be used instead.
|
|
|
|
. php_le_stream_context(TSRMLS_C)
|
|
PHPAPI php_stream_context *php_stream_context_alloc(TSRMLS_D)
|
|
call: context = php_stream_context_alloc(TSRMLS_C);
|
|
|
|
. php_stream_context_alloc
|
|
PHPAPI php_stream_context *php_stream_context_alloc(TSRMLS_D);
|
|
call: context = php_stream_context_alloc(TSRMLS_C);
|
|
. sapi_register_default_post_reader
|
|
SAPI_API int sapi_register_default_post_reader(void (*default_post_reader)(TSRMLS_D) TSRMLS_DC);
|
|
|
|
. sapi_register_treat_data
|
|
SAPI_API int sapi_register_treat_data(void (*treat_data)(int arg, char *str, zval *destArray TSRMLS_DC) TSRMLS_DC);
|
|
|
|
. sapi_register_input_filter
|
|
SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC), unsigned int (*input_filter_init)(TSRMLS_D) TSRMLS_DC);
|
|
|