Other ChangesCore changesClosuresClosure names have been adjusted to include the parent function's name and the line of definition to make them easier to distinguish, for example within stack traces. FibersFiber switching during destructor execution is now allowed. It was previously blocked due to conflicts with garbage collection. Destructors may now be executed in a separate Fiber: When garbage collection is triggered in a Fiber, destructors called by the GC are executed in a separate Fiber: the gc_destructor_fiber. If this Fiber suspends, a new one is created to execute the remaining destructors. The previous gc_destructor_fiber is not referenced anymore by the GC and may be collected if it's not referenced anywhere else. Objects whose destructor is suspended will not be collected until the destructor returns or the Fiber is collected. Output Handlers
Output handler status flags passed to the
output_add_rewrite_var now uses
Changes in SAPI Modulesapache2handlerSupport for EOL Apache 2.0 and 2.2 has been removed. Minimum required Apache version is now 2.4. CLIThe builtin server looks for an index file recursively by traversing parent directories in case the specified file cannot be located. This process was previously skipped if the path looked like it was referring to a file, i.e. if the last path component contained a period. In that case, a 404 error was returned. The behavior has been changed to look for an index file in all cases. FPM
The /dev/poll Changed FunctionsCoretrigger_error and user_error now have a return type of true instead of bool. DOM
DOMDocument::registerNodeClass
now has a tentative return type of true instead of
bool.
It could only ever return Hash
hash_update
now has a tentative return type of true instead of
bool.
It could only ever return Intl
ResourceBundle::get
now has a tentative return type of
The idn_to_ascii and idn_to_utf8
functions now always throw ValueErrors
if the
The idn_to_ascii and idn_to_utf8
functions now always throw ValueError
if the LibXMLlibxml_set_streams_context now immediately throws a TypeError when a non-stream-context resource is passed to the function, instead of throwing later when the stream context is used. MBStringThe behavior of mb_strcut is more consistent now on invalid UTF-8 and UTF-16 strings. There is no behavioural change for valid UTF-8 and UTF-16 strings. ODBC
The OpenSSL
The
The
New
Parsing ASN.1 UTCTime with openssl_x509_parse
fails if seconds are omitted for OpenSSL version below 3.2
( PDO
It is now possible to fetch the value of the
A new PDO_FIREBIRD
It is now possible to fetch the value of the
Added new attributes to specify transaction isolation level and access mode. Five constants relating to this functionality have been added:
When using persistent connections, there is now a liveliness check in the constructor.
The content that is built changes depending on the value of
Five new data types are now available:
PDO_MYSQL
It is now possible to fetch the value of the
PDO_PGSQL
Support retrieving the memory usage of queries for
If the column is of type PGSQL
The PharThe
POSIXposix_isatty now sets the error number when the file descriptor/stream argument is invalid. ReflectionReflectionGenerator::getFunction may now be called after the generator finished executing. Sockets
The SodiumThe sodium_crypto_aead_aes256gcm_* functions are now available on aarch64 CPUs with the ARM cryptographic extensions. SPLThe
SplObjectStorage now implements SeekableIterator. Standard
The default debug_zval_dump now indicates whether an array is packed.
long2ip now has a return type of string
instead of
highlight_string now has a return type of
string|true instead of
print_r now has a return type of
string|true instead of Rounding with round
The Four new modes have been added to the round function:
The internal implementation for rounding to integers has been rewritten
to be easier to verify for correctness and to be easier to maintain.
Some rounding bugs have been fixed as a result of the rewrite.
For example previously rounding
Fixed a bug caused by "pre-rounding" of the round function.
Previously, using "pre-rounding" to treat a value like
The maximum precision that can be handled by round
has been extended by one digit.
For example, Other Changes to ExtensionscURLThe minimum libcurl version required is now 7.61.0.
The GMP
Casting a GMP object to bool is now
possible instead of emitting a LibXMLThe minimum libxml2 version required is now 2.9.4. IntlThe behaviour of Intl class has been normalized to always throw Error exceptions when attempting to use a non-initialized object, or when cloning fails. MBStringUnicode data tables have been updated to Unicode 16.0. MySQLndSupport for the new VECTOR data type from MySQL 9. OpenSSLThe minimum OpenSSL version required is now 1.1.1. PDO_PGSQLThe minimum libpq version required is now 10.0. PGSQLThe minimum libpq version required is now 10.0. SPLOut of bounds accesses in SplFixedArray now throw exceptions of type OutOfBoundsException instead of RuntimeException. Because OutOfBoundsException is a child class of RuntimeException no behavioural changes are exhibited when attempting to catch those exceptions. XSLThe typed properties XSLTProcessor::$cloneDocument and XSLTProcessor::$doXInclude are now declared ZlibThe minimum zlib version required is now 1.2.11. PerformanceCoreImproved the performance of floating point number parsing and formatting in ZTS builds under highly concurrent loads. This affects the printf family of functions as well as serialization functions such as json_encode, or serialize.
sprintf using only BCMathImproved performance of number conversions and operations. DOMThe performance of DOMNode::C14N is greatly improved for the case without an xpath query. This can give a time improvement of easily two order of magnitude for documents with tens of thousands of nodes. Improved performance and reduce memory consumption of XML serialization. Reduced memory usage of node classes. FTPImproved the performance of FTP uploads up to a factor of 10x for large uploads. HashAdded SSE2 and SHA-NI implementations of SHA-256. This improves the performance on supported CPUs by ~1.3x (SSE2), and 3x - 5x (SHA-NI). Credit to Colin Percival / Tarsnap for this optimization. MBStringmb_strcut is much faster now for UTF-8 and UTF-16 strings. Looking up mbstring encoding names is much faster now. The performance of converting SJIS-win to Unicode is greatly improved. MySQLndImproved the performance of MySQLnd quoting. PCREImproved the performance of named capture groups. RandomImproved the performance of Random\Randomizer, with a specific focus on the Random\Randomizer::getBytes, and Random\Randomizer::getBytesFromString methods. SimpleXMLImproved performance and reduce memory consumption of XML serialization. StandardThe performance of strspn and strcspn is greatly improved. They now run in linear time instead of being bounded by quadratic time. Improved the performance of strpbrk. get_browser is much faster now, up to 1.5x - 2.5x for some test cases. |