-
Added short array syntax support ([1,2,3]), see UPGRADING guide for full details.
rsky0711 at gmail . com
sebastian.deutsch at 9elements . com
Pierre
-
Added binary number format (0b001010).
Jonah dot Harris at gmail dot com
-
Added support for Class::{expr}() syntax (Pierrick)
-
Added multibyte support by default. Previously PHP had to be compiled with --enable-zend-multibyte. Now it can be enabled or disabled through the zend.multibyte directive in php.ini.
-
Removed compile time dependency from ext/mbstring (Dmitry)
-
Added support for Traits.
Stefan
with fixes by Dmitry and Laruence
-
Added closure $this support back.
-
Added array dereferencing support.
-
Added callable typehint.
-
Added indirect method call through array. FR #47160.
-
Added DTrace support.
-
Added class member access on instantiation (e.g.
new foo)->bar()) support. (Felipe
-
<?= is now always available regardless of the short_open_tag setting.
-
Implemented Zend Signal Handling (configurable option --enable-zend-signals, off by default).
Lucas Nealan
Arnaud Le Blanc
Brian Shire
Ilia
-
Improved output layer, see README.NEW-OUTPUT-API for internals.
-
Improved UNIX build system to allow building multiple PHP binary SAPIs and one SAPI module the same time. FR #53271, FR #52419.
-
Implemented closure rebinding as parameter to bindTo.
-
Improved the warning message of incompatible arguments.
-
Improved ternary operator performance when returning arrays.
-
Changed error handlers to only generate docref links when the docref_root php.ini setting is not empty.
-
Changed silent conversion of array to string to produce a notice.
-
Changed default encoding from ISO-8859-1 to UTF-8 when not specified in htmlspecialchars and htmlentities.
-
Changed casting of null/''/false into an Object when adding a property from E_STRICT into a warning.
-
Changed E_ALL to include E_STRICT.
-
Disabled Windows CRT warning by default, can be enabled again using the php.ini directive windows_show_crt_warnings.
-
Fixed bug
#55378: Binary number literal returns float number though its value is small enough.
-
Improved Zend Engine memory usage: (Dmitry)
-
Improved parse error messages.
-
Replaced zend_function.pass_rest_by_reference by ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags.
-
Replaced zend_function.return_reference by ZEND_ACC_RETURN_REFERENCE in zend_function.fn_flags.
-
Removed zend_arg_info.required_num_args as it was only needed for internal functions. Now the first arg_info for internal functions (which has special meaning) is represented by the zend_internal_function_info structure.
-
Moved zend_op_array.size, size_var, size_literal, current_brk_cont, backpatch_count into CG(context) as they are used only during compilation.
-
Moved zend_op_array.start_op into EG(start_op) as it's used only for 'interactive' execution of a single top-level op-array.
-
Replaced zend_op_array.done_pass_two by ZEND_ACC_DONE_PASS_TWO in zend_op_array.fn_flags.
-
op_array.vars array is trimmed (reallocated) during pass_two.
-
Replaced zend_class_entry.constants_updated by ZEND_ACC_CONSTANTS_UPDATED in zend_class_entry.ce_flags.
-
Reduced the size of zend_class_entry by sharing the same memory space by different information for internal and user classes. See zend_class_entry.info union.
-
Reduced size of temp_variable.
-
Improved Zend Engine - performance tweaks and optimizations: (Dmitry)
-
Inlined most probable code-paths for arithmetic operations directly into executor.
-
Eliminated unnecessary iterations during request startup/shutdown.
-
Changed $GLOBALS into a JIT autoglobal, so it's initialized only if used.
this may affect opcode caches!
-
Improved performance of @ (silence) operator.
-
Simplified string offset reading. Given $str="abc" then $str[1][0] is now a legal construct.
-
Added caches to eliminate repeatable run-time bindings of functions, classes, constants, methods and properties.
-
Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed.
-
ZEND_RECV now always has IS_CV as its result.
-
ZEND_CATCH now has to be used only with constant class names.
-
ZEND_FETCH_DIM_? may fetch array and dimension operands in different order.
-
Simplified ZEND_FETCH_*_R operations. They can't be used with the EXT_TYPE_UNUSED flag any more. This is a very rare and useless case. ZEND_FREE might be required after them instead.
-
Split ZEND_RETURN into two new instructions ZEND_RETURN and ZEND_RETURN_BY_REF.
-
Optimized access to global constants using values with pre-calculated hash_values from the literals table.
-
Optimized access to static properties using executor specialization. A constant class name may be used as a direct operand of ZEND_FETCH_* instruction without previous ZEND_FETCH_CLASS.
-
zend_stack and zend_ptr_stack allocation is delayed until actual usage.