#
5a855ee8 |
| 02-Jun-2022 |
Ilija Tovilo |
Fix GH-8661: Nullsafe in coalesce triggers undefined variable warning Closes GH-8690 |
#
7850c103 |
| 16-May-2022 |
Máté Kocsis |
Add support for readonly classes (#7305) RFC: https://wiki.php.net/rfc/readonly_classes |
#
9a90bd70 |
| 12-Mar-2022 |
Ilija Tovilo |
Deprecate ${} string interpolation https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation |
#
32e2d97a |
| 20-Dec-2021 |
Tyson Andre |
Allow internal functions to declare if they support compile-time evaluation, add functions. (#7780) https://wiki.php.net/rfc/strtolower-ascii means that these functions no longer depend
Allow internal functions to declare if they support compile-time evaluation, add functions. (#7780) https://wiki.php.net/rfc/strtolower-ascii means that these functions no longer depend on the current locale in php 8.2. Before that, this was unsafe to evaluate at compile time. Followup to GH-7506 Add strcmp/strcasecmp/strtolower/strtoupper functions Add bin2hex/hex2bin and related functions Update test of garbage collection using strtolower to use something else to create a refcounted string
show more ...
|
#
192ea91d |
| 16-Dec-2021 |
Dmitry Stogov |
Avoid useless symbol table reattaching on retutn from an included op_array |
#
902d6439 |
| 11-Oct-2021 |
Nikita Popov |
Deprecate implicit dynamic properties Writing to a proprety that hasn't been declared is deprecated, unless the class uses the #[AllowDynamicProperties] attribute or defines __get()/
Deprecate implicit dynamic properties Writing to a proprety that hasn't been declared is deprecated, unless the class uses the #[AllowDynamicProperties] attribute or defines __get()/__set(). RFC: https://wiki.php.net/rfc/deprecate_dynamic_properties
show more ...
|
#
16e9e666 |
| 20-Oct-2021 |
Nikita Popov |
Encode string offset error reason in extended_value For FETCH_DIM_W etc encode the context it is being used in (dim, obj, ref or incdec) so we can throw an appropriate error message
Encode string offset error reason in extended_value For FETCH_DIM_W etc encode the context it is being used in (dim, obj, ref or incdec) so we can throw an appropriate error message for invalid string offset use, in a way that does not require inspecting neighboring opcodes. The implementation is similar to the flags used for FETCH_OBJ. This means that we do not have to be careful about preserving following opcodes during optimization. Closes GH-7599.
show more ...
|
#
01c9282d |
| 20-Oct-2021 |
Dmitry Stogov |
Merge branch 'PHP-8.1' * PHP-8.1: JIT: Fixed megamorphic call detection
|
#
7e53b08c |
| 20-Oct-2021 |
Dmitry Stogov |
Merge branch 'PHP-8.0' into PHP-8.1 * PHP-8.0: JIT: Fixed megamorphic call detection
|
#
ddaf64b5 |
| 14-Oct-2021 |
Dmitry Stogov |
Avoid non-immutable map_ptr indirection |
Revision tags: php-8.0.11, php-7.4.24, php-7.3.31, php-8.1.0RC2, php-7.4.24RC1, php-8.0.11RC1 |
|
#
5bda4cd2 |
| 04-Sep-2021 |
codinghuang |
Support specifying start position in compile_string Add additional zend_compile_position argument, which can be either AT_SHEBANG, AT_OPEN_TAG or AFTER_OPEN_TAG. The previous behavior
Support specifying start position in compile_string Add additional zend_compile_position argument, which can be either AT_SHEBANG, AT_OPEN_TAG or AFTER_OPEN_TAG. The previous behavior corresponds to AFTER_OPEN_TAG. Closes GH-7462.
show more ...
|
#
c19977d0 |
| 27-Sep-2021 |
Nikita Popov |
Fix delayed early binding with optimization It's possible for delayed early binding opcodes to get optimized away if they are "unreachable". However, we still need to attempt early b
Fix delayed early binding with optimization It's possible for delayed early binding opcodes to get optimized away if they are "unreachable". However, we still need to attempt early binding for them. (In some cases we also corrupt the early binding list outright during optimization, which is how I got here.) Fix this by storing information about delayed early binding independently of DECLARE_CLASS_DELAYED opcodes, so early binding is performed even after the opcode has been dropped.
show more ...
|
#
15bbf6f3 |
| 24-Sep-2021 |
Nikita Popov |
Automatically determine whether to reuse get_iterator() Same as with the IteratorAggregate case, allow reusing get_iterator if none of the Iterator methods are overridden. Drop the R
Automatically determine whether to reuse get_iterator() Same as with the IteratorAggregate case, allow reusing get_iterator if none of the Iterator methods are overridden. Drop the REUSE_GET_ITERATOR flag that previously allowed ArrayIterator to opt-in to unconditional get_iterator reuse, and drop the override handling it did, in favor of the automated approach.
show more ...
|
#
19888a69 |
| 15-Sep-2021 |
Nikita Popov |
Initialize UNUSED operands to sentinel value This makes it more likely that unintentional uses of UNUSED operands will result in crash rather than some hard to detect corruption of t
Initialize UNUSED operands to sentinel value This makes it more likely that unintentional uses of UNUSED operands will result in crash rather than some hard to detect corruption of the call frame.
show more ...
|
Revision tags: php-8.1.0RC1 |
|
#
07984435 |
| 26-Aug-2021 |
Nikita Popov |
Mark private compiler functions as static |
Revision tags: php-7.4.23, php-8.0.10, php-7.3.30, php-8.1.0beta3, php-8.0.10RC1, php-7.4.23RC1, php-8.1.0beta2 |
|
#
b5746a4c |
| 29-Jul-2021 |
Nikita Popov |
Drop HAS_UNLINKED_USES flag Instead always use the unlinked_uses table, which is already used if opcache is used. Not much point in having a different mechanism for the non-opcache c
Drop HAS_UNLINKED_USES flag Instead always use the unlinked_uses table, which is already used if opcache is used. Not much point in having a different mechanism for the non-opcache case.
show more ...
|
Revision tags: php-8.0.9, php-7.4.22 |
|
#
dcf5e5bb |
| 27-Jul-2021 |
Nikita Popov |
Reuse part of the class binding logic This part of DECLARE_CLASS and DECLARE_CLASS_DELAYED is the same. |
#
70195c35 |
| 27-Jul-2021 |
Nikita Popov |
Don't force property type resolution for include preloading Having all property types resolved is no longer a hard requirement for preloading, resolving the types is just an optimization
Don't force property type resolution for include preloading Having all property types resolved is no longer a hard requirement for preloading, resolving the types is just an optimization. As such, drop the special logic that forced loading of property types when include-based preloading is used. Instead only keep the code that resolves types based on actually preloaded classes. Also drop the ZEND_ACC_PROPERTY_TYPES_RESOLVED flag, which is now nearly useless and takes up flag space...
show more ...
|
#
c4f4f1ec |
| 23-Jul-2021 |
Nikita Popov |
Share zval_make_interned_string() helper The same function was defined in zend_compile.c and zend_API.c. |
#
89d01154 |
| 23-Jul-2021 |
Nikita Popov |
Remove zend_cleanup_internal_classes() If fast_shutdown is used, then we don't need to destroy static members at all. If fast_shutdown is not used, then we already loop over classes
Remove zend_cleanup_internal_classes() If fast_shutdown is used, then we don't need to destroy static members at all. If fast_shutdown is not used, then we already loop over classes to destroy static members and static variables in methods.
show more ...
|
Revision tags: php-8.1.0beta1, php-7.4.22RC1, php-8.0.9RC1, php-8.1.0alpha3, php-7.4.21, php-7.3.29, php-8.0.8, php-8.1.0alpha2, php-7.4.21RC1, php-8.0.8RC1, php-8.1.0alpha1 |
|
#
6780aaa5 |
| 02-Jun-2021 |
Nikita Popov |
Implement readonly properties Add support for readonly properties, for which only a single initializing assignment from the declaring scope is allowed. RFC: https://wiki.php.net
Implement readonly properties Add support for readonly properties, for which only a single initializing assignment from the declaring scope is allowed. RFC: https://wiki.php.net/rfc/readonly_properties_v2 Closes GH-7089.
show more ...
|
#
814a9327 |
| 16-Jul-2021 |
Nikita Popov |
Add ZEND_ACC_NOT_SERIALIZABLE flag This prevents serialization and unserialization of a class and its children in a way that does not depend on the zend_class_serialize_deny and zend
Add ZEND_ACC_NOT_SERIALIZABLE flag This prevents serialization and unserialization of a class and its children in a way that does not depend on the zend_class_serialize_deny and zend_class_unserialize_deny handlers that will be going away in PHP 9 together with the Serializable interface. In stubs, `@not-serializable` can be used to set this flag. This patch only uses the new flag for a handful of Zend classes, converting the remainder is left for later. Closes GH-7249. Fixes bug #81111.
show more ...
|
#
52d3d0d8 |
| 15-Jun-2021 |
Nikita Popov |
Add limited support for new in initializers Add support for new expressions inside parameter default values, static variable initializers, global constant initializers and attribute
Add limited support for new in initializers Add support for new expressions inside parameter default values, static variable initializers, global constant initializers and attribute arguments. RFC: https://wiki.php.net/rfc/new_in_initializers Closes GH-7153.
show more ...
|
Revision tags: php-8.0.7, php-7.4.20 |
|
#
b6958bb8 |
| 31-May-2021 |
George Peter Banyard |
Implement "Deprecate implicit non-integer-compatible float to int conversions" RFC. (#6661) RFC: https://wiki.php.net/rfc/implicit-float-int-deprecate Co-authored-by: Nikita Popov <
Implement "Deprecate implicit non-integer-compatible float to int conversions" RFC. (#6661) RFC: https://wiki.php.net/rfc/implicit-float-int-deprecate Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
show more ...
|
#
ba9c0b38 |
| 27-May-2021 |
Nikita Popov |
Export zend_unary_op_produces_error() and use in optimizer Don't repeat this logic, as it's going to become more complex. |