#
c3f07973 |
| 02-Jun-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Implement iteration cache, item cache and length cache for node list iteration (#11330) * Implement iteration cache, item cache and length cache for node list iteration The current
Implement iteration cache, item cache and length cache for node list iteration (#11330) * Implement iteration cache, item cache and length cache for node list iteration The current implementation follows the spec requirement that the list must be "live". This means that changes in the document must be reflected in the existing node lists without requiring the user to refetch the node list. The consequence is that getting any item, or the length of the list, always starts searching from the root element of the node list. This results in O(n) time to get any item or the length. If there's a for loop over the node list, this means the iterations will take O(n²) time in total. This causes real-world performance issues with potential for downtime (see GH-11308 and its references for details). We fix this by introducing a caching strategy. We cache the last iterated object in the iterator, the last requested item in the node list, and the last length computation. To invalidate the cache, we simply count the number of modifications made to the containing document. If the modification number does not match what the number was during caching, we know the document has been modified and the cache is invalid. If this ever overflows, we saturate the modification number and don't do any caching anymore. Note that we don't check for overflow on 64-bit systems because it would take hundreds of years to overflow. Fixes GH-11308.
show more ...
|
#
c6655fb7 |
| 29-May-2023 |
nielsdos <7771979+nielsdos@users.noreply.github.com> |
Implement dom_get_doc_props_read_only() I was surprised to see that getting the stricterror property showed in in the Callgrind profile of some tests. Turns out we sometimes allocate
Implement dom_get_doc_props_read_only() I was surprised to see that getting the stricterror property showed in in the Callgrind profile of some tests. Turns out we sometimes allocate them. Fix this by returning the default in case no changes were made yet. Closes GH-11345.
show more ...
|
#
36559fb2 |
| 03-May-2023 |
Nils |
Remove unused macro PHP_FNV1_32A_INIT and PHP_FNV1A_64_INIT (#11114)
|
#
6f63d4b2 |
| 19-Apr-2023 |
Ilija Tovilo |
Fix -Wenum-int-mismatch warnings on gcc 13 Closes GH-11103
|
#
3528ca89 |
| 04-Apr-2023 |
Ilija Tovilo |
Add note for GH-10168 to UPGRADING.INTERNALS
|
#
f42992f5 |
| 03-Apr-2023 |
Máté Kocsis |
Remove name field from the zend_constant struct (#10954) As global constant names are case-sensitive now, we don't have to store them separately above the constant table.
|
#
6a6e91f3 |
| 22-Mar-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Shrink some commonly used structs by reordering members (#10880) Struct members require some alignment based on their type. This means that if a struct member is not aligned, there will
Shrink some commonly used structs by reordering members (#10880) Struct members require some alignment based on their type. This means that if a struct member is not aligned, there will be a hole created by the compiler in the struct, which is wasted space. This patch reorders some of the most commonly used structs, but in such a way that the fields which were in the same cache line still belong together. The only exception to this is exception_ignore_args, which was temporally not close to nearby members, and as such I placed it further up to close a hole. On 64-bit Linux this gives us the following shrinks: * zend_op_array: 248 -> 240 * zend_ssa_var: 56 -> 48 * zend_ssa_var_info: 48 -> 40 * php_core_globals: 672 -> 608 * zend_executor_globals: 1824 -> 1792 On 32-bit, the sizes will either remain the same or will result in smaller shrinks.
show more ...
|
#
3b066188 |
| 07-Mar-2023 |
George Peter Banyard |
RFC: Saner array_(sum|product)() (#10161) RFC: https://wiki.php.net/rfc/saner-array-sum-product Moreover, the internal fast_add_function() function was removed.
|
#
2b15061f |
| 01-Mar-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Use zend_result in ext/spl where appropriate (#10734) * Convert functions in spl_heap to return zend_result * Convert functions in spl_iterators to return zend_result
|
#
371ae12d |
| 19-Feb-2023 |
Max Kellermann |
Zend/zend_fibers: change return value to zend_result According to @nikic: > The current guideline for use of bool and zend_result in php-src is > that bool is an appropriate ret
Zend/zend_fibers: change return value to zend_result According to @nikic: > The current guideline for use of bool and zend_result in php-src is > that bool is an appropriate return value for "is" or "has" style > functions, which return a yes/no answer. zend_result is an > appropriate return value for functions that perform some operation > that may succeed or fail. Closes GH-10622.
show more ...
|
#
821fc55a |
| 22-Feb-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Implement GH-9826: Make class_alias() work with internal classes (#10483) We can't increase the refcount of internal classes during request time. To work around this problem we simply do
Implement GH-9826: Make class_alias() work with internal classes (#10483) We can't increase the refcount of internal classes during request time. To work around this problem we simply don't refcount aliases anymore and add a check in the destruction to skip aliases entirely. There were also some checks which checked for an alias implicitly by comparing the refcount, these have been replaced by checking the type of the zval instead.
show more ...
|
#
a408781a |
| 20-Jan-2023 |
Tim Düsterhus |
Remove now-unused check for /dev/urandom from Zend/Zend.m4
|
#
fa1e3f97 |
| 18-Jan-2023 |
Kamil Tekiela |
Remove pcre_get_compiled_regex_ex() (#10354)
|
#
0e5128c2 |
| 17-Jan-2023 |
Kamil Tekiela |
Remove mysqlnd_shutdown() (#10355)
|
#
334ecbed |
| 15-Jan-2023 |
George Peter Banyard |
Update UPGRADING.INTERNALS with the changes made to php_url_encode_hash_ex()
|
#
7473b86f |
| 13-Jan-2023 |
Max Kellermann |
build/php.m4: remove test for integer types (#10304) These are mandatory in C99, so it's a pointless waste of time to check for them. (Actually, the fixed-size integer types are
build/php.m4: remove test for integer types (#10304) These are mandatory in C99, so it's a pointless waste of time to check for them. (Actually, the fixed-size integer types are not mandatory, but if they are really not available on some theoretical system, PHP's fallbacks won't work either, so nothing is gained from this check.)
show more ...
|
#
01e5ffc8 |
| 04-Jan-2023 |
Max Kellermann |
UPGRADING.INTERNALS: mention the header cleanups
|
#
0ff4a9ac |
| 16-Dec-2022 |
Arnaud Le Blanc |
[ci skip] UPGRADING
|
#
25cdb3b8 |
| 18-Oct-2022 |
Jeremy Mikola |
[skip ci] Document zend_enum_get_case_by_value() function This function was introduced in d62d50b88ecf8ed838b20d48006a32277eb569fe.
|
#
68301b14 |
| 08-Oct-2022 |
Tyson Andre |
[skip ci] Add docs for json_validate in `UPGRADING*`
|
#
912ab5ae |
| 14-Sep-2022 |
Bob Weinand |
Merge branch 'PHP-8.2'
|
#
4af695e9 |
| 10-Sep-2022 |
Máté Kocsis |
Require PHP 7.4 at least for running the build system (#9519) |
Revision tags: php-8.2.0RC1, php-8.1.10 |
|
#
327c9523 |
| 30-Aug-2022 |
Pierrick Charron |
Prepare for PHP 8.3 |
Revision tags: php-8.0.23 |
|
#
f7d42f64 |
| 23-Aug-2022 |
Andreas Braun |
Update gen_stub to avoid compile errors on duplicate function names Closes GH-9406 |
#
ca011bbf |
| 17-Aug-2022 |
Christoph M. Becker |
Drop unsupported libxml2 2.10.0 symbols The Docbook parser module has been removed completely. Support for XPointer locations (ranges and points) is disabled by default, and will ev
Drop unsupported libxml2 2.10.0 symbols The Docbook parser module has been removed completely. Support for XPointer locations (ranges and points) is disabled by default, and will eventually be removed completely. Given that the maintainer comments on the latter: "Be warned that this part of the code base is buggy and had many security issues in the past", it seems to be prudent to no longer build with XPointer locations support right away. To be able to build against libxml2 2.10.0, we remove the export definitions for Windows. Closes GH-9358.
show more ...
|