#
f150f997 |
| 11-Nov-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Improve browscap get_browser performance (#12651) * Split function and use _new variant to avoid redundant checks * Precompute better array size to avoid rehashing * Use ne
Improve browscap get_browser performance (#12651) * Split function and use _new variant to avoid redundant checks * Precompute better array size to avoid rehashing * Use new function to add into array instead of merging into, preventing temporary memory allocations * Convert to regex without separate copy + lowering We're already doing a character-wise loop after lowering, so just lower it character by character instead of looping over it twice and allocating memory. * Use HASH_MAP loop because htab can never be packed This saves additional checks. * Move destructor to more sensible place * Remove now unused browscap_zval_copy_ctor * Use zend_string_release_ex variant where possible * Implement dedicated greedy wildcard matching algorithm This avoids compiling, allocating and caching regexes and should run in the same complexity. * Cache previous length instead of repeatedly recomputing it * Add additional optimization to wildcard * matching * Move cheap checks to the callsite The function prologue and epilogue have a stupidly high overhead for those 2 simple checks at the start. We can't always-inline the reg_compare function because it contains alloca, and the alloca is really important for performance. Instead, move those cheap checks to the call site. * Use specialised loop to avoid unnecessary conversions and checks * Optimize counting loop by taking into account the prefix * Precompute the hash values of known keys * [ci skip] UPGRADING * Code style * Add a note why we have the early-skip checks in the loop
show more ...
|
#
63898008 |
| 10-Nov-2023 |
Dmitriy Degtyaryov |
Fix GH-9344: pgsql pipeline mode proposal. Adding pg_send_flush_request. Fix freeze after next execute pg_send_* on PQgetResult in _php_pgsql_link_has_results. Set nonblocking for pi
Fix GH-9344: pgsql pipeline mode proposal. Adding pg_send_flush_request. Fix freeze after next execute pg_send_* on PQgetResult in _php_pgsql_link_has_results. Set nonblocking for pipelining mode. No flush client buffer in pg_send_* for pipelining mode. Close GH-12644
show more ...
|
#
1ad5f9da |
| 04-Nov-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
[ci skip] UPGRADING |
#
9a973a37 |
| 04-Nov-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Optimize strcspn (#12594) |
#
ee5fe483 |
| 02-Nov-2023 |
David Carlier |
[ci skip] fix typo in UPGRADING |
#
d4183c2c |
| 01-Nov-2023 |
David Carlier |
[ci skip] Intl extension UPGRADING note |
#
a470c4ae |
| 28-Oct-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-12532: PharData created from zip has incorrect timestamp The datetime stored in the DOS time fields, which is what zip standard uses, is local time without a timezone. There's an
Fix GH-12532: PharData created from zip has incorrect timestamp The datetime stored in the DOS time fields, which is what zip standard uses, is local time without a timezone. There's an extension to the zip file format since '97 that allows storing a unix timestamp (in UTC) in the header for both the central directory and the local entries. This patch adds support for this. Closes GH-12548.
show more ...
|
#
74ba9167 |
| 29-Oct-2023 |
Jorg Adam Sowa |
Typed constants in sqlite extension (#12379) |
#
9ad78441 |
| 29-Oct-2023 |
Jorg Adam Sowa |
Typed constants in Intl extenstion (#12360) |
#
dff8679a |
| 29-Oct-2023 |
Jorg Adam Sowa |
Typed constants in PDO extension (#12362) |
#
d04854b3 |
| 23-Oct-2023 |
Alex Dowad |
Add fast mb_strcut implementation for UTF-16 Similar to the fast, specialized mb_strcut implementation for UTF-8 in 1f0cf133db, this new implementation of mb_strcut for UTF-16 strings
Add fast mb_strcut implementation for UTF-16 Similar to the fast, specialized mb_strcut implementation for UTF-8 in 1f0cf133db, this new implementation of mb_strcut for UTF-16 strings just examines a few bytes before each cut point. Even for short strings, the new implementation is around 2x faster. For strings around 10,000 bytes in length, it comes out about 100-500x faster in my microbenchmarks. The new implementation behaves identically to the old one on valid UTF-16 strings; a fuzzer was used to help verify this.
show more ...
|
#
e8d8a5fe |
| 28-Oct-2023 |
Jorg Adam Sowa |
Typed constants in reflection extension (#12378) |
#
e58af7c1 |
| 12-Oct-2023 |
Viktor Vassilyev |
ext/soap: Add support for clark notation for namespaces in class map Closes GH-12411. |
#
98b08c52 |
| 22-Oct-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Implement request #68325: parse huge option for xml_parser_create (#12256) |
#
0e5d6544 |
| 20-Oct-2023 |
George Peter Banyard |
ext/xml: Refactor extension to use FCC instead of zvals for handlers (#12340) To get proper errors and sensible behaviour, as the current behaviour is somewhat insane and part of it should b
ext/xml: Refactor extension to use FCC instead of zvals for handlers (#12340) To get proper errors and sensible behaviour, as the current behaviour is somewhat insane and part of it should be axed ASAP. The behaviour is mostly intact with some minor BC breaks which are mentioned in UPGRADING. Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com>
show more ...
|
#
b5c287e4 |
| 12-Oct-2023 |
SakiTakamachi |
Fix GH-12423: Changed to prioritize DSN authentication information over arguments. Added connection test Close GH-12424 |
#
d0b29d82 |
| 13-Oct-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Optimize strspn() The current implementation uses a nested loop (for + goto), which has complexity O(|s1| * |s2|). If we instead use a lookup table, the complexity drops to O(|s1| +
Optimize strspn() The current implementation uses a nested loop (for + goto), which has complexity O(|s1| * |s2|). If we instead use a lookup table, the complexity drops to O(|s1| + |s2|). This is conceptually the same strategy that common C library implementations such as glibc and musl use. The variation with a bitvector instead of a table also gives a speed-up, but the table variation was about 1.34x faster. On microbenchmarks this easily gave a 5x speedup. This can bring a 1.4-1.5% performance improvement in the Symfony benchmark. Closes GH-12431.
show more ...
|
#
57a8f63f |
| 08-Oct-2023 |
David Carlier |
[ci skip] UPGRADING pgsql update |
#
009d48da |
| 08-Oct-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Convert bounds exception in SplFixedArray to OutOfBoundsException instead of RuntimeException (#12383) |
#
f0757100 |
| 07-Oct-2023 |
Jorg Adam Sowa |
Typed constants in SPL extension (#12358) |
#
3bb56ae4 |
| 06-Oct-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Add missing properties to xsl stub (#12334) * Define doXInclude for XSLTProcessor, and test the property This was added in 8d1427dd98, but never defined on the stub. It was more
Add missing properties to xsl stub (#12334) * Define doXInclude for XSLTProcessor, and test the property This was added in 8d1427dd98, but never defined on the stub. It was more or less fine when dynamic properties were not deprecated, but now they throw a deprecation warning. To fix it, define on the stub. This should also help discoverability of the functionality. * Define cloneDocument for XSLTProcessor, and test the property This was introduced in 5c039bbad9, but never defined on the stub. It was more or less fine when dynamic properties were not deprecated, but now they throw a deprecation warning. To fix it, define on the stub. This should also help discoverability of the functionality.
show more ...
|
#
42a85fc5 |
| 06-Oct-2023 |
Tim Düsterhus |
password_hash: Increase PHP_PASSWORD_BCRYPT_COST to 12 (#12367) RFC: https://wiki.php.net/rfc/bcrypt_cost_2023 |
#
5c749ad4 |
| 30-Sep-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Implement request #64137 (XSLTProcessor::setParameter() should allow both quotes to be used) This reimplements the parameter handling. Instead of quoting the strings manually, adding the
Implement request #64137 (XSLTProcessor::setParameter() should allow both quotes to be used) This reimplements the parameter handling. Instead of quoting the strings manually, adding them to an array, and passing that as input; use the libxslt API to pass data verbatim to the processor. This also simplifies the code a lot. Closes GH-12331.
show more ...
|
#
3e29332a |
| 30-Sep-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Merge branch 'PHP-8.3' * PHP-8.3: Apply SimpleXML iterator fixes only on master
|
#
5d68d619 |
| 22-Sep-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Implement #53655: Improve speed of DOMNode::C14N() on large XML documents The XPath query is in accordance to spec [1]. However, we can do it in a simpler way. We can use a custom callba
Implement #53655: Improve speed of DOMNode::C14N() on large XML documents The XPath query is in accordance to spec [1]. However, we can do it in a simpler way. We can use a custom callback function instead of a linear search in XPath to check if a node is visible. Note that comment nodes are handled internally by libxml2 already, so we do not need to differentiate between node types. The callback will do an upwards traversal of the tree until the root of the canonicalization is reached. In practice this will speed up the application a lot. [1] https://www.w3.org/TR/2001/REC-xml-c14n-20010315 section 2.1 Closes GH-12278.
show more ...
|