diff options
Diffstat (limited to 'UPGRADING.INTERNALS')
-rw-r--r-- | UPGRADING.INTERNALS | 99 |
1 files changed, 1 insertions, 98 deletions
diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index d1aca29dc4..97b281a93e 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -17,108 +17,11 @@ UPGRADE NOTES - PHP X.Y 1. Internal API changes ======================== - a. Addition of do_operation and compare object handlers - - Two new object handlers have been added: - - do_operation: - typedef int (*zend_object_do_operation_t)( - zend_uchar opcode, zval *result, zval *op1, zval *op2 TSRMLS_DC - ); - - compare: - typedef int (*zend_object_compare_zvals_t)( - zval *result, zval *op1, zval *op2 TSRMLS_DC - ); + a. zend_set_memory_limit() now takes the TSRMLS_CC macro as its last argument - The first handler is used to overload arithmetic operations. The first - argument specifies the opcode of the operator, result is the target zval, - op1 the first operand and op2 the second operand. For unary operations - op2 is NULL. If the handler returns FAILURE PHP falls back to the default - behavior for the operation. - - The second handler is used to perform comparison operations with - non-objects. The value written into result must be an IS_LONG with value - -1 (smaller), 0 (equal) or 1 (greater). The return value is a SUCCESS/FAILURE - return code. The difference between this handler and compare_objects is - that it will be triggered for comparisons with non-objects and objects of - different types. It takes precedence over compare_objects. - - Further docs in the RFC: https://wiki.php.net/rfc/operator_overloading_gmp - - b. return_value_ptr now always available, RETVAL_ZVAL_FAST macros - - The return_value_ptr argument to internal functions is now always set. - Previously it was only available for functions returning by-reference. - return_value_ptr can now be used to return zvals without copying them. - For this purpose two new macros are provided: - - RETVAL_ZVAL_FAST(zv); /* analog to RETVAL_ZVAL(zv, 1, 0) */ - RETURN_ZVAL_FAST(zv); /* analog to RETURN_ZVAL(zv, 1, 0) */ - - The macros behave similarly to the non-FAST variants with copy=1 and - dtor=0, but will try to return the zval without making a copy by utilizing - return_value_ptr. - - c. POST data handling - - The sapi_request_info's members post_data, post_data_len and raw_post_data as - well as raw_post_data_len have been replaced with a temp PHP stream - request_body. - - The recommended way to access raw POST data is to open and use a php://input - stream wrapper. It is safe to be used concurrently and more than once. - - d. Arginfo changes - - The pass_rest_by_reference argument of the ZEND_BEGIN_ARG_INFO and - ZEND_BEGIN_ARG_INFO_EX() is no longer used. The value passed to it is ignored. - - Instead a variadic argument is created using ZEND_ARG_VARIADIC_INFO(): - - ZEND_ARG_VARIADIC_INFO(0, name) /* pass rest by value */ - ZEND_ARG_VARIADIC_INFO(1, name) /* pass rest by reference */ - ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, name) - /* pass rest by prefer-ref */ - - ZEND_ARG_VARIADIC_INFO() should only be used for the last argument. - - The following changes were applied to the zend_arg_info struct: - - typedef struct _zend_arg_info { - const char *class_name; - zend_uint class_name_len; - zend_uchar type_hint; - + zend_uchar pass_by_reference; - zend_bool allow_null; - - zend_bool pass_by_reference; - + zend_bool is_variadic; - } zend_arg_info; - - The following changes were applied to the zend_internal_function_info struct: - - typedef struct _zend_internal_function_info { - zend_uint required_num_args; - zend_uchar _type_hint; - zend_bool return_reference; - - zend_bool pass_rest_by_reference; - + zend_bool _allow_null; - + zend_bool _is_variadic; - } zend_internal_function_info; - - The CHECK_ARG_SEND_TYPE(), ARG_MUST_BE_SENT_BY_REF(), - ARG_SHOULD_BE_SENT_BY_REF() and ARG_MAY_BE_SENT_BY_REF() macros now assume - that the argument passed to them is a zend_function* and that it is non-NULL. ======================== 2. Build system changes ======================== - a. Unix build system changes - - The bison version check is now a blacklist instead of a whitelist. - - The bison binary can be specified through the YACC environment/configure - variable. Previously `bison` was assumed to be in $PATH. - - b. Windows build system changes - - |