Revision tags: php-8.1.7RC1, php-8.1.4RC1, php-8.1.3, php-8.1.2RC1, php-8.1.0, php-7.3.33, php-7.3.32, php-7.3.31, php-7.3.30, php-7.3.29 |
|
#
aff36587 |
| 29-Jun-2021 |
Patrick Allaert |
Fixed some spaces used instead of tabs |
#
b0dcc4c0 |
| 10-Jun-2021 |
Dmitry Stogov |
Functions with static variables are not separated anymore. 9a1da9f61fe6f2fe9c714d78e1f0673b37f051ec missed this part. |
#
56c16334 |
| 29-May-2021 |
Anatol Belski |
ext: Cleanup some dead assignments Signed-off-by: Anatol Belski <ab@php.net> |
#
01b3fc03 |
| 06-May-2021 |
KsaR |
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier". 3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted. 4. fixed indentation in some files before |
show more ...
|
#
dd86987b |
| 29-Apr-2021 |
Nikita Popov |
Replay warnings during inheritance (#6928) Since 3e6b447979a2b1f351faf40bee9c6cf7e362d85a it is again possible to have warnings (deprecations) during inheritance, and more such functiona
Replay warnings during inheritance (#6928) Since 3e6b447979a2b1f351faf40bee9c6cf7e362d85a it is again possible to have warnings (deprecations) during inheritance, and more such functionality is likely in the future. This is a problem, because such warnings will only be shown on the first request if the opcache inheritance cache is used. This currently causes test failures in --repeat builds. Fix this by uplifting the error recording functionality from opcache to Zend, and then using it to persist a warning trace in the inheritance cache, which can then be used to replay the warnings on subsequent executions.
show more ...
|
#
e8e7c04a |
| 29-Apr-2021 |
Nikita Popov |
Use common struct to store error information This is needed by both fibers and opcache (and GH-6903 also uses it), so make it a common structure that can be used by any functionality
Use common struct to store error information This is needed by both fibers and opcache (and GH-6903 also uses it), so make it a common structure that can be used by any functionality storing warnings/errors.
show more ...
|
Revision tags: php-7.3.28 |
|
#
22019a1e |
| 05-Apr-2021 |
Dmitry Stogov |
Fixed unintended string duplication |
Revision tags: php-7.3.27, php-7.3.26, php-7.3.26RC1, php-7.3.25, php-7.3.25RC1, php-7.3.24, php-7.3.24RC1, php-7.3.23, php-7.3.23RC1, php-7.3.22, php-7.3.22RC1, php-7.3.21, php-7.3.21RC1, php-7.3.20, php-7.3.20RC1 |
|
#
269c8dac |
| 10-Jun-2020 |
Ilija Tovilo |
Implement enums RFC: https://wiki.php.net/rfc/enumerations Co-authored-by: Nikita Popov <nikita.ppv@gmail.com> Closes GH-6489. |
#
709e45d8 |
| 17-Mar-2021 |
Nikita Popov |
Avoid unnecessary static_variables persistence static_variables should be treated the same way as all other op_array components nowadays (only static_variables_ptr is special). There
Avoid unnecessary static_variables persistence static_variables should be treated the same way as all other op_array components nowadays (only static_variables_ptr is special). There's no need to persist/serialize it is separately per shared op_array.
show more ...
|
#
c732ab40 |
| 16-Mar-2021 |
Dmitry Stogov |
Change Zend Stream API to use zend_string* instead of char*. This allows to eliminate re-calculation of string lenght and hash value. See the detailed list of changes in UPGRADING.INTERN
Change Zend Stream API to use zend_string* instead of char*. This allows to eliminate re-calculation of string lenght and hash value. See the detailed list of changes in UPGRADING.INTERNALS.
show more ...
|
Revision tags: php-7.3.19, php-7.4.7RC1, php-7.3.19RC1 |
|
#
47a2e5c7 |
| 18-May-2020 |
Nikita Popov |
Reference dynamic functions through dynamic_defs Currently, dynamically declared functions and closures are inserted into the function table under a runtime definition key, and then late
Reference dynamic functions through dynamic_defs Currently, dynamically declared functions and closures are inserted into the function table under a runtime definition key, and then later possibly renamed. When opcache is not used and a file containing a closure is repeatedly included, this leads to a very large memory leak, as the no longer needed closure declarations will never be freed (https://bugs.php.net/bug.php?id=76982). With this patch, dynamic functions are instead stored in a dynamic_func_defs member on the op_array, which opcodes reference by index. When the parent op_array is destroyed, the dynamic_func_defs it contains are also destroyed (unless they are stilled used elsewhere, e.g. because they have been bound, or are used by a live closure). This resolves the fundamental part of the leak, though doesn't completely fix it yet due to some arena allocations. The main non-obvious change here is to static variable handling: We can't destroy static_variables_ptr in destroy_op_array, as e.g. that would clear the static variables in a dynamic function when the op_array containing it is destroyed. Static variable destruction is separated out for this reason (we already do static variable destruction separately for normal functions, so we only need to handle main scripts). Closes GH-5595.
show more ...
|
#
15f713bd |
| 15-Feb-2021 |
Dmitry Stogov |
Persist class name before methods, because it may be used insted of "self" |
#
dcf38922 |
| 11-Feb-2021 |
Dmitry Stogov |
Avoid useless SHM data duplication |
#
4b79dba9 |
| 09-Feb-2021 |
Dmitry Stogov |
Added Inheritance Cache. This is a new transparent technology that eliminates overhead of PHP class inheritance. PHP classes are compiled and cached (by opcahce) separately, howeve
Added Inheritance Cache. This is a new transparent technology that eliminates overhead of PHP class inheritance. PHP classes are compiled and cached (by opcahce) separately, however their "linking" was done at run-time - on each request. The process of "linking" may involve a number of compatibility checks and borrowing methods/properties/constants form parent and traits. This takes significant time, but the result is the same on each request. Inheritance Cache performs "linking" for unique set of all the depending classes (parent, interfaces, traits, property types, method types involved into compatibility checks) once and stores result in opcache shared memory. As a part of the this patch, I removed limitations for immutable classes (unresolved constants, typed properties and covariant type checks). So now all classes stored in opcache are "immutable". They may be lazily loaded into process memory, if necessary, but this usually occurs just once (on first linking). The patch shows 8% improvement on Symphony "Hello World" app.
show more ...
|
#
3e01f5af |
| 15-Jan-2021 |
Nikita Popov |
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool is retained as an alias.
show more ...
|
#
1a44599d |
| 12-Jan-2021 |
Dmitry Stogov |
Always use CG(arena) for unin type lists |
#
7794925b |
| 04-Nov-2020 |
Nikita Popov |
Assert that references are not persisted There should not be any need to persist references, and it's unlikely that persisting a reference will behave correctly at runtime, because w
Assert that references are not persisted There should not be any need to persist references, and it's unlikely that persisting a reference will behave correctly at runtime, because we don't have a concept of an immutable reference.
show more ...
|
Revision tags: php-7.3.18RC1, php-7.2.30, php-7.3.17 |
|
#
d92229d8 |
| 06-Apr-2020 |
Nikita Popov |
Implement named parameters From an engine perspective, named parameters mainly add three concepts: * The SEND_* opcodes now accept a CONST op2, which is the argument nam
Implement named parameters From an engine perspective, named parameters mainly add three concepts: * The SEND_* opcodes now accept a CONST op2, which is the argument name. For now, it is looked up by linear scan and runtime cached. * This may leave UNDEF arguments on the stack. To avoid having to deal with them in other places, a CHECK_UNDEF_ARGS opcode is used to either replace them with defaults, or error. * For variadic functions, EX(extra_named_params) are collected and need to be freed based on ZEND_CALL_HAS_EXTRA_NAMED_PARAMS. RFC: https://wiki.php.net/rfc/named_params Closes GH-5357.
show more ...
|
#
b702ad14 |
| 14-Jul-2020 |
Nikita Popov |
Fix preloading of union typed property inherited from internal class Tricky edge case: We inherit a property from an internal class, in which case no property duplication takes place. We
Fix preloading of union typed property inherited from internal class Tricky edge case: We inherit a property from an internal class, in which case no property duplication takes place. We should not try to persist the property info in that case. This didn't really matter previously, but now that the property has some non-interned owned data (the type), we need to make sure we don't try to free that.
show more ...
|
#
7e6b2e2e |
| 14-Jul-2020 |
Nikita Popov |
Check for name vs ce in a few more places The type lists may contain CEs, we should not assume they only contain names. |
#
a7908c2d |
| 24-May-2020 |
Benjamin Eberlei |
Add Attributes Co-authored-by: Martin Schröder <m.schroeder2007@gmail.com> |
#
0a74da38 |
| 19-May-2020 |
Nikita Popov |
Add support for replaying warnings in opcache If opcache.record_warnings is enabled, opcache will record compilation warnings and replay them when the file is included again. The pri
Add support for replaying warnings in opcache If opcache.record_warnings is enabled, opcache will record compilation warnings and replay them when the file is included again. The primary use case I have in mind for this is automated testing of the opcache file cache. This resolves bug #76535.
show more ...
|
Revision tags: php-7.3.17RC1, php-7.3.18, php-7.3.16, php-7.3.16RC1 |
|
#
53efa1b0 |
| 02-Mar-2020 |
Nikita Popov |
Store aliased name of trait method Currently, trait methods are aliased will continue to use the original function name. In a few places in the codebase, we will try to look up the a
Store aliased name of trait method Currently, trait methods are aliased will continue to use the original function name. In a few places in the codebase, we will try to look up the actual method name instead. However, this does not work if an aliased method is used indirectly (https://bugs.php.net/bug.php?id=69180). I think it would be better to instead actually change the method name to the alias. This is in principle easy: We have to allow function_name to be changed even if op array is otherwise shared (similar to static_variables). This means we need to addref/release the function_name separately, but I don't think there is a performance concern here (especially as everything is usually interned). There is a bit of complication in opcache, where we need to make sure that the function name is released the correct number of times (interning may overwrite the name in the original op_array, but we need to release it as many times as the op_array is shared). Fixes bug #69180. Fixes bug #74939. Closes GH-5226.
show more ...
|
Revision tags: php-7.3.15RC1, php-7.3.15, php-7.3.14 |
|
#
bd197728 |
| 16-Jan-2020 |
Nikita Popov |
Use zend_type inside type lists Instead of having a completely independent encoding for type list entries. This is going to use more memory, but I'm not particularly concerned about
Use zend_type inside type lists Instead of having a completely independent encoding for type list entries. This is going to use more memory, but I'm not particularly concerned about that, as type unions that contain multiple classes should be uncommon. On the other hand, this allows us to treat top-level types and types inside lists mostly the same. A new ZEND_TYPE_FOREACH macros allows to transparently treat list and non-list types the same way. I'm not using it everywhere it could be used for now, just the places that seemed most obvious. Of course, this will make any future type system changes much simpler, as it will not be necessary to duplicate all logic two times.
show more ...
|
Revision tags: php-7.3.14RC1, php-7.3.13 |
|
#
5cdea8d5 |
| 10-Dec-2019 |
Nikita Popov |
Merge branch 'PHP-7.4' * PHP-7.4: Add support for class_alias to preloading Fixed bug #78935: Check that all linked classes can be preloaded
|