Revision tags: php-7.4.0RC3, php-7.2.23, php-7.3.10, php-7.4.0RC2 |
|
#
4226c824 |
| 13-Sep-2019 |
Nikita Popov |
Fix use-after-free in assign-ref compilation zend_emit_op_data may reallocate the op_array, so the assignment of the RETURNS_FUNCTION flag may happen on an outdated opline. Rest
Fix use-after-free in assign-ref compilation zend_emit_op_data may reallocate the op_array, so the assignment of the RETURNS_FUNCTION flag may happen on an outdated opline. Restructure the code a bit to set the flag before calling zend_emit_op_data().
show more ...
|
#
e45a757b |
| 13-Sep-2019 |
Dmitry Stogov |
Fixed incorrect usage of QM_ASSIGN instruction
|
#
4b9ebd83 |
| 11-Sep-2019 |
Nikita Popov |
Allow throwing exception while loading parent class This is a fix for symfony/symfony#32995. The behavior is: * Throwing exception when loading parent/interface is allowed
Allow throwing exception while loading parent class This is a fix for symfony/symfony#32995. The behavior is: * Throwing exception when loading parent/interface is allowed (and we will also throw one if the class is simply not found). * If this happens, the bucket key for the class is reset, so it's possibly to try registering the same class again. * However, if the class has already been used due to a variance obligation, the exception is upgraded to a fatal error, as we cannot safely unregister the class stub anymore.
show more ...
|
#
d88b212e |
| 11-Sep-2019 |
Nikita Popov |
Improve "already declared" error message If this error is missing because the rtd_key was renamed to lcname, fetch the class based on lcname and use the class type and cased name fro
Improve "already declared" error message If this error is missing because the rtd_key was renamed to lcname, fetch the class based on lcname and use the class type and cased name from there.
show more ...
|
Revision tags: php-7.2.23RC1, php-7.3.10RC1 |
|
#
e81751ce |
| 06-Sep-2019 |
Nikita Popov |
Fixed bug #78502 We need to make sure that the function is fully compiled before we calculate the stack size. There already was a check for directly recursive calls, but the same iss
Fixed bug #78502 We need to make sure that the function is fully compiled before we calculate the stack size. There already was a check for directly recursive calls, but the same issue exists with indirectly recursive calls. I'm using DONE_PASS_TWO as the indication that the function is fully compiled.
show more ...
|
Revision tags: php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4 |
|
#
d1157cbc |
| 16-Aug-2019 |
Nikita Popov |
Relax closure $this unbinding deprecation Only deprecate unbinding of $this from a closure if $this is syntactically used within the closure. This is desired to support Laravel'
Relax closure $this unbinding deprecation Only deprecate unbinding of $this from a closure if $this is syntactically used within the closure. This is desired to support Laravel's macro system, see laravel/framework#29482. This should still allow us to implement the performance improvements we're interested in for PHP 8, without breaking existing use-cases.
show more ...
|
Revision tags: php-7.2.22RC1, php-7.3.9RC1 |
|
#
f3fdf570 |
| 12-Aug-2019 |
Nikita Popov |
Intern alias old_name early This is likely going to end up interned lateron at some point when the new_name is referenced somewhere. However, it may be that there are some uses that
Intern alias old_name early This is likely going to end up interned lateron at some point when the new_name is referenced somewhere. However, it may be that there are some uses that do not get interned before that. In this case we will intern a string that already have zval users, without updating the refcounted flag on those zvals. In particular this can happen with something like [Foo::class], where Foo is an imported symbol. The string it resolves to won't get interned right away, but may be interned later. use Foo as Bar; $x = [Bar::class]; var_dump(Bar::X); debug_zval_dump($x); // Will show negative refcount class Foo { const X = 1; } However, this doesn't really fix the root cause, there are probably other situations where something similar can occur.
show more ...
|
Revision tags: php-7.4.0beta2 |
|
#
afd96392 |
| 01-Aug-2019 |
Nikita Popov |
Revert "Use RW fetch for argument unpacking" This reverts commit 6913ec3282149914e999d91b056fe1cc68d15ed7. This reverts commit a9e332e02777c9b3805f6af846a4f48504109d2b. Causes h
Revert "Use RW fetch for argument unpacking" This reverts commit 6913ec3282149914e999d91b056fe1cc68d15ed7. This reverts commit a9e332e02777c9b3805f6af846a4f48504109d2b. Causes https://bugs.php.net/bug.php?id=78356, which I don't have a good solution for.
show more ...
|
Revision tags: php-7.1.31, php-7.2.21, php-7.3.8 |
|
#
6913ec32 |
| 30-Jul-2019 |
Nikita Popov |
Use RW fetch for argument unpacking Argument unpacking may need to create references inside the array that is being unpacked. However, it currently can only do this if a plain variab
Use RW fetch for argument unpacking Argument unpacking may need to create references inside the array that is being unpacked. However, it currently can only do this if a plain variable is unpacked, not for any nested accesses, because the value is fetched for read. Resolve this by fetching the operands for RW.
show more ...
|
#
4ae807e8 |
| 29-Jul-2019 |
Nikita Popov |
Fixed bug #78344 When performing a constant visibility check during compilation we might be dealing with unlinked classes and as such should account for the possibility of unresolved
Fixed bug #78344 When performing a constant visibility check during compilation we might be dealing with unlinked classes and as such should account for the possibility of unresolved parents.
show more ...
|
Revision tags: php-7.4.0beta1, php-7.2.21RC1, php-7.3.8RC1 |
|
#
4e190691 |
| 11-Jul-2019 |
Nikita Popov |
Deprecate is_real() function
|
#
445d5134 |
| 19-Jul-2019 |
Dmitry Stogov |
Use run-time cache to avoid repeatable hash lookups in ZEND_DECLARE_CLASS_DELAYED
|
Revision tags: php-7.4.0alpha3, php-7.3.7, php-7.2.20, php-7.4.0alpha2, php-7.3.7RC3, php-7.3.7RC2, php-7.2.20RC2, php-7.4.0alpha1, php-7.3.7RC1, php-7.2.20RC1, php-7.2.19, php-7.3.6, php-7.1.30, php-7.2.19RC1, php-7.3.6RC1, php-7.1.29, php-7.2.18, php-7.3.5, php-7.2.18RC1, php-7.3.5RC1, php-7.2.17, php-7.3.4, php-7.1.28, php-7.3.4RC1, php-7.2.17RC1 |
|
#
d574df63 |
| 13-Mar-2019 |
rjhdby |
Deprecate alternative array access syntax RFC: https://wiki.php.net/rfc/deprecate_curly_braces_array_access
|
#
d5943f5a |
| 19-Jul-2019 |
Dmitry Stogov |
Use run-time cache to avoid repeatable hash lookups when creating anonymous functions and classes
|
#
b065fbde |
| 19-Jul-2019 |
Dmitry Stogov |
ZEND_DECLARE_ANON_CLASS doesn't need to skip anything now. It's immediatelly followed by ZEND_NEW.
|
#
c5f1b384 |
| 15-Jul-2019 |
Nikita Popov |
Move shebang handling into the lexer Instead of handling shebang lines by adjusting the file pointer in individual SAPIs, move the handling into the lexer, where this is both a lot s
Move shebang handling into the lexer Instead of handling shebang lines by adjusting the file pointer in individual SAPIs, move the handling into the lexer, where this is both a lot simpler and more robust. Whether the shebang should be skipped is controlled by CG(skip_shebang) -- we might want to do that in more cases. This fixed bugs #60677 and #78066.
show more ...
|
#
48ca5a1e |
| 05-Jul-2019 |
Dmitry Stogov |
Replace ZEND_ASSIGN_ADD (and others) by ZEND_ASSIGN_OP, ZEND_ASSIGN_DIM_OP, ZEND_ASSGIN_OBJ_OP and ZEND_ASSIGN_STATIC_PROP_OP
|
#
9f81c56e |
| 28-Jun-2019 |
Nikita Popov |
Fix out-of-bounds read in array compilation UNPACK elements only have one child. Don't access the second one until we have excluded this case.
|
#
83b99527 |
| 26-Jun-2019 |
Dmitry Stogov |
Avoid double checks on early binding
|
#
1d534b9d |
| 25-Jun-2019 |
Dmitry Stogov |
Set ZEND_ACC_LINKED flag after early binding (for consistency)
|
#
e8f1f701 |
| 25-Jun-2019 |
Dmitry Stogov |
Reduce overhead of delayed early binding
|
#
759f4ecd |
| 25-Jun-2019 |
Dmitry Stogov |
Keep lowercased parent class name as second argument of DECLARE_CLASS to avoid extra work at run-time
|
#
0f29fb5c |
| 24-Jun-2019 |
Dmitry Stogov |
Fixed bug 78175 (Preloading must store default values of static variables and properties)
|
#
f601eb15 |
| 12-Jun-2019 |
Nikita Popov |
Fix -Wmissing-braces warnings Unfortunate that = {} is a GNU extension.
|
#
8f8fcbbd |
| 27-May-2019 |
Nikita Popov |
Support full variance if autoloading is used Keep track of delayed variance obligations and check them after linking a class is otherwise finished. Obligations may either be unresolv
Support full variance if autoloading is used Keep track of delayed variance obligations and check them after linking a class is otherwise finished. Obligations may either be unresolved method compatibility (because the necessecary classes aren't available yet) or open parent/interface dependencies. The latter occur because we allow the use of not fully linked classes as parents/interfaces now. An important aspect of the implementation is we do not require classes involved in variance checks to be fully linked in order for the class to be fully linked. Because the involved types do have to exist in the class table (as partially linked classes) and we do check these for correct variance, we have the guarantee that either those classes will successfully link lateron or generate an error, but there is no way to actually use them until that point and as such no possibility of violating the variance contract. This is important because it ensures that a class declaration always either errors or will produce an immediately usable class afterwards -- there are no cases where the finalization of the class declaration has to be delayed until a later time, as earlier variants of this patch did. Because variance checks deal with classes in various stages of linking, we need to use a special instanceof implementation that supports this, and also introduce finer-grained flags that tell us which parts have been linked already and which haven't. Class autoloading for variance checks is delayed into a separate stage after the class is otherwise linked and before delayed variance obligations are processed. This separation is needed to handle cases like A extends B extends C, where B is the autoload root, but C is required to check variance. This could end up loading C while the class structure of B is in an inconsistent state.
show more ...
|