Commit a99cf8eae01 for php.net

commit a99cf8eae0185e23fe676c4d91f5d6fef9820445
Merge: 5a6c2234bf1 fe96b7a7bcb
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date:   Tue Sep 22 08:32:55 2026 -0400

    Merge branch 'PHP-8.6'

    * PHP-8.6:
      ext/intl: Reject unconstructed Collator in attribute and strength methods

diff --cc NEWS
index abfba60f153,a5b12c6de20..01eb73754ac
--- a/NEWS
+++ b/NEWS
@@@ -1,5 -1,1132 +1,9 @@@
  PHP                                                                        NEWS
  |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 -?? ??? ????, PHP 8.6.0RC1
 -
 -- Core:
 -  . Fixed incorrect internal pointer and foreach iterator positions when
 -    compacting arrays with holes. (Weilin Du)
 -  . Fix handling of references to typed properties during unserialization
 -    of various internal classes. (ndossche, timwolla)
 -  . Fixed OSS-Fuzz 532353396 (assertion	failure	with static type). (Girgias)
 -  . Fix GH-23662 (Avoid NAN warning in print_r()). (CodedByManish)
 -  . Fixed bug GH-23752 (Use scoped diagnostic suppression for the global
 -    register declarations so the caller's -Wvolatile-register-var state is
 -    restored). (yqtian-se)
 -  . Fixed OSS-Fuzz #538730793 (Assertion failure when returning by-ref from
 -    closure invoke). (ndossche)
 -  . Fixed OSS-Fuzz #540904105 (ASSERT: ast->attr == T_CLASS_C). (ndossche)
 -
 -- CLI
 -  . Fix GH-22567 (Windows ZTS CLI SAPI should refresh its TSRMLS cache during
 -    request activation). (matyhtf)
 -
 -- Date:
 -  . Fix unserialization of Time\Duration. (timwolla)
 -  . Add comparison handler for Time\Duration. (timwolla)
 -
 -- DOM:
 -  . Fixed use-after-free when re-constructing a DOMXPath whose php:function
 -    registrations are freed while still reachable from the cycle collector.
 -    (Ilia Alshanetsky)
 -  . Fixed Dom\HTMLDocument::getElementById() not finding ids of SVG and
 -    MathML elements. (Ilia Alshanetsky)
 -  . Fixed Dom\HTMLDocument giving attributes the namespace of their element
 -    when a fragment is parsed with an xlink, xml or xmlns context element.
 -    (Ilia Alshanetsky)
 -
 -- Fileinfo:
 -  . Upgrade to file 5.48. (Weilin Du)
 +?? ??? ????, PHP 8.7.0alpha1

+ - Intl:
 -  . Fixed cloning IntlDateFormatter and MessageFormatter losing PHP-side state
 -    such as dateType, timeType, calendar and the message pattern.
 -    (Ilia Alshanetsky)
 -  . Fixed a crash when converting with a cloned UConverter that uses
 -    toUCallback/fromUCallback. (Ilia Alshanetsky)
+   . Fixed Collator attribute and strength methods not rejecting an
+     unconstructed Collator. (Ilia Alshanetsky)
+
 -- Lexbor:
 -  . Merge patches lexbor/lexbor@8a14bc0 and lexbor/lexbor@f67ce4b, fixing a
 -    heap buffer overflow in :lexbor-contains() parsing and buffer overflows
 -    in malformed decode replay. (alexandre-daubois)
 -
 -- MBString:
 -  . Fixed bug GH-23106 (mb_strpos() reads past the end of a haystack ending in
 -    a truncated UTF-8 sequence). (Lazizbek Ergashev)
 -  . Updated Unicode data tables to Unicode 18.0 (Yuya Hamada)
 -
 -- MySQLi:
 -  . Fix GH-22854: Fixed failed assertion when accessing mysqli property after
 -    failed reconnection. (Kamil Tekiela)
 -
 -- Opcache:
 -  . Fixed bug GH-23693 (Tracing JIT produces wrong results for a guard on a
 -    loop-invariant addition). (Ilia Alshanetsky)
 -  . Fixed OSS-Fuzz #545352966 (default value AST of an SHM-persisted partial).
 -    (ndossche)
 -
 -- PDO:
 -  . Fixed PDOStatement::getColumnMeta() reading out of bounds for an invalid
 -    column index. (Ilia Alshanetsky)
 -  . Fixed PDOStatement::bindColumn() registering a binding for a column name
 -    that is not in the result set. (Ilia Alshanetsky)
 -
 -- PGSQL:
 -  . Fixed pg_lo_write() rejecting data containing null bytes. (Ilia Alshanetsky)
 -
 -- Posix:
 -  . Reverted the validity check on the flags argument of posix_access().
 -    (David Carlier)
 -
 -- Readline:
 -  . Fixed a heap over-read in the interactive shell prompt when cli.prompt is
 -    set to an empty string. (Ilia Alshanetsky)
 -
 -- SPL:
 -  . Fixed bug GH-23385 (SplDoublyLinkedList::serialize() use-after-free when
 -    __serialize() removes an element). (David Carlier)
 -
 -- SQLite:
 -  . Fixed a crash when SQLite3::close() is called from a userland callback.
 -    (Ilia Alshanetsky)
 -
 -- Standard:
 -  . Fixed bug #60110 (fclose(), file_put_contents(), copy() do not return false
 -    properly). (Jakub Zelenka, Ilija Tovilo)
 -  . Fixed three Windows-only proc_open() defects: an uninitialized
 -    PROCESS_INFORMATION, an indeterminate comspec pointer after a failed
 -    lookup, and an unchecked CreateFileA() failure. (Ilia Alshanetsky)
 -
 -- Zlib:
 -  . Fixed inflate_init() dropping the preset dictionary for raw streams with
 -    a non-default window. (Ilia Alshanetsky)
 -
 -
 -10 Sep 2026, PHP 8.6.0beta3
 -
 -- BCMath:
 -  . Fixed out-of-bounds read in bc_is_zero_for_scale() when scale exceeds
 -    n_scale. (Ilia Alshanetsky)
 -
 -- Core:
 -  . Fixed out-of-bounds reads during automatic UTF-16/32 encoding detection.
 -    (Yudai Takada)
 -  . Calling is_a() or is_subclass_of() with a string as the first argument
 -    when $allow_string is false is now deprecated. (Daniel Scherzer)
 -  . Fixed bug GH-23232 (lone namespace separator asks the autoloader for an
 -    empty class name). (spawnia)
 -  . Enabled the TAILCALL VM (--disable-gcc-global-regs) when building with GCC >= 16.
 -    (henderkes)
 -
 -- CLI:
 -  . Fixed bug GH-23242 (PHP development server does not support Expect
 -    100-continue flow control). (Sjoerd Langkemper)
 -
 -- Calendar:
 -  . Fixed *tojd() functions and cal_to_jd() truncating arguments outside the
 -    int range instead of rejecting them. (lacatoire)
 -
 -- DOM:
 -  . Fixed NamedNodeMap::getNamedItemNS() with an empty URI not matching
 -    the null namespace in spec-following mode. (Ilia Alshanetsky)
 -  . Fixed stale getElementsByClassName() and other node list caches after
 -    className/classList writes and attribute removals. (Ilia Alshanetsky)
 -  . Fixed reference cycles through DOMXPath and XSLTProcessor php:function
 -    callback arguments and return values not being collectable.
 -    (Ilia Alshanetsky)
 -
 -- Hash:
 -  . Fixed hash_file() reporting argument #1 ($algo) instead of argument #2
 -    ($filename) when the filename contains null bytes. (lacatoire)
 -
 -- Intl:
 -  . Fixed grapheme_strpos() and grapheme_strrpos() with an empty needle
 -    returning UTF-16 offsets instead of grapheme offsets. (Ilia Alshanetsky)
 -  . Fixed a memory leak when dumping IntlCalendar instances. (Ilia Alshanetsky)
 -  . Fixed Collator::sortWithSortKeys() allocating fixed 2MiB buffers
 -    regardless of array size. (Ilia Alshanetsky)
 -  . Fixed a memory leak when iterating IntlBreakIterator::getPartsIterator()
 -    results. (iliaal)
 -  . Fixed a leak in Locale::getKeywords() when a keyword value cannot be
 -    read. (iliaal)
 -  . Fixed a use-after-free when IntlRuleBasedBreakIterator is constructed
 -    from compiled rules. (iliaal)
 -  . Fixed Spoofchecker methods not recording the ICU error code when an ICU
 -    call fails. (Ilia Alshanetsky)
 -  . Fixed idn_to_ascii() and idn_to_utf8() reporting argument #2 ($flags)
 -    instead of argument #3 ($variant) for an invalid IDNA variant, and the
 -    domain length error message printing a literal "d" instead of the limit.
 -    (lacatoire)
 -
 -- MBString:
 -  . Fixed mb_ereg_replace() emitting a NUL or out-of-bounds bytes in the
 -    replacement when a \k<name> backref has no closing delimiter.
 -    (Ilia Alshanetsky)
 -
 -- ODBC:
 -  . Fixed odbc_field_len(), odbc_field_scale() and odbc_field_type()
 -    returning uninitialized memory when SQLColAttribute fails.
 -    (Ilia Alshanetsky)
 -  . odbc_error() and odbc_errormsg() now also report SQLColAttribute
 -    failures. (Ilia Alshanetsky)
 -
 -- PCNTL:
 -  . Fixed the declared signature of pcntl_signal(), whose $restart_syscalls
 -    argument accepts null and defaults to it. (lacatoire)
 -
 -- PDO_PGSQL:
 -  . Added Pdo\Pgsql::ATTR_CHUNK_SIZE to fetch a result set in chunks of the
 -    given number of rows. (KentarouTakeda)
 -
 -- PGSQL:
 -  . Fixed the pg_insert(), pg_update() and pg_delete() flag error messages,
 -    which did not name the set of flags actually accepted. (lacatoire)
 -
 -- Phar:
 -  . Fixed bug GH-23418 (Use-after-free when looking up mounted directories).
 -    (Weilin Du)
 -  . Fixed bug GH-23477 (Memory leak on duplicate native Phar manifest entries).
 -    (Weilin Du)
 -
 -- Sockets:
 -  . Fixed socket_set_option() with SO_ATTACH_REUSEPORT_CBPF and a zero value,
 -    which detached the classic BPF filter instead of the reuseport program.
 -    (David Carlier)
 -
 -- SOAP:
 -  . Fixed WSDL cache corruption when a soap:header defines headerfaults.
 -    (Ilia Alshanetsky)
 -  . Fixed stack overflow when parsing a WSDL with self-referential schema
 -    groups or attributeGroups. (Ilia Alshanetsky)
 -
 -- Sodium:
 -  . Added support for the libsodium 1.0.22 KEM APIs (X-Wing and ML-KEM768).
 -    (Zachary DuBois)
 -
 -- Standard:
 -  . Fixed a segfault when a stream filter callback unsets StreamBucket::$data
 -    before re-attaching the bucket. (iliaal)
 -  . Fixed an out-of-bounds read when following a redirect response with an
 -    empty Location header. (iliaal)
 -  . Fixed read buffer compaction in php_stream_filter_flush(). (crystarm)
 -  . Io\Poll\Context::wait() now rejects a $maxEvents value greater than
 -    INT_MAX instead of truncating it. (marc-mabe)
 -  . Fixed GH-23338 (fsockopen()/pfsockopen() ValueError reported wrong
 -    argument number for $timeout). (lacatoire)
 -  . Fixed bug GH-23576 (Next index for array returned from array_keys() is
 -    wrong). (Lazizbek Ergashev)
 -
 -- SimpleXML:
 -  . Fixed writing to a dimension of the object returned by attributes() not
 -    creating the attribute. (Ilia Alshanetsky)
 -  . Fixed child elements of the element returned by
 -    SimpleXMLElement::addChild() not being accessible by property name when
 -    namespaces are involved. (Ilia Alshanetsky)
 -
 -- Streams:
 -  . Added so_rcvbuf and so_sndbuf stream socket context options, setting the
 -    socket receive and send buffer sizes in bytes. (David Carlier)
 -
 -
 -27 Aug 2026, PHP 8.6.0beta2
 -
 -- Core:
 -  . Fixed bug GH-15375 (Nested "yield from" skips items after a valid() or
 -    next() call on the inner generator). (iliaal)
 -  . Fixed GH-10497 (Allow direct mutation of objects stored in constants or
 -    class constants via OBJ->prop = $val). (Khaled Alam)
 -  . Reverted GH-22833, which attempted to fix bug GH-18985. (ilutov)
 -  . Using the return statement in a finally block is now deprecated.
 -    (aldemeery)
 -
 -- Curl:
 -  . Set content length using CURLOPT_POSTFIELDSIZE_LARGE instead of
 -    CURLOPT_POSTFIELDSIZE. This makes it possible to post strings larger than
 -    2GB on some platforms, e.g. Windows. (Sjoerd Langkemper)
 -
 -- DOM:
 -  . Fixed a typo in the DOMException message for INUSE_ATTRIBUTE_ERR.
 -    (Weilin Du)
 -  . Fixed bug GH-22624 (use-after-free via DOMNameSpaceNode after
 -    DOMDocument::xinclude()). (David Carlier)
 -  . Fixed a use-after-free when cloning a DOMNameSpaceNode after
 -    DOMDocument::xinclude(). (iliaal)
 -  . Fixed a crash in DOMXPath when a php:function callback receives a nodeset
 -    and a later callback returns a node from another document. (iliaal)
 -  . Fixed bug GH-23331 (UAF when node_list_unlink() skips attribute children
 -    that still have a live wrapper). (iliaal)
 -  . Fixed a use-after-free when Dom\Element::setAttributeNS() replaces the
 -    value of an attribute whose child still has a live wrapper. (iliaal)
 -
 -- GD:
 -  . Fixed imageaffinematrixget() and imageaffinematrixconcat() reporting the
 -    wrong argument in error messages. (Weilin Du)
 -  . Fixed imageaffinematrixget() to enforce the documented array|float type
 -    for the $options parameter. (Weilin Du)
 -
 -- Intl:
 -  . Fixed grapheme_strrev() treating UBRK_DONE as a byte index and leaving
 -    the result without a terminating NUL. (iliaal)
 -  . Fixed a double-free when IntlGregorianCalendar construction fails after
 -    the ICU constructor adopts the TimeZone. (iliaal)
 -  . Fixed bug GH-23094 (NumberFormatter parsing offsets use UTF-16 positions
 -    for UTF-8 strings). (ColumbusLabs)
 -  . Fixed Locale::parseLocale() reading past a trailing '-' or '_'.
 -    (iliaal, Xuyang Zhang)
 -  . Fixed grapheme_str_split() treating UBRK_DONE as a byte index. (iliaal)
 -
 -- Opcache:
 -  . Fixed a tracing JIT crash when compiling a side trace for a method of a
 -    class that could not be stored in the inheritance cache. (GH-21710)
 -    (Arnaud, iliaal)
 -
 -- PDO:
 -  . Fixed a leak when a persistent connection failed a liveness check
 -    with no other live PDO handle. (iliaal)
 -
 -- PDO_PGSQL:
 -  . Fixed several lazy fetch (PDO::ATTR_PREFETCH => 0) defects: an infinite
 -    loop when cleaning up a fetch left in a COPY, a use-after-free when a
 -    statement with emulated or disabled prepares is destroyed, a connection
 -    left busy for the next fetch, and rows delivered from a result another
 -    statement took over. (KentarouTakeda)
 -
 -- PGSQL:
 -  . Fixed the class name casing of pg_close_stmt()'s connection parameter.
 -    (lacatoire)
 -
 -- Phar:
 -  . Fixed Phar archives being automatically detected when ".phar" only occurs
 -    in a directory name or is not a filename extension in an included file's
 -    path. (Weilin Du)
 -
 -- Readline:
 -  . Fixed class constant completion in the interactive shell. (Weilin Du)
 -
 -- Zip:
 -  . Fixed bug GH-23276 (ZipArchive subclass storing its own stream cannot be
 -    garbage collected). (Weilin Du, ndossche)
 -
 -- SAPI:
 -  . Fixed fuzzer targets failing to build in isolation. (Mrmaxmeier)
 -  . Fixed returns uninitialized value on LiteSpeed lsapi SAPI (Go Kudo)
 -
 -- Session:
 -  . Fixed bug GH-23056 (missing handler name in session write warning).
 -    (lazerg)
 -  . SessionHandler::validateId() is now implemented, so
 -    session.use_strict_mode applies to the built-in handler. (Girgias)
 -  . It is now deprecated to pass an object that does not implement the
 -    create_sid() and validateId() methods. (Girgias)
 -  . A deprecation is now emitted when implementing SessionHandlerInterface on a
 -    class which doesn't define the create_sid() or validateId() methods, as
 -    those will be moved from SessionUpdateTimestampHandlerInterface and
 -    SessionIdInterface to SessionHandlerInterface. (Girgias)
 -
 -- SNMP:
 -  . It is now possible to use the AES192, AES192C, AES256, and AES256C as
 -    SNMPv3 security protocols if the underlying library supports them.
 -    (eskyuu)
 -  . It is now possible to reset the MIB tree using the new snmp_init_mib()
 -    function. (eskyuu)
 -  . Additional MIB parsing and output control functionality has been exposed
 -    via the snmp_set_mib_option(), snmp_set_output_option(),
 -    snmp_set_string_output_format() functions, the $numeric_index,
 -    $numeric_timeticks, $extended_index, $dont_print_units, $escape_quotes,
 -    $print_hex_text SNMP properties, and the SNMP::setOidOutputFormat(),
 -    SNMP::setStringOutputFormat() methods. (eskyuu)
 -
 -- Sodium:
 -  . Fixed incorrect parameter name in sodium_add(), sodium_memcmp(), and
 -    sodium_compare() length-mismatch error messages. (lacatoire)
 -
 -- SPL:
 -  . The following SplFileObject methods have been deprecated
 -    SplFileObject::fgetcsv(), SplFileObject::fputcsv(),
 -    SplFileObject::setCsvControl(), and SplFileObject::getCsvControl().
 -    (Girgias)
 -
 -- Standard:
 -  . Fixed incorrect parameter name in convert_uudecode() warning. (lacatoire)
 -  . Added support for the "<" and ">" endianness modifiers in pack() and
 -    unpack() format codes. (alexandre-daubois)
 -
 -- Zip:
 -  . Fixed bug GH-17787 (ZipArchive stream stops reading early when the archive
 -    is freed while the stream is still open). (Eyüp Can Akman)
 -
 -- Zlib:
 -  . Fixed bug GH-22142 (Assertion failure in deflate_init() when an option
 -    object has uninitialised typed properties). (David Carlier)
 -
 -13 Aug 2026, PHP 8.6.0beta1
 -
 -- Core:
 -  . Deprecated "namespace" as a class constant name. (NickSdot)
 -  . Changed run-tests.php to run in parallel by default, using up to 10
 -    automatically detected workers. Pass -j1 for sequential execution.
 -    (NickSdot)
 -  . Allowed readonly properties to declare default values. (NickSdot)
 -  . Changed run-tests.php to run test subprocesses without a shell where
 -    possible. (NickSdot)
 -  . Fixed GH-23083 (SEGV build_trace_args in zend_exceptions.c with
 -    -d error_include_args=On). (David Carlier)
 -  . Fixed GH-23121 (is_callable() wrongly accepts objects with no get_closure
 -    handler). (David Carlier)
 -  . Passing a 3rd argument to define() is now deprecated. (Girgias)
 -  . Naming a function readonly is now deprecated. (Girgias)
 -  . Added stateless closure cache. (ilutov)
 -
 -- BZ2:
 -  . Passing an object for the Bzip2 {de}compression stream filter is now
 -    deprecated. Use get_object_vars() on the object instead. (Girgias)
 -
 -- Curl:
 -  . Improved cURL option validation errors to include the option name.
 -    (Sjoerd Langkemper)
 -  . Raise a value error when the callback registered with CURLOPT_READFUNCTION
 -    returns an unexpected long. (Sjoerd Langkemper)
 -  . Fix bug GH-16513 (curl: exceptions in callbacks do not abort the request).
 -    (Sjoerd Langkemper)
 -
 -- Date:
 -  . Update timelib to 2026.02. (Derick, timwolla)
 -  . Added Time\Duration. (timwolla, Derick)
 -
 -- DOM:
 -  . Fixed bug GH-23116 (Stack overflow when normalizing a deeply nested
 -    DOMDocument). (Lazizbek Ergashev)
 -  . Fixed bug GH-23117 (Stack overflow when normalizing a deeply nested
 -    Dom\XMLDocument). (Lazizbek Ergashev)
 -
 -- Exif:
 -  . Fixed exif_read_data() allocating a HEIF meta box larger than the file
 -    it came from. (iliaal)
 -
 -- GMP:
 -  . Added optional $definitely_prime output parameter to gmp_prevprime().
 -    (Weilin Du)
 -  . Added gmp_powm_sec(). (Weilin Du)
 -
 -- Intl:
 -  . Added static methods IntlDatePatternGenerator::getSkeleton() and
 -    IntlDatePatternGenerator::getBaseSkeleton(). (Weilin Du)
 -  . Fixed Collator::sort(), collator_sort(), Collator::asort(), and
 -    collator_asort() to report UTF-8/UTF-16 conversion errors through the intl
 -    error handler instead of emitting a warning and continuing with an empty
 -    string. (Weilin Du)
 -  . Fixed IntlListFormatter::__construct() leaving stale global error state
 -    after successful calls. (Weilin Du)
 -  . Fixed IntlNumberRangeFormatter leaving stale global error state after
 -    successful createFromSkeleton() and format() calls. (Weilin Du)
 -  . Implemented GH-20255 (Add a predefined calendar constant in
 -    IntlDateFormatter for the proleptic gregorian calendar). (David Carlier)
 -  . Added SpoofChecker::areBidiConfusable(). (David Carlier)
 -  . Added SpoofChecker::getBidiSkeleton(). (Weilin Du)
 -  . Added SpoofChecker::getSkeleton(). (David Carlier)
 -  . Fixed IntlNumberRangeFormatter::format() crash when the formatting fails.
 -    (David Carlier)
 -
 -- MbString:
 -  . Passing objects to mb_convert_variables() is now deprecated. (Girgias)
 -
 -- MySQLi:
 -  . The mysqli_get_charset() function and mysqli::get_charset() method are now deprecated. (Kamil Tekiela)
 -  . The mysqli_stmt_init() function and mysqli::stmt_init() method are now deprecated. (Kamil Tekiela)
 -  . Instantiation of mysqli_stmt without providing the $query parameter is now deprecated. (Kamil Tekiela)
 -
 -- PDO:
 -  . Fixed pdo_raise_impl_error() emitting a warning under ERRMODE_SILENT.
 -    (iliaal)
 -
 -- PDO_ODBC:
 -  . Fixed bug GH-23016 (NULL values in long columns come back as garbage
 -    binary strings). (Calvin Buckley, iliaal)
 -
 -- Readline:
 -  . Fixed the interactive shell not waiting for the pager process to exit.
 -    (Weilin Du)
 -
 -- Reflection:
 -  . Added ReflectionAttribute::inNamespace(),
 -    ReflectionAttribute::getNamespaceName(), and
 -    ReflectionAttribute::getShortName(). (Girgias)
 -  . Fixed bug GH-22905 (Reflection exception messages truncate on null bytes).
 -    (DanielEScherzer)
 -  . Fixed ReflectionProperty::isLazy() and skipLazyInitialization() using the
 -    parent slot when a child class hooks an inherited property. (iliaal)
 -  . Fixed segfault in ReflectionMethod::createFromMethodName() on an
 -    uninstantiable subclass. (iliaal)
 -
 -- SimpleXML:
 -  . Fixed integer element offsets that cannot resolve aliasing an existing
 -    element. (iliaal)
 -  . SimpleXMLElement::__construct() now raises a ValueError when the $data
 -    argument contains NUL bytes. (iliaal)
 -  . Fixed segfault when comparing uninitialized SimpleXMLElement
 -    instances. (iliaal)
 -
 -- SPL:
 -  . The spl_classes() function is now deprecated, use
 -    ReflectionExtension::getClassNames() instead. (Girgias)
 -  . The spl_object_hash() function is now deprecated, use spl_object_id()
 -    instead. (Girgias)
 -  . The following ArrayIterator methods are now deprecated:
 -    * ArrayIterator::getFlags()
 -    * ArrayIterator::setFlags()
 -    * ArrayIterator::asort()
 -    * ArrayIterator::ksort()
 -    * ArrayIterator::uasort()
 -    * ArrayIterator::uksort()
 -    * ArrayIterator::natsort()
 -    * ArrayIterator::natcasesort()
 -    * ArrayIterator::unserialize()
 -    * ArrayIterator::serialize()
 -    (Girgias)
 -
 -- Standard:
 -  . Passing an object as the $data argument to http_build_query() is now
 -    deprecated. The interpretation of object values within $data as arrays
 -    is also deprecated. Convert objects to arrays with get_object_vars()
 -    before calling the function. (Girgias)
 -  . Added the "filter.max_filter_count" stream context option for php://filter
 -    URLs. Using more than 16 filters without configuring this option is now
 -    deprecated. (Sjoerd Langkemper)
 -  . The metaphone() function is now deprecated, use a userland phonetic
 -    matching library instead. (Weilin Du)
 -  . Improved performance of array_intersect(). (mehmetcansahin)
 -  . Fixed bug GH-23006 (phpcredits() full-page HTML title says phpinfo()).
 -    (Weilin Du)
 -  . The following functions now raise a ValueError when the $filename argument
 -    contains NUL bytes: fileperms(), fileinode(), filesize(), fileowner(),
 -    filegroup(), fileatime(), filemtime(), filectime(), filetype(),
 -    is_writable(), is_readable(), is_executable(), is_file(), is_dir(),
 -    is_link(), file_exists(), lstat(), stat(). (Girgias)
 -  . Fixed bug GH-22818 (stream_filter_register() orphaned user_filter_map on
 -    shutdown re-registration). (David Carlier)
 -  . Io\Poll\Context::wait() now takes a Time\Duration object as a timeout.
 -    (timwolla)
 -  . Passing an object to array_walk{_recursive} is now deprecated. Use
 -    get_object_vars() on the object instead. (Girgias)
 -  . The is_double() function is now deprecated, use is_float() instead.
 -    (Girgias)
 -  . The is_long() and is_integer() functions are now deprecated, use is_int()
 -    instead. (Girgias)
 -  . The doubleval() function is now deprecated, use floatval() instead.
 -    (Girgias)
 -  . The strcoll() function is now deprecated, use Collator::compare() instead.
 -    (Girgias)
 -  . The SORT_LOCALE_STRING constant for the family of sort functions is now
 -    deprecated, use one of the following functions instead:
 -    * Collator::asort()
 -    * Collator::sort()
 -    * Collator::sortWithSortKeys()
 -    (Girgias)
 -
 -- Streams:
 -  . Fixed file_put_contents() LOCK_EX early return leaking stream error
 -    operation depth. (iliaal)
 -
 -- XSL:
 -  . Fixed use-after-free when a DOMDocument subclass __clone() retains the
 -    stylesheet copy made by XSLTProcessor::importStylesheet(). (iliaal)
 -
 -- Zlib
 -  . Passing an object for the zlib deflate and inflate stream filter is now
 -    deprecated. Use get_object_vars() on the object instead. (Girgias)
 -  . Passing an object to the $option argument to deflate_init and inflate_init
 -    is now deprecated. Use get_object_vars() on the object instead. (Girgias)
 -
 -30 Jul 2026, PHP 8.6.0alpha3
 -
 -- Core:
 -  . Implemented partial function application RFC. (Arnaud)
 -  . Fixed bug GH-22263 (reset typed property default on every unserialize
 -    failure path). (David Carlier)
 -  . Fixed bug GH-18985 (Wrong line numbers for match with constant arms).
 -    (ilutov)
 -  . Fixed bug GH-18847 (SEGV in zend_fetch_debug_backtrace() when the memory
 -    limit is reached while the tracing JIT enters a call frame). (Arnaud,
 -    iliaal)
 -
 -- DOM:
 -  . Fixed bug GH-22825 (DOMElement::setAttribute() fails silently when the DTD
 -    declares a default value for the attribute). (iliaal)
 -  . Fixed bug GH-23120 (Stack overflow when comparing deeply nested DOM nodes
 -    with DOMNode::isEqualNode()). (Weilin Du)
 -
 -- Embed:
 -  . Made php-cli functionality available in embed builds. (henderkes)
 -
 -- GMP:
 -  . Added gmp_prevprime(). (Weilin Du, David Carlier)
 -  . Fixed GMP power and shift operators to reject GMP right operands outside
 -    the unsigned long range instead of silently truncating them. (Weilin Du)
 -  . Fixed GMP integer string parsing to reject strings containing NUL bytes
 -    instead of silently truncating them. (Weilin Du)
 -  . Fixed GMP error messages that referenced outdated parameter names.
 -    (Weilin Du)
 -
 -- Intl:
 -  . Fixed grammatical issues in Normalizer invalid form and IntlCalendar time
 -    zone offset error messages. (Weilin Du)
 -  . Removed the dependency on the ICU IO library. (Weilin Du)
 -
 -- ODBC:
 -  . Fixed bug GH-22668 (Heap buffer over-read when a column value exceeds the
 -    driver-reported display size). (iliaal)
 -
 -- Opcache:
 -  . Re-enable JIT for ZTS builds on Apple Silicon. (realFlowControl)
 -
 -- PDO_ODBC:
 -  . Fixed bug GH-22667 (Heap buffer over-read when a column value exceeds the
 -    driver-reported display size). (iliaal)
 -  . Fixed bug GH-22666 (Heap buffer overflow when an output parameter value is
 -    longer than the declared maxlen). (iliaal)
 -  . Fixed bug GH-22665 (Out-of-bounds write when the ODBC driver reports a
 -    diagnostic message length beyond the error buffer). (iliaal)
 -
 -- Phar:
 -  . Fixed grammatical issues and outdated terminology in Phar error messages.
 -    (Weilin Du)
 -
 -- Reflection:
 -  . Fixed bug GH-22681 (Reflection*::__toString() truncates on null bytes).
 -    (DanielEScherzer)
 -
 -- SOAP:
 -  . Fixed header injection through the Content-Type context option, the
 -    soapaction and the cookie names and values. (David Carlier)
 -  . Fixed the SoapClient and SoapServer "classmap" option to reject arrays
 -    containing integer keys, and made SoapClient throw TypeError/ValueError
 -    for invalid "classmap" options. (Weilin Du, David Carlier)
 -
 -- MBString:
 -  . Fixed bug GH-22779 (mb_strrpos() returns the wrong position for a negative
 -    offset in a non-UTF-8 encoding). (Eyüp Can Akman)
 -  . Fixed bug GH-21036 (mb_ereg_search_getregs() crashes after mb_eregi()
 -    invalidates the regex cache). (Matthias Goergens)
 -
 -- PCRE:
 -  . Fixed bug GH-21134 (Crash with \C + UTF-8). Using \C in UTF-8 patterns is
 -    now forbidden. (Arnaud)
 -
 -- Sockets:
 -  . Fixed socket_set_option() validation error messages for UDP_SEGMENT and
 -    TCP_USER_TIMEOUT, and SO_LINGER options. (Weilin Du)
 -  . Fixed various memory related issues in ext/sockets. (David Carlier)
 -
 -- Standard:
 -  . Fixed setlocale() to reject locale names containing NUL bytes instead of
 -    silently truncating them, and to reject arrays passed after the $locales
 -    argument or additional arguments passed after an array $locales argument.
 -    (Weilin Du)
 -
 -- Streams:
 -  . Added a new IO copy API used by php_stream_copy_to_stream_ex() that
 -    leverages platform primitives (sendfile, splice, copy_file_range,
 -    TransmitFile) for faster stream copying. (Jakub Zelenka, David Carlier)
 -  . Fixed bug GH-22841 (php_stream_copy_to_stream_ex() drops progress
 -    notifications when using the copy fast path). (David Carlier)
 -  . Fixed bug GH-15836 (Use-after-free when a user stream filter accesses
 -    $this->stream during the close flush). (iliaal)
 -
 -16 Jul 2026, PHP 8.6.0alpha2
 -
 -- Core:
 -  . Sync Boost.Context assembly with 1.91.0. (kn1g78)
 -  . Fixed bug GH-22387 (AST pretty-printing drops meaningful parentheses around
 -    RHS of instanceof). (timwolla)
 -  . Fixed bug GH-15672 and GH-15911 (Stack overflow when an internal function
 -    recurses through zend_call_function, such as a self-attached SPL
 -    iterator). (iliaal)
 -  . Lock unmodified readonly properties for modification after clone-with.
 -    (NickSdot)
 -  . abort() instead of exit() on hard OOM. (realFlowControl)
 -  . perf: ZTS: move AG and SCNG into native __thread storage. (henderkes)
 -
 -- Calendar:
 -  . Fixed bug GH-22602 (gregoriantojd() and juliantojd() integer overflow with
 -    INT_MAX year). (arshidkv12)
 -
 -- Curl:
 -  . Added CURLOPT_SEEKFUNCTION and the CURL_SEEKFUNC_OK, CURL_SEEKFUNC_FAIL
 -    and CURL_SEEKFUNC_CANTSEEK constants, letting libcurl rewind a streamed
 -    request body to resend it on a redirect, multi-pass authentication or a
 -    retried reused connection. (GrahamCampbell)
 -
 -- Date:
 -  . Update timelib to 2022.17. (Derick)
 -  . Fixed bug GH-19803 (Parsing a string with a single white space does create
 -    an error). (Derick)
 -  . Fixed Unix timestamps in February of the year 0 are misparsed with
 -    @-notation. (LukasGelbmann)
 -  . Fixed bug GH-11368 (idate() doesn't work for the year -1). (Derick)
 -  . Fixed bug GH-11310 (__debugInfo does nothing on userland classes extending
 -    Date classes). (Derick)
 -
 -- DBA:
 -  . Fixed OOB read on malformed length field in dba flatfile handler. (alhudz)
 -
 -- DOM:
 -  . Fixed bug GH-22570 (Stack overflow when serializing a deeply nested
 -    Dom\XMLDocument). (iliaal)
 -  . Fixed Dom\DtdNamedNodeMap integer dimension access so negative indexes
 -    return NULL and indexes outside the int range throw ValueError instead of
 -    returning the first entity or notation. (Weilin Du)
 -  . Fixed bug GH-22623 (use after free with namespace nodes from
 -    XSLTProcessor::registerFunctions())/ (David Carlier)
 -  . Fixed bug GH-22554 (use-after-free with XPath callback returning a node
 -    from a foreign document). (David Carlier)
 -
 -- Exif:
 -  . Fixed bug GH-11020 (exif_read_data() emits a spurious "Illegal IFD size"
 -    warning when an IFD is not followed by a next-IFD offset). (Eyüp Can Akman)
 -
 -- GMP:
 -  . Fixed bug GH-22549 (Assertion failure / UB on a compound GMP power or shift
 -    assignment with a negative exponent). (iliaal)
 -
 -- Intl:
 -  . Fixed NumberFormatter::parse() and NumberFormatter::parseCurrency() to
 -    reject offset values outside the 32-bit range instead of silently
 -    truncating them. (Weilin Du)
 -  . IntlDateFormatter::parse()/datefmt_parse() and
 -    IntlDateFormatter::localtime()/datefmt_localtime() now raise TypeError
 -    when the offset argument is not of type int. (Weilin Du)
 -
 -- JSON:
 -  . Report unterminated JSON strings as syntax errors. (timwolla)
 -  . Improve performance error position tracking during JSON decoding.
 -    (henderkes)
 -  . Fixed bug GH-22514 (Incorrect error column in PHP 8.6 JSON parser).
 -    (henderkes, timwolla)
 -
 -- Opcache:
 -  . Fixed bug GH-21770 (Infinite recursion in property hook getter in opcache
 -    preloaded trait). (iliaal)
 -
 -- OpenSSL:
 -  . Added $salt_length parameter to openssl_sign() and openssl_verify() with
 -    new OPENSSL_RSA_PSS_SALTLEN_* constants. (Jakub Zelenka)
 -  . Fixed timeout for supplemental read at end of a blocking stream in SSL
 -    stream wrapper. (ilutov)
 -  . Fixed stream_socket_get_crypto_status() after supplemental read. (ilutov)
 -
 -- PDO_ODBC:
 -  . Fixed bug GH-20726 (Crash with ODBC connection pooling when the DSN
 -    carries no credentials). (iliaal)
 -
 -- PHPDBG:
 -  . Fixed fleaked lowercased lookup keys in phpdbg_resolve_opline_break.
 -    (jorgsowa)
 -  . Fixed off-by-one in phpdbg_safe_class_lookup() causing class lookups to
 -    always fail during phpdbg's signal-safe interruption path. (jorgsowa)
 -
 -- Reflection:
 -  . Fixed bug GH-22683 (Reflection(Class)Constant::__toString() should not warn
 -    on NAN conversions). (Khaled Alam)
 -  . Fixed bug GH-22681 (Reflection*::__toString() truncates on null bytes).
 -    (DanielEScherzer)
 -
 -- Session:
 -  . Fixed bug GH-21314 (Different session garbage collector behavior between
 -    PHP 8.3 and PHP 8.5). (jorgsowa)
 -
 -- SOAP:
 -  . Fixed bug GH-22585 (OOM on bailout with uninitialized
 -    do_request() parameters). (David Carlier)
 -  . Fixed xsd:hexBinary decoding to reject odd-length values instead of
 -    silently truncating the last nibble. (Weilin Du)
 -  . Made SOAP encoding errors report the affected type or failing operation
 -    instead of the generic "Violation of encoding rules" message. (Weilin Du)
 -
 -- Standard:
 -  . Fixed sleep() and usleep() to reject values that overflow the underlying
 -    unsigned int timeout. (Weilin Du)
 -  . Fixed bug GH-22671 (assert.bail aborts the process when the assert callback
 -    throws an exception whose reporting re-throws). (iliaal)
 -  . Fixed bug GH-22678 (Use-after-free in array_multisort() when the comparator
 -    mutates the array being sorted). (azchin, iliaal)
 -
 -- Streams:
 -  . Fixed bug GH-21468 (Segfault in file_get_contents w/ a https URL
 -    and a proxy set). (CVE-2026-12184) (ndossche)
 -
 -- URI:
 -  . Fixed bug GH-22628 (Percent-encoding of caret in WHATWG URL paths is not
 -    performed). (kocsismate)
 -  . Fixed bug GH-22629 (WHATWG Validation error incorrect with empty host and
 -    non-empty userinfo). (kocsismate)
 -
 -- Zip:
 -  . Fixed bug GH-22649 (ZipArchive::setCommentName() and setCommentIndex()
 -    could crash after overwriting an entry and resetting its inherited
 -    unchanged comment). (Weilin Du)
 -  . Fixed bug GH-21705 (ZipArchive::getFromIndex() ignores
 -    ZipArchive::FL_UNCHANGED for deleted entries). (Weilin Du)
 -  . Fixed bug GH-22176 (memory leak with ZipArchive::registerCancelBack()
 -    is used with reference returning function during shutdown).
 -    (David Carlier)
 -  . ZipArchive::addGlob() and ZipArchive::addPattern() now raise a TypeError
 -    for invalid "remove_all_path", "comp_method", "comp_flags", and
 -    "enc_method" options instead of emitting a warning. (David Carlier)
 -
 -02 Jul 2026, PHP 8.6.0alpha1
 -
 -- Core:
 -  . Added first-class callable cache to share instances for the duration of the
 -    request. (ilutov)
 -  . It is now possible to use reference assign on WeakMap without the key
 -    needing to be present beforehand. (ndossche)
 -  . Added `clamp()`. (kylekatarnls, thinkverse)
 -  . Fix OSS-Fuzz #429429090 (Failed assertion on unset() with uninitialized
 -    container). (ilutov)
 -  . Fixed GH-20564 (Don't call autoloaders with pending exception). (ilutov)
 -  . Fix deprecation not showing when accessing null key of an array with JIT.
 -    (alexandre-daubois)
 -  . Fixed bug GH-20174 (Assertion failure in
 -    ReflectionProperty::skipLazyInitialization after failed LazyProxy
 -    initialization). (Arnaud)
 -  . Enabled the TAILCALL VM on Windows when compiling with Clang >= 19 x86_64.
 -    (henderkes)
 -  . Deprecate specifying a nullable return type for __debugInfo(). (timwolla)
 -  . Fixed bug GH-22142 (Assertion failure in zendi_try_get_long() on IS_UNDEF).
 -    (David Carlier)
 -  . Fixed bug GH-22046 (The unserialize function can lead to segfault when
 -    non-Serializable internal classes are serialized back with the C format).
 -    (kocsismate)
 -  . Fixed bug GH-22292 (AST pretty printing does not correctly handle invalid
 -    variable names). (timwolla)
 -  . Fixed bug GH-22291 (AST pretty printing does not correctly handle braces in
 -    string interpolation). (timwolla)
 -  . Fixed bug GH-22373 (AST pretty-printing drops meaningful parentheses
 -    surrounding property access). (timwolla)
 -  . Fixed GH-22422 (zend_arena layout mismatch leaked memory in separately
 -    built extensions under AddressSanitizer). (iliaal)
 -  . TSRM: use local-exec TLS in PIE executables. (henderkes)
 -  . perf: make all static extensions use TSRMG_STATIC. (henderkes)
 -  . Fixed bug GH-22257 (type confusion in Exception::getTraceAsString()).
 -    (David Carlier)
 -  . TSRM: make CG, EG, SCNG and AG compile-time offsets. (henderkes)
 -  . Deprecate returning values from __construct() and __destruct(). (timwolla)
 -  . base_convert, bindex, hexdec and octdec now raise a notice when they cannot
 -    precisely convert the given number. (Sjoerd Langkemper)
 -  . Added error_include_args INI option to make the display of function
 -    arguments consistent in error output. (Calvin Buckley)
 -
 -- BCMath:
 -  . Added NUL-byte validation to BCMath functions. (jorgsowa)
 -
 -- BZ2:
 -  . Reject oversized input in bzdecompress(). (arshidkv12)
 -
 -- Curl:
 -  . Add support for CURLINFO_SIZE_DELIVERED (libcurl >= 8.20.0). (Ayesh)
 -
 -- Date:
 -  . Update timelib to 2022.16. (Derick)
 -
 -- DOM:
 -  . Removed LIBXML_XINCLUDE from valid options for XMLDocument, as it was a
 -    no-op. (ndossche)
 -  . Readonly DOM properties are now declared with asymmetric visibility
 -    (public private(set)). ReflectionProperty::isWritable() reports them
 -    correctly, and external writes raise "Cannot modify private(set)
 -    property" instead of the previous readonly modification error.
 -    (David Carlier)
 -  . Fixed Dom\Notation nodes missing tree connection, so that ownerDocument,
 -    parentNode, isConnected and baseURI now return correct values, and
 -    textContent returns NULL per the DOM specification. (jordikroon)
 -
 -- EXIF:
 -  . Added support for reading EXIF metadata from WebP images (GH-19904).
 -    (iliaal)
 -
 -- Fileinfo:
 -  . Fixed bug GH-20679 (finfo_file() doesn't work on remote resources).
 -    (ndossche)
 -  . Fixed bug #66095 (Hide libmagic dynamic symbols). (orlitzky)
 -
 -- GD:
 -  . imagesetstyle()/imagefilter()/imagecrop() check array argument entries
 -    types. (David Carlier)
 -
 -- GMP:
 -  . gmp_fact() reject values larger than unsigned long. (David Carlier)
 -  . gmp_pow/binomial/root/rootrem and shift/pow operators reject values larger
 -    than unsigned long. (David Carlier)
 -  . GMP exponentiation and shift operators now emit a deprecation warning
 -    when converting a float right operand to int loses precision. (Weilin Du)
 -
 -- Hash:
 -  . Upgrade xxHash to 0.8.2. (timwolla)
 -
 -- Intl:
 -  . Fixed malformed ResourceBundle::get() error message when fallback is
 -    disabled. (Weilin Du)
 -  . Added Locale::getDisplayKeyword() and Locale::getDisplayKeywordValue(),
 -    with the alias of locale_get_display_keyword() and
 -    locale_get_display_keyword_value() respectively. (Weilin Du)
 -  . Fix incorrect argument positions for invalid start/end arguments in
 -    transliterator_transliterate(). (Weilin Du)
 -  . Fixed IntlTimeZone::getDisplayName() to synchronize object error state
 -    for invalid display types. (Weilin Du)
 -  . Fixed Locale::lookup() and locale_lookup() to return NULL instead of the
 -    fallback locale when a language tag cannot be canonicalized. (Weilin Du)
 -  . Added IntlNumberRangeFormatter class to format an interval of two numbers
 -    with a given skeleton, locale, collapse type and identity fallback.
 -    (BogdanUngureanu)
 -  . Fixed bug GH-20426 (Spoofchecker::setRestrictionLevel() error message
 -    suggests missing constants). (DanielEScherzer)
 -  . Added grapheme_strrev (Yuya Hamada)
 -  . Passing a non-stringable object as a time zone to Intl time zone
 -    argument handling now raises TypeError instead of Error. (Weilin Du)
 -  . IntlBreakIterator::getLocale() now raises ValueError for invalid locale
 -    types. (Weilin Du)
 -  . Fixed MessageFormatter::parse() and parseMessage() returning PHP_INT_MIN
 -    as float rather than int on 64-bit platforms. (Weilin Du)
 -  . Fixed UConverter::transcode() silently truncating from_subst and to_subst
 -    option lengths greater than 127 bytes. (Weilin Du)
 -  . Fixed IntlIterator::current() to return NULL instead of an undefined value
 -    when the iterator is not positioned on a valid element. (Weilin Du)
 -
 -- IO:
 -  . Added new polling API. (Jakub Zelenka)
 -
 -- JSON:
 -  . Enriched JSON last error / exception message with error location.
 -    (Juan Morales)
 -
 -- Fibers:
 -  . Fixed bug GH-20483 (ASAN stack overflow with fiber.stack_size INI small
 -    value). (David Carlier)
 -
 -- Mail:
 -  . Fixed bug GH-20862 (null pointer dereference in
 -    php_mail_detect_multiple_crlf via error_log (jordikroon)
 -
 -- Mbstring:
 -  . ini_set() with mbstring.detect_order changes the order of mb_detect_order
 -    as intended, since mbstring.detect_order is an INI_ALL setting. (tobee94)
 -  . Added GB18030-2022 to default encoding list for zh-CN. (HeRaNO)
 -  . Fixed bug GH-20836 (Stack overflow in mb_convert_variables with
 -    recursive array references). (alexandre-daubois)
 -  . Fixed bug GH-21223; mb_guess_encoding no longer crashes when passed huge
 -    list of candidate encodings (with 200,000+ entries). (Jordi Kroon)
 -  . mbregex has been deprecated. (youkidearitai)
 -
 -- Mysqli:
 -  . Added mysqli_quote_string() and mysqli::quote_string(). (Kamil Tekiela)
 -
 -- Opcache:
 -  . Fixed bug GH-20051 (apache2 shutdowns when restart is requested during
 -    preloading). (Arnaud, welcomycozyhom)
 -
 -- OpenSSL:
 -  . Added AES-SIV support. (jordikroon)
 -  . Implemented GH-20310 (No critical extension indication in
 -    openssl_x509_parse() output). (StephenWall)
 -  . Added TLS session resumption support for streams with new context options
 -    and Openssl\Session class. (Jakub Zelenka)
 -  . Added TLS external PSK support for streams with new context options and
 -    Openssl\Psk class. (Jakub Zelenka)
 -  . Added TLS 1.3 early data (0-RTT) support for streams with new context
 -    options early_data, max_early_data and early_data_cb. (Jakub Zelenka)
 -  . Added stream crypto status for exposing OpenSSL WANT_READ / WANT_WRITE.
 -    (Jakub Zelenka)
 -
 -- PCNTL:
 -  . pcntl_exec() now throws a ValueError if the $args array is not a list
 -    array. (Weilin Du)
 -
 -- PDO_DBLIB:
 -  . Added dblib_handle_check_liveness handler. (freddy77)
 -
 -- PDO_PGSQL:
 -  . Clear session-local state disconnect-equivalent processing.
 -    (KentarouTakeda)
 -
 -- PGSQL:
 -  . Enabled 64 bits support for pg_lo_truncate()/pg_lo_tell() if the server
 -    supports it. (KentarouTakeda)
 -  . pg_fetch_object() now surfaces non-instantiable class errors before
 -    fetching, resolves the constructor via the get_constructor handler, and
 -    reports the empty-constructor ValueError on the $constructor_args argument.
 -    (David Carlier)
 -
 -- Phar:
 -  . Support reference values in Phar::mungServer(). (ndossche)
 -  . Invalid values now throw in Phar::mungServer() instead of being silently
 -    ignored. (ndossche)
 -  . Fixed a bypass of the magic ".phar" directory protection in
 -    Phar::addEmptyDir() for paths starting with "/.phar". (Weilin Du)
 -  . Fixed an integer underflow when parsing ZIP extra fields. (Weilin Du)
 -  . Phar::addEmptyDir() now allows non-magic directory names that merely
 -    share the ".phar" prefix. (Weilin Du)
 -  . Support overridden methods in SplFileInfo for getMTime() and getPathname()
 -    when building a phar. (ndossche)
 -  . Mark Phar::buildFromIterator() base directory argument as a path.
 -    (ndossche)
 -
 -- phpdbg:
 -  . Fixed GH-22480 (Use-after-free when re-watching an already-watched
 -    variable). (iliaal)
 -
 -- Posix:
 -  . Added validity check to the flags argument for posix_access(). (arshidkv12)
 -
 -- Reflection:
 -  . Fixed bug GH-20217 (ReflectionClass::isIterable() incorrectly returns true
 -    for classes with property hooks). (alexandre-daubois)
 -  . Added ReflectionConstant::inNamespace(). (Khaled Alam)
 -  . Added ReflectionProperty::isReadable() and ::isWritable(). (ilutov)
 -  . Fixed bug GH-21362 (ReflectionMethod::invoke/invokeArgs() did not verify
 -    Closure instance identity for Closure::__invoke()). (Ilia Alshanetsky)
 -  . Added ReflectionParameter::getDocComment(). (chschneider)
 -
 -- Session:
 -  . Fixed bug 71162 (updateTimestamp never called when session data is empty).
 -    (Girgias)
 -  . Null bytes in session.cookie_path, session.cookie_domain, and
 -    session.cache_limiter are now rejected with a warning. (jorgsowa)
 -  . session.cookie_samesite now rejects invalid values with a warning; only
 -    "Strict", "Lax", "None", or "" are accepted. (jorgsowa)
 -  . session.cookie_lifetime now rejects non-integer and out-of-range values
 -    with a warning. (jorgsowa)
 -  . Session file GC now recursively cleans nested subdirectories when
 -    session.save_path uses the dirdepth prefix. (jorgsowa)
 -  . Changed defaults of session.use_strict_mode (now 1), session.cookie_httponly
 -    (now 1) and session.cookie_samesite (now "Lax"). (jorgsowa)
 -
 -- Shmop:
 -  . Fixed bug GH-9945 (shmop_open() silently truncates keys outside the key_t
 -    range). (Weilin Du)
 -
 -- Soap:
 -  . Soap::__setCookie() when cookie name is a digit is now not stored and
 -    represented as a string anymore but a int. (David Carlier)
 -  . Fixed bug GH-21421 (SoapClient typemap property breaks engine assumptions).
 -    (ndossche)
 -  . WSDL/XML Schema parsing now rejects out-of-range integer values for
 -    occurrence constraints and integer restriction facets. Negative minOccurs
 -    and maxOccurs values are rejected as well. (Weilin Du)
 -
 -- Sockets:
 -  . Added the TCP_USER_TIMEOUT constant for Linux to set the maximum time in
 -    milliseconds transmitted data can remain unacknowledged. (James Lucas)
 -  . Added AF_UNSPEC support for sock_addrinfo_lookup() as a sole umbrella for
 -    AF_INET* family only. (David Carlier)
 -  . Fixed GH-20532 (socket_addrinfo_lookup gives the error code with a new
 -    optional parameter). (David Carlier)
 -  . Added AF_PACKET support completion for socket_sendto()/socket_recvfrom().
 -    (David Carlier)
 -
 -- Sodium:
 -  . Added support for libsodium 1.0.21 IPcrypt and XOF APIs. (jedisct1)
 -  . pwhash argument-validation errors now throw ValueError instead of
 -    SodiumException. (iliaal)
 -
 -- SPL:
 -  . DirectoryIterator key can now work better with filesystem supporting larger
 -    directory indexing. (David Carlier)
 -  . Fixed bug GH-21831 (SplObjectStorage::removeAllExcept() use-after-free with
 -    re-entrant getHash()). (Pratik Bhujel)
 -  . Fix bugs GH-8561, GH-8562, GH-8563, and GH-8564 (Fixing various
 -    SplFileObject iterator desync bugs). (iliaal)
 -  . Fix bug GH-22062 (SplDoublyLinkedList iterator UAF via destructor releasing
 -    next node). (David Carlier)
 -
 -- Sysvshm:
 -  . Fixed shm_attach() to throw ValueError for keys outside the key_t range.
 -    (Weilin Du)
 -
 -- Sqlite3:
 -  . Fix NUL byte truncation in sqlite3 TEXT column handling. (ndossche)
 -
 -- Standard:
 -  . Fixed bug GH-19926 (reset internal pointer earlier while splicing array
 -    while COW violation flag is still set). (alexandre-daubois)
 -  . Added form feed (\f) in the default trimmed characters of trim(), rtrim()
 -    and ltrim(). (Weilin Du)
 -  . Invalid mode values now throw in array_filter() instead of being silently
 -    defaulted to 0. (Jorg Sowa)
 -  . Fixed bug GH-21058 (error_log() crashes with message_type 3 and
 -    null destination). (David Carlier)
 -  . Fixed bug GH-13204 (glob() fails if square bracket is in current directory).
 -    (ndossche)
 -  . Add array size maximum to array_diff(). (ndossche)
 -  . Add enum SortDirection. (timwolla)
 -  . pathinfo() raises a ValueError with an invalid $flags argument.
 -    (David Carlier)
 -  . Passing an invalid flag value to the second argument of scandir() will now
 -    throw a ValueError. (alexandre-daubois)
 -  . array_change_key_case() now raises a ValueError when an invalid $case
 -    argument value is passed. (Girgias)
 -  . linkinfo() now raises a ValueError when the argument is an empty string.
 -    (Weilin Du)
 -  . getenv() and putenv() now raises a ValueError when the first argument
 -    contains NUL bytes. (Weilin Du)
 -  . dl() now raises a ValueError when the $extension_filename argument contains
 -    NUL bytes. (Weilin Du)
 -  . openlog() now raises a ValueError when the $prefix argument contains NUL
 -    bytes. (Weilin Du)
 -  . parse_str() now raises a ValueError when the $string argument contains NUL
 -    bytes. (Weilin Du)
 -  . proc_open() now raises a ValueError when the $cwd argument contains NUL
 -    bytes. (Weilin Du)
 -  . ini_get_all() now includes the built-in default value in the details.
 -    (sebastian)
 -  . Fixed bug GH-22171 (Invalid auth header generation in http(s) stream
 -    wrapper). (David Carlier)
 -  . Fixed bug GH-17384 (number_format() may exhaust memory with decimals
 -    outside the range from -2147483648 to 2147483647). (Weilin Du)
 -
 -- Streams:
 -  . Added new stream errors API including new StreamException, StreamError
 -    classes, StreamErrorStore, StreamErrorMode, StreamErrorCode enums,
 -    stream_last_errors() and stream_clear_errors() functions, error_mode,
 -    error_store and error_handler stream context options and extending some
 -    stream functions with context param. (Jakub Zelenka)
 -  . Added so_keepalive, tcp_keepidle, tcp_keepintvl and tcp_keepcnt stream
 -    socket context options. (Jakub Zelenka)
 -  . Added so_reuseaddr streams context socket option that allows disabling
 -    address resuse. (Jakub Zelenka)
 -  . Added so_linger stream socket context option. (Jakub Zelenka)
 -  . Fixed bug GH-20370 (User stream filters could violate typed property
 -    constraints). (alexandre-daubois)
 -  . Allowed filtered streams to be casted as fd for select. (Jakub Zelenka)
 -  . Fixed bug GH-21221 (Prevent closing of innerstream of php://temp stream).
 -    (ilutov)
 -  . Improved stream_socket_server() bind failure error reporting. (ilutov)
 -  . Fixed bug #49874 (ftell() and fseek() inconsistency when using stream
 -    filters). (Jakub Zelenka)
 -
 -- URI:
 -  . Added Uri\Rfc3986\Uri::getUriType() and Uri\WhatWg\Url::isSpecialScheme().
 -    (kocsismate)
 -  . Added Uri\Rfc3986\Uri::getHostType() and Uri\WhatWg\Url::getHostType().
 -    (kocsismate)
 -  . Added Uri\Rfc3986\UriBuilder. (kocsismate)
 -
 -- Zip:
 -  . Fixed bug GH-21682 (ZipArchive instances should not be serializable).
 -    serialize()/unserialize() now throw unless a subclass overrides
 -    __serialize()/__unserialize(). (iliaal)
 -  . Fixed ZipArchive callback being called after executor has shut down.
 -    (ilutov)
 -  . Support minimum version for libzip dependency updated to 1.0.0.
 -    (David Carlier)
 -  . Added ZipArchive::openString() method.
 -    (Tim Starling, Soner Sayakci, Ghaith Olabi)
 -
 -- Zlib:
 -  . deflate_init() now raises a TypeError when the value for option
 -    "level", "memory", "window", or "strategy" is not of type int.
 -    (Weilin Du)
 -  . inflate_init() now raises a TypeError when the value for option
 -    "window" is not of type int. (Weilin Du)
 -
  <<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>