* PHP-8.4:
Fix error message for newer libxml
Backport 061058a9: Test fixes for libxml2 2.12.0
Workaround deprecation warning in zend_test on 8.1
Backport 3ec5919e: Update error message for libxml 2.13
Backport f74f9b07: Update libxml test for the directory field behaviour change
Backport 4fe82131: Backport libxml2 2.13.2 fixes (#14816)
Backport e2d97314: Backport deprecation warning ignores to unbreak CI
Backport 0a39890c: Fix libxml2 2.12 build due to API breaks
* PHP-8.3:
Fix error message for newer libxml
Backport 061058a9: Test fixes for libxml2 2.12.0
Workaround deprecation warning in zend_test on 8.1
Backport 3ec5919e: Update error message for libxml 2.13
Backport f74f9b07: Update libxml test for the directory field behaviour change
Backport 4fe82131: Backport libxml2 2.13.2 fixes (#14816)
Backport e2d97314: Backport deprecation warning ignores to unbreak CI
Backport 0a39890c: Fix libxml2 2.12 build due to API breaks
* PHP-8.2:
Fix error message for newer libxml
Backport 061058a9: Test fixes for libxml2 2.12.0
Workaround deprecation warning in zend_test on 8.1
Backport 3ec5919e: Update error message for libxml 2.13
Backport f74f9b07: Update libxml test for the directory field behaviour change
Backport 4fe82131: Backport libxml2 2.13.2 fixes (#14816)
Backport e2d97314: Backport deprecation warning ignores to unbreak CI
Backport 0a39890c: Fix libxml2 2.12 build due to API breaks
* upstream/PHP-8.1:
Fix error message for newer libxml
Backport 061058a9: Test fixes for libxml2 2.12.0
Workaround deprecation warning in zend_test on 8.1
Backport 3ec5919e: Update error message for libxml 2.13
Backport f74f9b07: Update libxml test for the directory field behaviour change
Backport 4fe82131: Backport libxml2 2.13.2 fixes (#14816)
Backport e2d97314: Backport deprecation warning ignores to unbreak CI
Backport 0a39890c: Fix libxml2 2.12 build due to API breaks
In master I use ZEND_DIAGNOSTIC_IGNORED_START, but that doesn't exist on
8.2 or 8.3 (8.3 has a similar macro though).
So to unbreak CI I just made a variation of this directly in the
php_libxml.h header.
See 683e787860 (commitcomment-134301083)
We introduce a new flag to indicate when a heap or priority queue is
write-locked. In principle we could've used SPL_HEAP_CORRUPTED too, but
that won't be descriptive to users (and it's a lie too).
Closes GH-16346.
GitHub FYP test case:
```
Benchmark 1: ./sapi/cli/php test.php
Time (mean ± σ): 502.8 ms ± 6.2 ms [User: 498.3 ms, System: 3.2 ms]
Range (min … max): 495.2 ms … 509.8 ms 10 runs
Benchmark 2: ./sapi/cli/php_old test.php
Time (mean ± σ): 518.4 ms ± 4.3 ms [User: 513.9 ms, System: 3.2 ms]
Range (min … max): 511.5 ms … 525.5 ms 10 runs
Summary
./sapi/cli/php test.php ran
1.03 ± 0.02 times faster than ./sapi/cli/php_old test.php
```
Wikipedia English homepage test case:
```
Benchmark 1: ./sapi/cli/php test.php
Time (mean ± σ): 301.1 ms ± 4.2 ms [User: 295.5 ms, System: 4.8 ms]
Range (min … max): 296.3 ms … 308.8 ms 10 runs
Benchmark 2: ./sapi/cli/php_old test.php
Time (mean ± σ): 308.2 ms ± 1.7 ms [User: 304.6 ms, System: 2.9 ms]
Range (min … max): 306.9 ms … 312.8 ms 10 runs
Summary
./sapi/cli/php test.php ran
1.02 ± 0.02 times faster than ./sapi/cli/php_old test.php
```
Two issues:
1) The check happened before ZPP checks
2) The `return;` statement caused NULL to be returned while this
function can only return booleans. An exception seems not acceptable
in stable versions, but a warning may do.
Closes GH-16386.
The type is enforced, and `TypeError`s are already thrown, but the
information about the required type is not provided to Reflection. Replace the
`@param` comment with a real typehint so that the information is also available
via Reflection.
First, we fix the long standing issue that property access throws a
`com_exception` ("0x80020003: member not found), because the `HRESULT`
was not properly set after accessing the property.
Next, we fix an issue introduced as of PHP 7.0.0, where the string
length for write access had been properly adapted, but the string
length for read access had been overlooked.
Then we fix an issue introduced as of PHP 8.0.0, where new `HashTable`s
no longer set `nNextFreeElement` to zero, but to `ZEND_LONG_MIN`. This
doesn't work well with the `DISPID` lookup, which is a `LONG`.
Finally we fix a potential double-free due to erroneously destroying
the return value of `zend_read_property()`.
Closes GH-16331.