From 574d33a748e2903ce674c26b758137828ff9f2c1 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Oct 2024 17:15:50 +0100 Subject: [PATCH 01/35] WIP: start writing migration guide with new constants Covers section 10 of UPGRADING --- appendices/migration84.xml | 54 ++++ appendices/migration84/constants.xml | 468 +++++++++++++++++++++++++++ 2 files changed, 522 insertions(+) create mode 100644 appendices/migration84.xml create mode 100644 appendices/migration84/constants.xml diff --git a/appendices/migration84.xml b/appendices/migration84.xml new file mode 100644 index 000000000000..095610709178 --- /dev/null +++ b/appendices/migration84.xml @@ -0,0 +1,54 @@ + + + Migrating from PHP 8.3.x to PHP 8.4.x + + + This new minor version brings with it a number of + new features and a + few incompatibilities + that should be tested for before switching PHP versions in production + environments. + + + + &manual.migration.seealso; + 7.1.x, + 7.2.x, + 7.3.x, + 7.4.x, + 8.0.x, + 8.1.x, + 8.2.x, + 8.3.x. + + + &appendices.migration84.new-features; + &appendices.migration84.new-classes; + &appendices.migration84.new-functions; + &appendices.migration84.constants; + &appendices.migration84.incompatible; + &appendices.migration84.deprecated; + &appendices.migration84.other-changes; + &appendices.migration84.windows-support; + + + diff --git a/appendices/migration84/constants.xml b/appendices/migration84/constants.xml new file mode 100644 index 000000000000..c724dd7c45ea --- /dev/null +++ b/appendices/migration84/constants.xml @@ -0,0 +1,468 @@ + + + New Global Constants + + + Core + + + + + PHP_OUTPUT_HANDLER_PROCESSED + + + + + PHP_SBINDIR + + + + + + + cURL + + + + + CURL_HTTP_VERSION_3 + + + + + CURL_HTTP_VERSION_3ONLY + + + + + CURL_TCP_KEEPCNT + + + + + CURLOPT_PREREQFUNCTION + + + + + CURL_PREREQFUNC_OK + + + + + CURL_PREREQFUNC_ABORT + + + + + CURLOPT_SERVER_RESPONSE_TIMEOUT + + + + + CURLOPT_DEBUGFUNCTION + + + + + CURLINFO_TEXT + + + + + CURLINFO_HEADER_IN + + + + + CURLINFO_DATA_IN + + + + + CURLINFO_DATA_OUT + + + + + CURLINFO_SSL_DATA_OUT + + + + + CURLINFO_SSL_DATA_IN + + + + + CURLINFO_POSTTRANSFER_TIME_T + + + + + + + Intl + + + + + PATTERN + (IntlDateFormatter) + + + + + PROPERTY_IDS_UNARY_OPERATOR + (IntlChar) + + + + + PROPERTY_ID_COMPAT_MATH_START + + + + + + PROPERTY_ID_COMPAT_MATH_CONTINUE + + + + + + + + LDAP + + + + + LDAP_OPT_X_TLS_PROTOCOL_MAX + + + + + LDAP_OPT_X_TLS_PROTOCOL_TLS1_3 + + + + + + + libxml + + + + + LIBXML_RECOVER + + + + + LIBXML_NO_XXE. + This is used together with LIBXML_NOENT + when entity substitution should be performed, + while disallowing external entity loading. + This constant is available as of libxml2 2.13. + + + + + + + MySQLi + + + + + MYSQLI_TYPE_VECTOR + + + + + + + OpenSSL + + + + X509_PURPOSE_OCSP_HELPER + + + X509_PURPOSE_TIMESTAMP_SIGN + + + + + + PCNTL + + + + + Pcntl\QosClass::Background (macOS only) + + + + + Pcntl\QosClass::Default (macOS only) + + + + + Pctnl\QosClass::UserInteractive (macOS only) + + + + + Pcntl\QosClass::UserInitiated (macOS only) + + + + + Pcntl\QosClass::Utility (macOS only) + + + + + SIGCKPT (DragonFlyBSD only) + + + + + SIGCKPTEXIT (DragonFlyBSD only) + + + + + WEXITED + + + + + WSTOPPED + + + + + WNOWAIT + + + + + P_ALL + + + + + P_PID + + + + + P_PGID + + + + + P_PIDFD (Linux only) + + + + + P_UID (NetBSD/FreeBSD only) + + + + + P_GID (NetBSD/FreeBSD only) + + + + + P_SID (NetBSD/FreeBSD only) + + + + + P_JAILID (FreeBSD only) + + + + + + + PGSQL + + + + PGSQL_TUPLES_CHUNK + + + + + + Sockets + + + The following socket options are now defined if they are supported: + + + + + + SO_EXCLUSIVEADDRUSE (Windows only) + + + + + SOCK_CONN_DGRAM (NetBSD only) + + + + + SOCK_DCCP (NetBSD only) + + + + + TCP_SYNCNT (Linux only) + + + + + SO_EXCLBIND (Solaris/Illumos only) + + + + + SO_NOSIGPIPE (macOS and FreeBSD) + + + + + SO_LINGER_SEC (macOS only) + + + + + IP_PORTRANGE (FreeBSD/NetBSD/OpenBSD only) + + + + + IP_PORTRANGE_DEFAULT (FreeBSD/NetBSD/OpenBSD only) + + + + + IP_PORTRANGE_HIGH (FreeBSD/NetBSD/OpenBSD only) + + + + + IP_PORTRANGE_LOW (FreeBSD/NetBSD/OpenBSD only) + + + + + SOCK_NONBLOCK + + + + + SOCK_CLOEXEC + + + + + SO_BINDTOIFINDEX + + + + + + + Sodium + + + + + SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS128L_NSECBYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS128L_ABYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS256_NSECBYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES + + + + + SODIUM_CRYPTO_AEAD_AEGIS256_ABYTES + + + + + + + XML + + + + + XML_OPTION_PARSE_HUGE + which allows parsing large inputs with + xml_parse and + xml_parse_into_struct. + + + + + + + From 840a6e8cd32f2c58ab2492611cf63adf86cfd5b2 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Oct 2024 17:37:19 +0100 Subject: [PATCH 02/35] Add Windows support section Covers section 12 of UPGRADING --- appendices/migration84/windows-support.xml | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 appendices/migration84/windows-support.xml diff --git a/appendices/migration84/windows-support.xml b/appendices/migration84/windows-support.xml new file mode 100644 index 000000000000..990259e74e8b --- /dev/null +++ b/appendices/migration84/windows-support.xml @@ -0,0 +1,40 @@ + + + Windows Support + + + Core + + + Building with Visual Studio now requires at least Visual Studio 2019. + However, Visual Studio 2022 is recommended. + + + + Native AVX-512 builds are now supported via the + + configure option. + + + + + From 7d6602169771f30451b2987b2192b245551f0616 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Oct 2024 19:34:19 +0100 Subject: [PATCH 03/35] Add other changes page This should cover sections 3, 5, 9, 13, and 14 of UPGRADING --- appendices/migration84/other-changes.xml | 798 +++++++++++++++++++++++ 1 file changed, 798 insertions(+) create mode 100644 appendices/migration84/other-changes.xml diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml new file mode 100644 index 000000000000..175d7a906b87 --- /dev/null +++ b/appendices/migration84/other-changes.xml @@ -0,0 +1,798 @@ + + + Other Changes + + + Core changes + + + Closures + + + Closure 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. + + + + + Fibers + + + Fiber 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 flags + parameter of ob_start are now cleared. + + + + + output_add_rewrite_var now uses + url_rewriter.hosts instead of + session.trans_sid_hosts + for selecting hosts that will be rewritten. + + + + + + Changes in SAPI Modules + + + apache2handler + + + Support for EOL Apache 2.0 and 2.2 has been removed. + Minimum required Apache version is now 2.4. + + + + + FPM + + + + The /dev/poll events.mechanism + setting for Solaris/Illumos had been retired. + + + + + + Changed Functions + + + Core + + + trigger_error and user_error + now have a return type of true instead of bool. + + + + + Curl + + + curl_multi_select now throws a + ValueError if the + timeout parameter is less than + 0 or greater than PHP_INT_MAX. + + + + + DOM + + + DOMDocument::registerNodeClass + now has a tentative return type of true instead of + bool. + I could only ever return &true; in practice. + + + + + Gd + + + + imagejpeg + imagewebp + imagepng + imageavif + + now throw an exception when an invalid quality + is passed. + + + + imageavif will now throw an exception + if an invalid speed parameter value is passed. + + + + imagescale will now throw an exception + if the width or width + parameters underflows/overflows. + + + + imagescale will now throw an exception + if an invalid mode parameter value is passed. + + + + imagefilter will now throw an exception + with the IMG_FILTER_SCATTER filter + if the sub or plus + parameters underflows/overflows. + + + + + Gettext + + + + + bind_textdomain_codeset + textdomain + d*gettext + + now throw an exception if domain + is the empty string. + + + + + Hash + + + hash_update + now has a tentative return type of true instead of + bool. + I could only ever return &true; in practice. + + + + + Intl + + + IntlDateFormatter::__construct throws a + ValueError if the + locale is invalid. + + + + NumberFormatter::__construct throws a + ValueError if the + locale is invalid. + + + + NumberFormatter::ROUND_TOWARD_ZERO and + NumberFormatter::ROUND_AWAY_FROM_ZERO + have been added as aliases for + NumberFormatter::ROUND_DOWN and + NumberFormatter::ROUND_UP + to be consistent with the new + PHP_ROUND_* modes. + + + + ResourceBundle::get + + now has a tentative return type of ResourceBundle|array|string|int|null. + + + + The idn_to_ascii and idn_to_utf8 + functions now always throw ValueErrors + if the domain name is empty or too long. + and if $variant is not + INTL_IDNA_VARIANT_UTS46. + + + + The idn_to_ascii and idn_to_utf8 + functions now always throw ValueError + if the variant parameter is not + INTL_IDNA_VARIANT_UTS46. + + + + + LibXML + + + libxml_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. + + + + + MBString + + + The 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 row of + odbc_fetch_object, + odbc_fetch_array, and + odbc_fetch_into now have a default value of &null;, + consistent with odbc_fetch_row. + Previously, the default values were + -1, + -1, + and 0, + respectively. + + + + + OpenSSL + + + The extra_attributes in + openssl_csr_new sets the CSR + attributes instead of subject DN, which incorrectly done previously. + + + + The dn in + openssl_csr_new allows setting an array + of values for a single entry. + + + + New serial_hex added to + openssl_csr_sign to allow setting serial numbers + in the hexadecimal format. + + + + Parsing ASN.1 UTCTime with openssl_x509_parse + fails if seconds are omitted for OpenSSL version below 3.2 + (-1 is returned for such fields). + OpenSSL version above 3.3 did not load such certificates already. + + + + + PDO + + + It is now possible to fetch the value of the + + ATTR_STRINGIFY_FETCHES attribute with + PDO::getAttribute. + + + + A new PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE + has been added to retrieve the memory usage of query results with + PDO::getAttribute for drivers that support it. + + + + + PDO_FIREBIRD + + + It is now possible to fetch the value of the + + FB_ATTR_DATE_FORMAT, + FB_ATTR_TIME_FORMAT, + FB_ATTR_TIMESTAMP_FORMAT, + attributes with + + PDO::getAttribute. + + + + Added new attributes to specify transaction isolation level and access mode. + Five constants relating to this functionality have been added: + + + Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL + Pdo\Firebird::READ_COMMITTED + Pdo\Firebird::REPEATABLE_READ + Pdo\Firebird::SERIALIZABLE + Pdo\Firebird::WRITABLE_TRANSACTION + + + + + When using persistent connections, there is now a liveliness check in the + constructor. + + + + The content that is built changes depending on the value of + FB_API_VER in + ibase.h. + A new static method Pdo\Firebird::getApiVersion + can be used to obtain this information. + This information is also now referenced in phpinfo. + + + + Five new data types are now available: + + INT128 + DEC16 + DEC34 + TIMESTAMP_TZ + TIME_TZ + + . + These are available starting with Firebird 4.0. + + + + + PDO_MYSQL + + + It is now possible to fetch the value of the + + ATTR_FETCH_TABLE_NAMES attribute with + + PDO::getAttribute. + + + + + PDO_PGSQL + + + Support retrieving the memory usage of queries for + PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE. + + + + If the column is of type FLOAT4OID or + FLOAT8OID the value will now be returned as a + float instead of a string. + + + + + PGSQL + + + The conditions parameter of + pg_select is now optional and accepts an empty array. + + + + + Phar + + + The + + Phar::setAlias + Phar::setDefaultStub + + methods now have a tentative return type of true + instead of bool. + + + + + POSIX + + + posix_isatty now sets the error number when the + file descriptor/stream argument is invalid. + + + + + Reflection + + + ReflectionGenerator::getFunction + may now be called after the generator finished executing. + + + + + Sockets + + + The backlog parameter of + socket_create_listen( now has a default value of + SOMAXCONN. + Previously, it was 128. + + + + + SPL + + + The + + SplPriorityQueue::insert + SplPriorityQueue::recoverFromCorruption + SplHeap::insert + SplHeap::recoverFromCorruption + + methods now have a tentative return type of true + instead of bool. + + + + + Standard + + + + PASSWORD_BCRYPT for password_hash + has been increased from 10 to '12. + + + + + debug_zval_dump now indicates whether an array is packed. + + + + long2ip now has a return type of string + + instead of string|false. + + + + + highlight_string now has a return type of + string|true instead of string|bool. + + + + + print_r now has a return type of + string|true instead of string|bool. + + + + + Rounding with <function>round</function> + + + The $mode parameter of the round() function has been widened to RoundingMode|int, + accepting instances of a new RoundingMode enum. + + + + + Four new modes have been added to the round() function: RoundingMode::PositiveInfinity, + RoundingMode::NegativeInfinity, RoundingMode::TowardsZero, RoundingMode::AwayFromZero. + + + + + 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 0.49999999999999994 to the nearest integer + would have resulted in 1.0 instead of the correct result 0.0. + Additional inputs might also be affected and result in different outputs + compared to earlier PHP versions. + + + + Fixed a bug caused by "pre-rounding" of the round() function. + Previously, using "pre-rounding" to treat a value like 0.285 + (actually 0.28499999999999998) as a decimal number and round it to 0.29. + However, "pre-rounding" incorrectly rounds certain numbers, + so this fix removes "pre-rounding" and changes the way numbers are compared, + so that the values are correctly rounded as decimal numbers. + + + + The maximum precision that can be handled by round() has been extended + by one digit. + For example, round(4503599627370495.5) returned in + 4503599627370495.5, + but now returns 4503599627370496. + + + + + + + + + Other Changes to Extensions + + + cURL + + + The minimum libcurl version required is now 7.61.0. + + + + The CURLOPT_DNS_USE_GLOBAL_CACHE option no longer + has any effect, and is silently ignored. + This underlying feature was deprecated in libcurl 7.11.1, + and removed in libcurl 7.62.0. + + + + + LibXML + + + The minimum libxml2 version required is now 2.9.4. + + + + + Intl + + + The behaviour of Intl class has been normalized to always throw + Error exceptions when attempting to use + a non-initialized object, or when cloning fails. + + + + + MBString + + + Unicode data tables have been updated to Unicode 16.0. + + + + + MySQLnd + + + Support for the new VECTOR data type from MySQL 9. + + + + + OpenSSL + + + The minimum OpenSSL version required is now 1.1.1. + + + + + PDO_PGSQL + + + The minimum libpq version required is now 10.0. + + + + + pgsql + + + The minimum libpq version required is now 10.0. + + + + + XSL + + + The typed properties XSLTProcessor::$cloneDocument + and XSLTProcessor::$doXInclude are now declared + + + + + Zlib + + + The minimum zlib version required is now 1.2.11. + + + + + + Performance + + + Core + + + Improved 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 %s and + %d specifiers will be compiled into the equivalent + string interpolation, avoiding the overhead of a function call and + repeatedly parsing the format string. + + + + + BCMath + + + Improved performance of number conversions and operations. + + + + + DOM + + + The 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. + + + + + FTP + + + Improved the performance of FTP uploads up to a factor of 10x for large + uploads. + + + + + Hash + + + Added SSE2 and SHA-NI implementations of SHA-256. + This improves the performance on supported CPUs by ~1.3x (SSE2), + and 3x - 5x (SHA-NI). + + + + + MBString + + + + The performance of strspn and + strcspn is greatly improved. + They now run in linear time instead of being bounded by quadratic time. + + + + mb_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. + + + + + MySQLnd + + + Improved the performance of MySQLnd quoting. + + + + + PCRE + + + Improved the performance of named capture groups. + + + + + Random + + + Improved the performance of \Random\Randomizer, + with a specific focus on the + \Random\Randomizer::getBytes, + and getBytesFromString() methods. + + + + + SimpleXML + + + Improved performance and reduce memory consumption of XML serialization. + + + + + Standard + + + Improved the performance of strpbrk. + + + + get_browser is much faster now, + up to 1.5x - 2.5x for some test cases. + + + + + + From 05d534784d01a74b2f532badc73b680231cb1ee1 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Oct 2024 19:38:55 +0100 Subject: [PATCH 04/35] Add removed extensions Cover section 8 of UPGRADING --- appendices/migration84.xml | 1 + appendices/migration84/removed-extensions.xml | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 appendices/migration84/removed-extensions.xml diff --git a/appendices/migration84.xml b/appendices/migration84.xml index 095610709178..131daa3a79f8 100644 --- a/appendices/migration84.xml +++ b/appendices/migration84.xml @@ -28,6 +28,7 @@ &appendices.migration84.constants; &appendices.migration84.incompatible; &appendices.migration84.deprecated; + &appendices.migration74.removed-extensions; &appendices.migration84.other-changes; &appendices.migration84.windows-support; diff --git a/appendices/migration84/removed-extensions.xml b/appendices/migration84/removed-extensions.xml new file mode 100644 index 000000000000..04d1e52f902d --- /dev/null +++ b/appendices/migration84/removed-extensions.xml @@ -0,0 +1,53 @@ + + + Removed Extensions + + + These extensions have been moved to PECL and are no longer part of the PHP + distribution. The PECL package versions of these extensions will be created + according to user demand. + + + + + + IMAP + + + + + OCI8 + + + + + PDO_OCI + + + + + PSpell + + + + + From c44b06cd3032e791c3645fb320bce3abf324057a Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Oct 2024 19:55:57 +0100 Subject: [PATCH 05/35] Add new classes Covers section 7 of UPGRADING --- appendices/migration84/new-classes.xml | 77 ++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 appendices/migration84/new-classes.xml diff --git a/appendices/migration84/new-classes.xml b/appendices/migration84/new-classes.xml new file mode 100644 index 000000000000..097302af6749 --- /dev/null +++ b/appendices/migration84/new-classes.xml @@ -0,0 +1,77 @@ + + + New Classes, Enums, and Interfaces + + + Core + + + + RequestParseBodyException + + + + + + + BCMath + + + + BcMath\Number + + + + + + + DOM + + + + Dom\HTMLDocument + + + + + Dom\XMLDocument + + + + + + + + Standard + + + + + + RoundingMode + + + + + + + From bc47affcc6396fc848bf75d6c199094a9a3ffda9 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 2 Oct 2024 19:59:50 +0100 Subject: [PATCH 06/35] Add Dba\Connection class which is only mentioned in BC Breaks --- appendices/migration84/new-classes.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/appendices/migration84/new-classes.xml b/appendices/migration84/new-classes.xml index 097302af6749..3018e043e986 100644 --- a/appendices/migration84/new-classes.xml +++ b/appendices/migration84/new-classes.xml @@ -24,6 +24,17 @@ + + DBA + + + + Dba\Connection + + + + + DOM From 8d57a7bb2456bbcccd6f392ad85bf152056cd925 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Thu, 3 Oct 2024 16:12:35 +0100 Subject: [PATCH 07/35] Fix entities --- appendices/migration84.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration84.xml b/appendices/migration84.xml index 131daa3a79f8..df3c0d8b8c66 100644 --- a/appendices/migration84.xml +++ b/appendices/migration84.xml @@ -19,7 +19,7 @@ 8.0.x, 8.1.x, 8.2.x, - 8.3.x. + 8.3.x. &appendices.migration84.new-features; @@ -28,7 +28,7 @@ &appendices.migration84.constants; &appendices.migration84.incompatible; &appendices.migration84.deprecated; - &appendices.migration74.removed-extensions; + &appendices.migration84.removed-extensions; &appendices.migration84.other-changes; &appendices.migration84.windows-support; From 21750a50c0fc14d7419f2df6b859a0c23f5995e9 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Thu, 3 Oct 2024 16:54:28 +0100 Subject: [PATCH 08/35] Add new functions page This covers section 6 of UPGRADING --- appendices/migration84/new-functions.xml | 273 +++++++++++++++++++++++ appendices/migration84/other-changes.xml | 15 ++ 2 files changed, 288 insertions(+) create mode 100644 appendices/migration84/new-functions.xml diff --git a/appendices/migration84/new-functions.xml b/appendices/migration84/new-functions.xml new file mode 100644 index 000000000000..e4b8d8f1beee --- /dev/null +++ b/appendices/migration84/new-functions.xml @@ -0,0 +1,273 @@ + + + New Functions + + + BCMath + + + + + bcceil + bcdivmod + bcfloor + bcround + + + + + DOM + + + DOMNode::compareDocumentPosition + + + + DOMXPath::registerPhpFunctionNS + + + DOMXPath::quote + + + + + + Intl + + + IntlDateFormatter::getIanaID + + intltz_get_iana_id + + IntlDateFormatter::parseToCalendar + + + SpoofChecker::setAllowedChars + + + grapheme_str_split + + + + + MBString + + + + mb_trim + mb_ltrim + mb_rtrim + + mb_ucfirst + mb_lcfirst + + + + + Opcache + + opcache_jit_blacklist + + + + + PCNTL + + + pcntl_getcpu + pcntl_getcpuaffinity + pcntl_getqos_class + pcntl_setns + pcntl_waitid + + + + + PDO_PGSQL + + + Pdo\Pgsql::setNoticeCallback + + + + + + PGSQL + + + pg_change_password + pg_jit + pg_put_copy_data + pg_put_copy_end + pg_set_chunked_rows_size + pg_socket_poll + + + + + Reflection + + + + + The following methods relate to the new lazy object feature: + + + ReflectionClass::newLazyGhost + + + ReflectionClass::newLazyProxy + + + ReflectionClass::resetAsLazyGhost + + + ReflectionClass::resetAsLazyProxy + + + ReflectionClass::isUninitializedLazyObject + + + ReflectionClass::initializeLazyObject + + + ReflectionClass::markLazyObjectAsInitialized + + + ReflectionClass::getLazyInitializer + + + ReflectionClass::skipLazyInitialization + + + ReflectionClass::setRawValueWithoutLazyInitialization + + + + + + + Sodium + + + sodium_crypto_aead_aegis128l_* + sodium_crypto_aead_aegis256l_* + + + + + SPL + + + + SplObjectStorage::seek + + + + + + SOAP + + + + SoapServer::__getLastResponse + + + + + + Standard + + + http_get_last_response_headers + http_clear_last_response_headers + + fpow + + array_all + array_any + array_find + array_find_key + + + + + + Tidy + + + + tidyNode::getNextSibling + + + tidyNode::getPreviousSibling + + + + + + XMLReader + + + + + XMLReader::fromStream + + + XMLReader::fromUri + + + XMLReader::fromString + + + + + + XMLWriter + + + + + XMLWriter::toStream + + + XMLWriter::toUri + + + XMLWriter::toMemory + + + + + + XSL + + + + + XSLTProcessor::registerPhpFunctionNS + + + + + + diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 175d7a906b87..4afb2d98e05a 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -444,6 +444,16 @@ + + Sodium + + + The sodium_crypto_aead_aes256gcm_* + functions are now available on aarch64 CPUs with the ARM cryptographic + extensions. + + + SPL @@ -458,6 +468,11 @@ methods now have a tentative return type of true instead of bool. + + + SplObjectStorage now implements + SeekableIterator. + From 71c6110b12b5a838cb313770121c023d2b8e8de7 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Thu, 3 Oct 2024 17:37:51 +0100 Subject: [PATCH 09/35] Complete from stuff found via UPGRADING move See: https://github.com/php/php-src/pull/16201 --- appendices/migration84/constants.xml | 13 +++ appendices/migration84/new-classes.xml | 119 +++++++++++++++++++++++ appendices/migration84/new-functions.xml | 49 ++++++++++ 3 files changed, 181 insertions(+) diff --git a/appendices/migration84/constants.xml b/appendices/migration84/constants.xml index c724dd7c45ea..27c783dd18b8 100644 --- a/appendices/migration84/constants.xml +++ b/appendices/migration84/constants.xml @@ -302,6 +302,19 @@ + + POSIX + + + + POSIX_SC_CHILD_MAX + + + POSIX_SC_CLK_TCK + + + + Sockets diff --git a/appendices/migration84/new-classes.xml b/appendices/migration84/new-classes.xml index 3018e043e986..641a19cdcb84 100644 --- a/appendices/migration84/new-classes.xml +++ b/appendices/migration84/new-classes.xml @@ -5,6 +5,11 @@ Core + + + Deprecated + + RequestParseBodyException @@ -52,6 +57,115 @@ + + ODBC + + + + Odbc\Connection + + + + + Odbc\Result + + + + + + + PDO_DBLIB + + + + Pdo\DbLib + + + + + + + PDO_FIREBIRD + + + + Pdo\Firebird + + + + + + + PDO_MYSQL + + + + Pdo\Mysql + + + + + + + PDO_ODBC + + + + Pdo\Odbc + + + + + + + PDO_PGSQL + + + + Pdo\Pgsql + + + + + + + PDO_SQLITE + + + + Pdo\Sqlite + + + + + + + Reflection + + + + ReflectionConstant + + + + + + + SOAP + + + + Soap\Url + + + + + Soap\Sdl + + + + + Standard @@ -61,6 +175,11 @@ RoundingMode + + + StreamBucket + + diff --git a/appendices/migration84/new-functions.xml b/appendices/migration84/new-functions.xml index e4b8d8f1beee..0984b4d78a49 100644 --- a/appendices/migration84/new-functions.xml +++ b/appendices/migration84/new-functions.xml @@ -15,6 +15,30 @@ + + Date + + + DateTime::createFromTimestamp + + + DateTime::getMicrosecond + + + DateTime::setMicrosecond + + + DateTimeImmutable::createFromTimestamp + + + DateTimeImmutable::getMicrosecond + + + DateTimeImmutable::setMicrosecond + + + + DOM @@ -28,6 +52,18 @@ DOMXPath::quote + + DOMNode::compareDocumentPosition + + + + + + Hash + + + HashContext::__debugInfo + @@ -99,6 +135,7 @@ pg_jit pg_put_copy_data pg_put_copy_end + pg_result_memory_size pg_set_chunked_rows_size pg_socket_poll @@ -144,6 +181,18 @@ + + + + ReflectionClassConstant::isDeprecated + + + ReflectionGenerator::isClosed + + + ReflectionProperty::isDynamic + + From a8bd656f9e3bc01633a3563e86ac0cc1199931f3 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sat, 5 Oct 2024 17:40:01 +0100 Subject: [PATCH 10/35] Add deprecation page This covers section 4 of UPGRADING --- appendices/migration84/deprecated.xml | 469 ++++++++++++++++++++++++++ 1 file changed, 469 insertions(+) create mode 100644 appendices/migration84/deprecated.xml diff --git a/appendices/migration84/deprecated.xml b/appendices/migration84/deprecated.xml new file mode 100644 index 000000000000..d6f771101ddc --- /dev/null +++ b/appendices/migration84/deprecated.xml @@ -0,0 +1,469 @@ + + + Deprecated Features + + + PHP Core + + + + Implicitly nullable parameter + + + A parameter's type is implicitly widened to accept null + if the default value for it is &null;. + + + + The following code: + + + + + + should be converted to: + + + + + + or + + + + + + + + + However, if such a parameter declaration is followed by a mandatory + parameter: + + + + + + It must be converted to: + + + + + + or + + + + + + as optional parameter before required ones are deprecated. + + + + + + Raising zero to the power of negative number + + + Raising a number to the power of a negative number is equivalent to taking + the reciprocal of the number raised to the positive opposite of the power. + Therefore raising 0 to the power of a negative number + corresponds to dividing by 0. + Thus, this behaviour has been deprecated. + + + + This affects the exponentiation operator ** + and the pow. + + + + If the IEEE 754 semantics are desired one should use the new + fpow function. + + + + + + Using underscore <literal>_</literal> as class name + + + Naming a class _ is now deprecated: + + + + + + + + + + Classes whose names start with an underscore are not + deprecated: + + + + + + + + + + + + + Using <function>trigger_error</function> with + <constant>E_USER_ERROR</constant> + + + + Calling trigger_error with + error_level being equal to + E_USER_ERROR is now deprecated. + + + + Such usages should be replaced by either throwing an exception, + or calling exit, whichever is more appropriate. + + + + + + cURL + + + The CURLOPT_BINARYTRANSFER constant is now deprecated. + + + + + Date + + + The DatePeriod::__construct(string $isostr, int $options = 0) + signature has been deprecated. + Use DatePeriod::createFromISO8601String> instead. + + + + + The SUNFUNCS_RET_TIMESTAMP, + SUNFUNCS_RET_STRING, + and SUNFUNCS_RET_DOUBLE constants are now deprecated. + This follows from the deprecation of the date_sunset and + date_sunrise functions in PHP 8.1.0. + + + + + DBA + + + + Passing &null; or &false; to dba_key_split is now + deprecated. + It would always return &false; in those cases. + + + + + DOM + + + + The DOM_PHP_ERR constant is now deprecated. + + + + + Hash + + + + Passing invalid options to hash functions is now deprecated. + + + + + Intl + + + Calling intlcal_set or + IntlCalendar::set + with more than two arguments is deprecated. + Use either IntlCalendar::setDate or + IntlCalendar::setDateTime instead. + + + + Calling intlgregcal_create_instance or + IntlGregorianCalendar::__construct + with more than two arguments is deprecated. + Use either IntlGregorianCalendar::createFromDate or + IntlGregorianCalendar::createFromDateTime instead. + + + + + LDAP + + + Calling ldap_connect + with more than two arguments is deprecated. + Use ldap_connect_wallet instead. + + + + Calling ldap_exop + with more than four arguments is deprecated. + Use ldap_exop_sync instead. + + + + + MySQLi + + + + The mysqli_ping function and + mysqli::ping method + are now deprecated as the reconnect feature was removed in PHP 8.2.0. + + + + + The mysqli_kill function and + mysqli::kill method + are now deprecated. + If this functionality is needed a SQL KILL command + can be used instead. + + + + + The mysqli_refresh function and + mysqli::refresh method + are now deprecated. + If this functionality is needed a SQL FLUSH command + can be used instead. + All All MYSQLI_REFRESH_* + constants have been deprecated as well. + + + + + Passing the mode parameter to + mysqli_store_result explicitly has been deprecated. + As the MYSQLI_STORE_RESULT_COPY_DATA constant was + only used in conjunction with this function it has also been deprecated. + + + + + PDO_PGSQL + + + Using escaped question marks (??) inside + dollar-quoted strings is deprecated. + Because PDO_PGSQL now has its own SQL parser with dollar-quoted strings + support, it is no longer necessary to escape question marks inside them. + + + + + PGSQL + + + The 2 arguments signature of pg_fetch_result, + pg_field_prtlen, and + pg_field_is_null is now deprecated. + Use the 3 arguments signature with row set to + &null; instead. + + + + + Random + + + + lcg_value is now deprecated, + as the function is broken in multiple ways. + Use \Random\Randomizer::getFloat instead. + + + + + Reflection + + + Calling ReflectionMethod::__construct + with one arguments is deprecated. + Use ReflectionMethod::createFromMethodName instead. + + + + + Session + + + Calling session_set_save_handler + with more than two arguments is deprecated. + Use the two arguments signature instead. + + + + + + Changing the value of the + session.sid_length and + session.sid_bits_per_character + INI settings is deprecated. + Update the session storage backend to accept 32 character hexadecimal + session IDs and stop changing these two INI settings instead. + + + + + + Changing the value of the + session.use_only_cookies, + session.use_trans_sid, + session.trans_sid_tags, + session.trans_sid_hosts, and + session.referer_check + INI settings is deprecated. + The SID constant is also deprecated. + + + + + SOAP + + + + Passing an int to + SoapServer::addFunction is now deprecated. + If all PHP functions need to be provided flatten the array returned by + get_defined_functions. + + + + + The SOAP_FUNCTIONS_ALL constant is now deprecated. + + + + + SPL + + + The SplFixedArray::__wakeup method is now + deprecated, as it implements + SplFixedArray::__serialize and + SplFixedArray::__unserialize + which need to be overwritten instead. + + + + + Using the default value for the escape parameter for the + SplFileObject::setCsvControl, + SplFileObject::fputcsv, and + SplFileObject::fgetcsv is now deprecated. + + It must be passed explicitly either positionally or via named arguments. + This does not apply to SplFileObject::fputcsv + and SplFileObject::fgetcsv if + SplFileObject::setCsvControl was used to set a + new default value. + + + + + Standard + + + Calling stream_context_set_option + with two arguments is deprecated. + Use stream_context_set_options instead. + + + + + Unserializing strings using the uppercase S tag + with unserialize is deprecated. + + + + + Using the default value for the escape parameter for the + fputcsv, + fgetcsv, and + str_getcsv is now deprecated. + + It must be passed explicitly either positionally or via named arguments. + + + + + XML + + + + The xml_set_object function has been deprecated. + + + + + Passing non-callable strings to the + xml_set_* + functions is now deprecated. + + + + + From 0441d4b43a7db23cc6c964b731edae297b7e403c Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sat, 5 Oct 2024 17:46:58 +0100 Subject: [PATCH 11/35] Use simplelist --- appendices/migration84/constants.xml | 616 +++++++----------- appendices/migration84/new-classes.xml | 172 ++--- appendices/migration84/removed-extensions.xml | 32 +- 3 files changed, 293 insertions(+), 527 deletions(-) diff --git a/appendices/migration84/constants.xml b/appendices/migration84/constants.xml index 27c783dd18b8..151017d084e3 100644 --- a/appendices/migration84/constants.xml +++ b/appendices/migration84/constants.xml @@ -5,457 +5,315 @@ Core - - - - PHP_OUTPUT_HANDLER_PROCESSED - - - - - PHP_SBINDIR - - - + + + PHP_OUTPUT_HANDLER_PROCESSED + + + PHP_SBINDIR + + cURL - - - - CURL_HTTP_VERSION_3 - - - - - CURL_HTTP_VERSION_3ONLY - - - - - CURL_TCP_KEEPCNT - - - - - CURLOPT_PREREQFUNCTION - - - - - CURL_PREREQFUNC_OK - - - - - CURL_PREREQFUNC_ABORT - - - - - CURLOPT_SERVER_RESPONSE_TIMEOUT - - - - - CURLOPT_DEBUGFUNCTION - - - - - CURLINFO_TEXT - - - - - CURLINFO_HEADER_IN - - - - - CURLINFO_DATA_IN - - - - - CURLINFO_DATA_OUT - - - - - CURLINFO_SSL_DATA_OUT - - - - - CURLINFO_SSL_DATA_IN - - - - - CURLINFO_POSTTRANSFER_TIME_T - - - + + + CURL_HTTP_VERSION_3 + + + CURL_HTTP_VERSION_3ONLY + + + CURL_TCP_KEEPCNT + + + CURLOPT_PREREQFUNCTION + + + CURL_PREREQFUNC_OK + + + CURL_PREREQFUNC_ABORT + + + CURLOPT_SERVER_RESPONSE_TIMEOUT + + + CURLOPT_DEBUGFUNCTION + + + CURLINFO_TEXT + + + CURLINFO_HEADER_IN + + + CURLINFO_DATA_IN + + + CURLINFO_DATA_OUT + + + CURLINFO_SSL_DATA_OUT + + + CURLINFO_SSL_DATA_IN + + + CURLINFO_POSTTRANSFER_TIME_T + + Intl - - - - PATTERN + + + PATTERN (IntlDateFormatter) - - - - - PROPERTY_IDS_UNARY_OPERATOR + + + PROPERTY_IDS_UNARY_OPERATOR (IntlChar) - - - - - PROPERTY_ID_COMPAT_MATH_START + + + PROPERTY_ID_COMPAT_MATH_START - - - - - PROPERTY_ID_COMPAT_MATH_CONTINUE + + + PROPERTY_ID_COMPAT_MATH_CONTINUE - - - + + LDAP - - - - LDAP_OPT_X_TLS_PROTOCOL_MAX - - - - - LDAP_OPT_X_TLS_PROTOCOL_TLS1_3 - - - + + + LDAP_OPT_X_TLS_PROTOCOL_MAX + + + LDAP_OPT_X_TLS_PROTOCOL_TLS1_3 + + libxml - - - - LIBXML_RECOVER - - - - - LIBXML_NO_XXE. - This is used together with LIBXML_NOENT + + + LIBXML_RECOVER + + + LIBXML_NO_XXE. + This is used together with LIBXML_NOENT when entity substitution should be performed, while disallowing external entity loading. This constant is available as of libxml2 2.13. - - - + + MySQLi - - - - MYSQLI_TYPE_VECTOR - - - + + + MYSQLI_TYPE_VECTOR + + OpenSSL - - - X509_PURPOSE_OCSP_HELPER - - - X509_PURPOSE_TIMESTAMP_SIGN - - + + X509_PURPOSE_OCSP_HELPER + X509_PURPOSE_TIMESTAMP_SIGN + PCNTL - - - - Pcntl\QosClass::Background (macOS only) - - - - - Pcntl\QosClass::Default (macOS only) - - - - - Pctnl\QosClass::UserInteractive (macOS only) - - - - - Pcntl\QosClass::UserInitiated (macOS only) - - - - - Pcntl\QosClass::Utility (macOS only) - - - - - SIGCKPT (DragonFlyBSD only) - - - - - SIGCKPTEXIT (DragonFlyBSD only) - - - - - WEXITED - - - - - WSTOPPED - - - - - WNOWAIT - - - - - P_ALL - - - - - P_PID - - - - - P_PGID - - - - - P_PIDFD (Linux only) - - - - - P_UID (NetBSD/FreeBSD only) - - - - - P_GID (NetBSD/FreeBSD only) - - - - - P_SID (NetBSD/FreeBSD only) - - - - - P_JAILID (FreeBSD only) - - - + + + + Pcntl\QosClass::Background (macOS only) + + + Pcntl\QosClass::Default (macOS only) + + + Pctnl\QosClass::UserInteractive (macOS only) + + + Pcntl\QosClass::UserInitiated (macOS only) + + + Pcntl\QosClass::Utility (macOS only) + + + + SIGCKPT (DragonFlyBSD only) + + + SIGCKPTEXIT (DragonFlyBSD only) + + + WEXITED + + + WSTOPPED + + + WNOWAIT + + + P_ALL + + + P_PID + + + P_PGID + + + P_PIDFD (Linux only) + + + P_UID (NetBSD/FreeBSD only) + + + P_GID (NetBSD/FreeBSD only) + + + P_SID (NetBSD/FreeBSD only) + + + P_JAILID (FreeBSD only) + + PGSQL - - - PGSQL_TUPLES_CHUNK - - + + PGSQL_TUPLES_CHUNK + POSIX - - - POSIX_SC_CHILD_MAX - - - POSIX_SC_CLK_TCK - - + + POSIX_SC_CHILD_MAX + POSIX_SC_CLK_TCK + Sockets - + The following socket options are now defined if they are supported: - + - - - - SO_EXCLUSIVEADDRUSE (Windows only) - - - - - SOCK_CONN_DGRAM (NetBSD only) - - - - - SOCK_DCCP (NetBSD only) - - - - - TCP_SYNCNT (Linux only) - - - - - SO_EXCLBIND (Solaris/Illumos only) - - - - - SO_NOSIGPIPE (macOS and FreeBSD) - - - - - SO_LINGER_SEC (macOS only) - - - - - IP_PORTRANGE (FreeBSD/NetBSD/OpenBSD only) - - - - - IP_PORTRANGE_DEFAULT (FreeBSD/NetBSD/OpenBSD only) - - - - - IP_PORTRANGE_HIGH (FreeBSD/NetBSD/OpenBSD only) - - - - - IP_PORTRANGE_LOW (FreeBSD/NetBSD/OpenBSD only) - - - - - SOCK_NONBLOCK - - - - - SOCK_CLOEXEC - - - - - SO_BINDTOIFINDEX - - - + + + SO_EXCLUSIVEADDRUSE (Windows only) + + + SOCK_CONN_DGRAM (NetBSD only) + + + SOCK_DCCP (NetBSD only) + + + TCP_SYNCNT (Linux only) + + + SO_EXCLBIND (Solaris/Illumos only) + + + SO_NOSIGPIPE (macOS and FreeBSD) + + + SO_LINGER_SEC (macOS only) + + + IP_PORTRANGE (FreeBSD/NetBSD/OpenBSD only) + + + IP_PORTRANGE_DEFAULT (FreeBSD/NetBSD/OpenBSD only) + + + IP_PORTRANGE_HIGH (FreeBSD/NetBSD/OpenBSD only) + + + IP_PORTRANGE_LOW (FreeBSD/NetBSD/OpenBSD only) + + + SOCK_NONBLOCK + + + SOCK_CLOEXEC + + + SO_BINDTOIFINDEX + + Sodium - - - - SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS128L_NSECBYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS128L_ABYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS256_NSECBYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES - - - - - SODIUM_CRYPTO_AEAD_AEGIS256_ABYTES - - - + + + SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES + + + SODIUM_CRYPTO_AEAD_AEGIS128L_NSECBYTES + + + SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES + + + SODIUM_CRYPTO_AEAD_AEGIS128L_ABYTES + + + SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES + + + SODIUM_CRYPTO_AEAD_AEGIS256_NSECBYTES + + + SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES + + + SODIUM_CRYPTO_AEAD_AEGIS256_ABYTES + + XML - - - - XML_OPTION_PARSE_HUGE + + + XML_OPTION_PARSE_HUGE which allows parsing large inputs with xml_parse and xml_parse_into_struct. - - - + + diff --git a/appendices/migration84/new-classes.xml b/appendices/migration84/new-classes.xml index 641a19cdcb84..5a17e2feecf0 100644 --- a/appendices/migration84/new-classes.xml +++ b/appendices/migration84/new-classes.xml @@ -4,184 +4,108 @@ Core - - - - Deprecated - - - - - RequestParseBodyException - - - + + Deprecated + RequestParseBodyException + BCMath - - - - BcMath\Number - - - + + BcMath\Number + DBA - - - - Dba\Connection - - - + + Dba\Connection + DOM - - - - Dom\HTMLDocument - - - - - Dom\XMLDocument - - + + Dom\HTMLDocument + Dom\XMLDocument - + ODBC - - - - Odbc\Connection - - - - - Odbc\Result - - - + + Odbc\Connection + Odbc\Result + PDO_DBLIB - - - - Pdo\DbLib - - - + + Pdo\DbLib + PDO_FIREBIRD - - - - Pdo\Firebird - - - + + Pdo\Firebird + PDO_MYSQL - - - - Pdo\Mysql - - - + + Pdo\Mysql + PDO_ODBC - - - - Pdo\Odbc - - - + + Pdo\Odbc + PDO_PGSQL - - - - Pdo\Pgsql - - - + + Pdo\Pgsql + PDO_SQLITE - - - - Pdo\Sqlite - - - + + Pdo\Sqlite + Reflection - - - - ReflectionConstant - - - + + ReflectionConstant + SOAP - - - - Soap\Url - - - - - Soap\Sdl - - - + + Soap\Url + Soap\Sdl + Standard - - - - - RoundingMode - - - - StreamBucket - - - - + + + RoundingMode + StreamBucket + diff --git a/appendices/migration84/removed-extensions.xml b/appendices/migration84/removed-extensions.xml index 04d1e52f902d..7323d40d1820 100644 --- a/appendices/migration84/removed-extensions.xml +++ b/appendices/migration84/removed-extensions.xml @@ -2,34 +2,18 @@ Removed Extensions - + These extensions have been moved to PECL and are no longer part of the PHP distribution. The PECL package versions of these extensions will be created according to user demand. - + - - - - IMAP - - - - - OCI8 - - - - - PDO_OCI - - - - - PSpell - - - + + IMAP + OCI8 + PDO_OCI + PSpell + + + The <constant>E_STRICT</constant> constant + + + + Because the E_STRICT error level was removed, + this constant is now deprecated. + + @@ -197,6 +209,18 @@ class _MyClass {} The DOM_PHP_ERR constant is now deprecated. + + + + The following properties have been formally deprecated: + + DOMDocument::$actualEncoding + DOMDocument::$config + DOMEntity::$actualEncoding + DOMEntity::$encoding + DOMEntity::$version + + diff --git a/appendices/migration84/new-functions.xml b/appendices/migration84/new-functions.xml index 0984b4d78a49..65d32eec8e67 100644 --- a/appendices/migration84/new-functions.xml +++ b/appendices/migration84/new-functions.xml @@ -2,6 +2,15 @@ New Functions + + Core + + + + request_parse_body + + + BCMath diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 4afb2d98e05a..cb44571937c9 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -70,6 +70,19 @@ + + CLI + + + The 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 @@ -448,7 +461,7 @@ Sodium - The sodium_crypto_aead_aes256gcm_* + The sodium_crypto_aead_aes256gcm_* functions are now available on aarch64 CPUs with the ARM cryptographic extensions. @@ -573,6 +586,18 @@ + + GMP + + + + Casting a GMP object to bool is now + possible instead of emitting a E_RECOVERABLE_ERROR. + The casting behaviour is overloaded such that a GMP + object representing the value 0 is cast to &false;. + + + LibXML @@ -624,13 +649,26 @@ - pgsql + PGSQL The minimum libpq version required is now 10.0. + + SPL + + + Out 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. + + + XSL From f39024b0df4e7921370f6df1ed0d82d10abd227f Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sun, 13 Oct 2024 23:16:02 +0100 Subject: [PATCH 14/35] Add incompatibilities page This covers section 1 of UPGRADING --- appendices/migration84/incompatible.xml | 720 ++++++++++++++++++++++++ 1 file changed, 720 insertions(+) create mode 100644 appendices/migration84/incompatible.xml diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml new file mode 100644 index 000000000000..b66674ea47c0 --- /dev/null +++ b/appendices/migration84/incompatible.xml @@ -0,0 +1,720 @@ + + + Backward Incompatible Changes + + + Although not explicitly stated in this section, + every new function, + class, interface, enum, + or constant + may cause a redeclaration Error to be thrown. + + + + PHP Core + + + + <function>exit</function> behavioural change + + + The exit (and die) language + constructs now behave more like a function. + This means that they can now be passed like callables, + + are affected by the strict_types declare statement, + and now perform the usual type coercions instead of casting any non-integer + value to a string. + + + + As such, passing invalid types to exit and + die now consistently result in a + TypeError being thrown. + + + + + Recursion during comparison + + + Encountering recursion during comparison now results in an + Error exception instead of a + E_ERROR fatal error. + + + + + Indirect Modification of readonly Properties + + + + Indirect modification of readonly properties within __clone() + is no longer allowed, e.g. $ref = &$this->readonly. + This was already forbidden for readonly initialization, and was an + oversight in the "readonly reinitialization during cloning" implementation. + + + + + Type Change of Constants + + + The PHP_DEBUG and PHP_ZTS + constants are now of type bool. + Previously they were of type int. + + + + + Temporary Filename Length + + + The name of uploaded files and files created by the + tempnam function are now 13 bytes longer. + Total length is platform-dependent. + + + + + + Removal of <constant>E_STRICT</constant> error level + + + The E_STRICT error level has been removed, + as it was no longer in use within the PHP engine. + The E_STRICT has also been deprecated. + + + + + + Extension Class Constants which are now Typed + + + The following extension class constants now declare a type on their + constants: + + Date + Intl + PDO + Reflection + SPL + Sqlite + XMLReader + + + + + + + Resource to Object Migration + + + Several &resource;s have been migrated to &object;s. + Return value checks using is_resource should be + replaced with checks for &false;, unless specified otherwise. + + + + DBA + + + The DBA functions now accept and return + Dba\Connection objects instead of + dba_connection &resource;s. + + + + + ODBC + + + The ODBC functions now accept and return + Odbc\Result objects instead of + odbc_result &resource;s. + + + + The ODBC functions now accept and return + Odbc\Connection objects instead of + odbc_connection &resource;s. + + + + + SOAP + + + The SoapClient::$httpurl property is now a + Soap\Url object rather than a + soap_url &resource;. + Checks using is_resource (i.e. + is_resource($client->httpurl)) should be replaced with checks + for &null; (i.e. $client->httpurl !== null). + + + The SoapClient::$sdl property is now a + Soap\Sdl object rather than a + soap_sdl &resource;. + Checks using is_resource (i.e. + is_resource($client->sdl)) should be replaced with checks + for &null; (i.e. $client->sdl !== null). + + + + + + New warnings and exceptions + + + New warnings and exceptions have been added which are triggered on + programming errors, i.e. invalid values provided as arguments. + + + + Intl + + + resourcebundle_get, + ResourceBundle::get, and accessing offsets on + a ResourceBundle object now throw: + + + TypeError for invalid offset types + + + ValueError for an empty &string; + + + ValueError if the integer index does + not fit in a signed 32 bit integer + + + + + + + MBString + + + mb_encode_numericentity and + mb_decode_numericentity now check that the + map is only composed of &integer;s, + if not a ValueError is now thrown. + + + + mb_http_input now always throw a + ValueError if type + is invalid. + + + + mb_http_output now check that the + encoding does not contain any null bytes, + if it does a ValueError is now thrown. + + + + + ODBC + + + odbc_fetch_row returns &false; when + row is less than or equal to 0. + A warning is now emitted in this case. + + + + + PCNTL + + + The pcntl_sigprocmask, + pcntl_sigwaitinfo, and + pcntl_sigtimedwait functions now throw: + + + A ValueError if the + signals array is empty + (except for pcntl_sigprocmask if the + mode SIG_SETMASK) + + + A TypeError if a value of the + signals array is not an &integer; + + + A ValueError if a value of the + signals array is not a valid signal number + + + + + + The pcntl_sigprocmask function now throws a + ValueError if the + mode is not one of SIG_BLOCK, + SIG_UNBLOCK, or SIG_SETMASK. + + + + The pcntl_sigtimedwait function now throw: + + + A ValueError if + seconds is less than 0 + + + A ValueError if + nanoseconds is less than 0 + or greater than 1e9 + + + A ValueError if both + seconds and nanoseconds + are 0 + + + + + + + SimpleXML + + + Calling simplexml_import_dom with a non-XML object + now throws a TypeError instead of a + ValueError. + + + + + Standard + + + The round function now validates the value of the + mode and throw a + ValueError for invalid modes. + Previously, invalid modes would have been interpreted as + PHP_ROUND_HALF_UP. + + + + The str_getcsv now throws + ValueErrors when the + separator and enclosure + arguments are not one byte long, or if the escape + argument is not one byte long nor the empty string. + This aligns the behaviour to be identical to the one of + fputcsv and fgetcsv. + + + + + The php_uname function now throws a + ValueError if the + mode is invalid. + + + + + The "allowed_classes" option for + unserialize now throws + TypeErrors and + ValueErrors if it is not an + array of class names. + + + + + XMLReader + + + Passing an invalid character encoding to + XMLReader::open or + XMLReader::XML now throws a + ValueError. + + + + Passing a &string; containing NULL bytes previously emitted a + warning and now throws a ValueError. + + + + + XMLWriter + + + Passing a &string; containing NULL bytes previously emitted a + warning and now throws a ValueError. + + + + + XSL + + + XSLTProcessor::setParameter will now throw a + ValueError when its arguments contain null + bytes. This never actually worked correctly in the first place, + which is why it throws an exception nowadays. + + + + Calling XSLTProcessor::importStyleSheet with a + non-XML object now throws a TypeError + instead of a ValueError. + + + + + Failure to call a PHP function callback during evaluation now throws + instead of emitting a warning. + + + + + + DOM + + + Some DOM methods previously returned &false; or a + PHP_ERR DOMException + if a new node could not be allocated. + They now consistently throw an INVALID_STATE_ERR + DOMException. + This situation is extremely unlikely and the probability of being affected + is low. + As a result DOMImplementation::createDocument + now has a tentative return type of DOMDocument + + instead of DOMDocument|false. + + + + Previously, DOMXPath objects could be cloned, + but resulted in an unusable object. + This is no longer possible, and cloning a DOMXPath + object now throws an Error. + + + + + The DOMImplementation::getFeature has been removed. + + + + + GMP + + + + The GMP class is now final and cannot be extended + anymore. + + + + + MBString + + + On invalid strings (those with encoding errors), + mb_substr now interprets character indices in the same + manner as most other mbstring functions. + This means that character indices returned by mb_strpos + can be passed to mb_substr. + + + + For SJIS-Mac (MacJapanese) strings, character indices passed to + mb_substr now refer to the indices of the Unicode + codepoints which are produced when the string is converted to Unicode. + This is significant because around 40 SJIS-Mac characters convert to a + sequence of multiple Unicode codepoints. + + + + + MySQLi + + + The unused and undocumented constant + MYSQLI_SET_CHARSET_DIR has been removed. + + + + The MYSQLI_STMT_ATTR_PREFETCH_ROWS constant has been + removed. The feature is unavailable with mysqlnd. + + + + The MYSQLI_CURSOR_TYPE_FOR_UPDATE and + MYSQLI_CURSOR_TYPE_SCROLLABLE constants have been + removed. This functionality was never implemented, + neither with mysqlnd nor with libmysql. + + + + The unused MYSQLI_TYPE_INTERVAL constant, which is + currently a stub and an alias for MYSQLI_TYPE_ENUM, + has been removed. + + + + + + MySQLnd + + + The error code reported for MySQL server wait timeouts has been changed from + 2006 to 4031 for MySQL server + versions 8.0.24 and above. + + + + + Opcache + + + The maximum value of the + opcache.interned_strings_buffer + setting on 64bit architectures is now 32767. + Previously it was 4095. + + + + JIT + + + The default configuration values for the JIT changed from + opcache.jit=tracing + and opcache.jit_buffer_size=0 + to opcache.jit=disable + and opcache.jit_buffer_size=64M, respectively. + + + + This does not affect the default observable behavior, + as the JIT is still disabled by default. + However, it is now disabled through the + opcache.jit setting, + rather than + opcache.jit_buffer_size. + This may affect users who previously enabled JIT through + opcache.jit_buffer_size + exclusively, without also specifying a JIT mode using + opcache.jit. + To enable JIT compilation, set the + opcache.jit config value accordingly. + + + + If JIT compilation is enabled, PHP will now exit with a fatal error on + startup if the initialization of the JIT compiler failed for any reason. + + + + + + PCNTL + + + The pcntl_sigprocmask, + pcntl_sigwaitinfo, and + pcntl_sigtimedwait functions now always + return &false; on failure. + In some case previously it could return the value -1. + + + + + PCRE + + + The bundled pcre2lib has been updated to version 10.44. + As a consequence, this means {,3} is now recognized + as a quantifier instead of as text. + Furthermore, the meaning of some character classes in UCP mode has changed. + Consult the PCRE2 Changelog + for a full changelog. + + + + + PDO_DBLIB + + + The DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER and + DBLIB_ATTR_DATETIME_CONVERT attributes now act as + boolean attributes instead of integer attributes. + Thus setting the attribute via PDO::setAttribute + and retrieving it via PDO::getAttribute expects + and or return a bool. + + + + + PDO_FIREBIRD + + + The ATTR_AUTOCOMMIT attribute now act as + boolean attributes instead of integer attributes. + Thus setting the attribute via PDO::setAttribute + and retrieving it via PDO::getAttribute expects + and or return a bool. + + + + The extension now exposes some Firebird C++ APIs, + therefore building this extension now requires a C++ compiler. + Moreover, the extension must now be compiled against fbclient 3.0 or higher. + + + + + PDO_MYSQL + + + The ATTR_AUTOCOMMIT, + ATTR_EMULATE_PREPARES, and + MYSQL_ATTR_DIRECT_QUERY attributes now act as + boolean attributes instead of integer attributes. + Thus setting the attribute via PDO::setAttribute + and retrieving it via PDO::getAttribute expects + and or return a bool. + + + + + PDO_PGSQL + + + The DSN's credentials, when set, are given priority over their PDO + constructor counterparts, being closer to the documentation states. + + + + + SimpleXML + + + + Get methods called, or casting to a string on a + SimpleXMLElement will no longer implicitly reset + the iterator data, unless explicitly rewound. + For example, casting an element to a &string; within a &foreach; loop would + cause an infinite loop because it destroyed the current iterator data. + + + + + + SOAP + + + SoapClient::$typemap is now an array + rather than a resource. + Checks using is_resource (i.e. + is_resource($client->typemap)) should be + replaced with checks for &null; (i.e. $client->typemap !== null). + + + + The SOAP extension gained an optional dependency on the + session extension. + If PHP is built without the session extension and with the + configure flag enabled, + startup errors will now occur if the SOAP + extension is also used. + To solve thiseither don't use rtld-now or load the session extension. + + + + + Standard + + + When using strcspn with + characters being the empty string, + the length of the string is now returned instead of incorectly stopping + at the first null byte. + + + + + http_build_query now correctly handles backed enums. + + + + + stream_bucket_make_writeable and + stream_bucket_new will now return a + StreamBucket instance instead of an instance of + stdClass. + + + + + Tidy + + + Failures in the constructor now throw exceptions rather than emitting + warnings and having a broken object. + + + + + XML + + + The xml_set_*_handler + functions now declare and check for an effective + + signature of callable|string|null for the + handler parameters. + Moreover, values of type string that correspond to method names, + of object set with xml_set_object are now checked to + see if the method exists on the class of the previously passed object. + This means that xml_set_object must now always be + called prior to setting method names as callables. + Passing an empty string to disable the handler is still allowed, + but deprecated. + + + + However, as xml_set_object and passing + non-callable strings is deprecated. + It is recommended to change such instances with a callable + referring to the method directly. + + + + + From 3e3c27fefe6fc7878293767cd611e1b2953d8944 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 14 Oct 2024 14:28:45 +0100 Subject: [PATCH 15/35] Some fixes --- appendices/migration84/constants.xml | 6 +++--- appendices/migration84/deprecated.xml | 16 +++++++--------- appendices/migration84/other-changes.xml | 6 +++--- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/appendices/migration84/constants.xml b/appendices/migration84/constants.xml index 151017d084e3..46a23a0eb961 100644 --- a/appendices/migration84/constants.xml +++ b/appendices/migration84/constants.xml @@ -206,7 +206,7 @@ PGSQL - PGSQL_TUPLES_CHUNK + PGSQL_TUPLES_CHUNK @@ -214,8 +214,8 @@ POSIX - POSIX_SC_CHILD_MAX - POSIX_SC_CLK_TCK + POSIX_SC_CHILD_MAX + POSIX_SC_CLK_TCK diff --git a/appendices/migration84/deprecated.xml b/appendices/migration84/deprecated.xml index e0104289c483..cdfc3c7835a3 100644 --- a/appendices/migration84/deprecated.xml +++ b/appendices/migration84/deprecated.xml @@ -361,25 +361,23 @@ class _MyClass {} - Changing the value of the - session.sid_length and - session.sid_bits_per_character + session.sid_length and + session.sid_bits_per_character INI settings is deprecated. Update the session storage backend to accept 32 character hexadecimal session IDs and stop changing these two INI settings instead. - Changing the value of the - session.use_only_cookies, - session.use_trans_sid, - session.trans_sid_tags, - session.trans_sid_hosts, and - session.referer_check + session.use_only_cookies, + session.use_trans_sid, + session.trans_sid_tags, + session.trans_sid_hosts, and + session.referer_check INI settings is deprecated. The SID constant is also deprecated. diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index cb44571937c9..5c3692ae7fe5 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -49,10 +49,10 @@ - output_add_rewrite_var now uses - url_rewriter.hosts instead of - session.trans_sid_hosts + url_rewriter.hosts + instead of + session.trans_sid_hosts for selecting hosts that will be rewritten. From 163ff2a524fe7f54c56c9561e943affb0f22af7b Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 14 Oct 2024 18:59:22 +0100 Subject: [PATCH 16/35] Add new feature page This covers Section 2 of UPGRADING --- appendices/migration84/new-features.xml | 529 ++++++++++++++++++++++++ 1 file changed, 529 insertions(+) create mode 100644 appendices/migration84/new-features.xml diff --git a/appendices/migration84/new-features.xml b/appendices/migration84/new-features.xml new file mode 100644 index 000000000000..f60949852b42 --- /dev/null +++ b/appendices/migration84/new-features.xml @@ -0,0 +1,529 @@ + + + New Features + + + + PHP Core + + + + Property Hooks + + + TODO + + + + + + + + + + + + Asymmetric Property Visibility + + + TODO + + + + + + Lazy Objects + + + TODO + + + + + + <code>#[\Deprecated]</code> attribute + + + TODO + + + + + + Parsing RFC1867 (multipart) requests in non-POST HTTP requests + + + + Added request_parse_body function that allows parsing + RFC1867 (multipart) requests in non-POST HTTP requests. + + + + + + Parsing RFC1867 (multipart) requests in non-POST HTTP requests + + + + New expressions with constructor arguments are now dereferencable, meaning + they allow chaining method calls, property accesses, etc. without enclosing + the expression in parentheses. + + + + + Improved Debugging Info for <classname>WeakReference</classname> + + + + Getting the debug info for WeakReference will now + also output the object it references, or &null; if the reference is no + longer valid. + + + + + Improved Debugging Info for <classname>Closure</classname> + + + + The output of Closure::__debugInfo now includes + the name, file, and line of the Closure. + + + + + + Defining Identical Symbols in Different Namespace Blocks + + + + Exiting a namespace now clears seen symbols. + This allows using a symbol in a namespace block, even if a previous + namespace block declared a symbol with the same name. + + + + + + + + cURL + + + curl_version returns an additional + feature_list value, which is an associative array + of all known cURL features, and whether they are supported (&true;) + or not (&false;). + + + + Added CURL_HTTP_VERSION_3 and + CURL_HTTP_VERSION_3ONLY constants (available + since libcurl 7.66 and 7.88) as available options for + CURLOPT_HTTP_VERSION. + + + + Added CURLOPT_PREREQFUNCTION as a cURL option that + accepts a callable to be called after the connection is made, + but before the request is sent. + This callable must return either CURL_PREREQFUNC_OK or + CURL_PREREQFUNC_ABORT to allow or abort the request. + + + + Added CURLOPT_SERVER_RESPONSE_TIMEOUT, + which was formerly known as CURLOPT_FTP_RESPONSE_TIMEOUT. + Both constants hold the same value. + + + + Added CURLOPT_DEBUGFUNCTION as a cURL option that + accepts a callable that gets called during the request lifetime + with the CurlHandle object, + an integer containing the debug message type, and a string containing the + debug message. + The debug message type is one of the following constants: + + CURLINFO_TEXT + CURLINFO_HEADER_IN + CURLINFO_HEADER_OUT + CURLINFO_DATA_IN + CURLINFO_DATA_OUT + CURLINFO_SSL_DATA_IN + CURLINFO_SSL_DATA_OUT + + Once this option is set, CURLINFO_HEADER_OUT + must not be set because it uses the same libcurl functionality. + + + + The curl_getinfo now returns an additional + posttransfer_time_us key, containing the number of + microseconds from the start until the last byte is sent. + When a redirect is followed, the time from each request is added together. + This value can also be retrieved by passing + CURLINFO_POSTTRANSFER_TIME_T to the + curl_getinfo option parameter. + This requires libcurl 8.10.0 or later. + + + + + DOM + + + Added the DOMNode::compareDocumentPosition + with its associated constants: + + DOMNode::DOCUMENT_POSITION_DISCONNECTED + DOMNode::DOCUMENT_POSITION_PRECEDING + DOMNode::DOCUMENT_POSITION_FOLLOWING + DOMNode::DOCUMENT_POSITION_CONTAINS + DOMNode::DOCUMENT_POSITION_CONTAINED_BY + DOMNode::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC + + + + + + It is now possible to pass any callable to + DOMXPath::registerPhpFunctions. + + + + + + + FPM + + + Flushing headers without a body will now succeed. + + + + + Status page has a new field to display a memory peak. + + + + + Intl + + + Added the NumberFormatter::ROUND_HALFODD to + complement the existing NumberFormatter::ROUND_HALFEVEN + functionality. + + + + + OpenSSL + + + Added support for Curve25519 + Curve448 based keys. + Specifically x25519, ed25519, x448 and ed448 fields are supported in + openssl_pkey_new, + openssl_pkey_get_details, + openssl_sign, and + openssl_verify were extended to support those keys. + + + + Implement PASSWORD_ARGON2 password hashing. + Requires OpenSSL 3.2 and NTS build. + + + + + PCRE + + + The bundled pcre2lib has been updated to version 10.44. + As a consequence, LoongArch JIT support has been added, spaces + are now allowed between braces in Perl-compatible items, and + variable-length lookbehind assertions are now supported. + + + + With pcre2lib version 10.44, the maximum length of named capture groups + has changed from 32 to 128. + + + + Added support for the r (PCRE2_EXTRA_CASELESS_RESTRICT) + modifier, as well as the (?r) mode modifier. + When enabled along with the case-insensitive modifier (i), + the expression locks out mixing of ASCII and non-ASCII characters. + + + + + PDO + + + + Added support for driver-specific subclasses. + This RFC adds subclasses for PDO in order to better support + database-specific functionalities. + The new classes are instantiatable either via calling the + PDO::connect method or by instantiating an instance + of the driver-specific subclass directly. + + + + + Added support for driver specific SQL parsers. + The default parser supports: + + + single and double-quoted literals, with doubling as escaping mechanism + + + two-dashes and non-nested C-style comments + + + + + + + PDO_MYSQL + + + + Added a custom parser supporting: + + + single and double-quoted literals, with doubling and backslash as escaping + mechanism + + + backtick literal identifiers and with doubling as escaping mechanism + + + two dashes followed by at least 1 whitespace, non-nested C-style comments, + and hash-comments + + + + + + + PDO_PGSQL + + + + Added a custom parser supporting: + + + single and double-quoted literals, with doubling as escaping mechanism + + + C-style "escape" string literals (E'string') + + + dollar-quoted string literals + + + two-dashes and C-style comments (non-nested) + + + support for ?? as escape sequence for the + ? operator + + + + + + + PDO_SQLITE + + + + Added a custom parser supporting: + + + single, double-quoted, and backtick literals, with doubling as + escaping mechanism + + + square brackets quoting for identifiers + + + two-dashes and C-style comments (non-nested) + + + + + + + Phar + + + Added support for the Unix timestamp extension for Zip archives. + + + + + Readfile + + + Added ability to change the .php_history path through + the PHP_HISTFILE environment variable. + + + + + Reflection + + + ReflectionAttribute now contains a + name property to improve the debugging experience. + + + + ReflectionClassConstant::__toString and + ReflectionProperty::__toString now returns the + attached doc comments. + + + + + Multiple new methods and constants which are related to the lazy objects + feature have been added: + + + + ReflectionClass::newLazyGhost + + + ReflectionClass::newLazyProxy + + + ReflectionClass::resetAsLazyGhost + + + ReflectionClass::resetAsLazyProxy + + + ReflectionClass::isUninitializedLazyObject + + + ReflectionClass::initializeLazyObject + + + ReflectionClass::markLazyObjectAsInitialized + + + ReflectionClass::getLazyInitializer + + + ReflectionClass::skipLazyInitialization + + + ReflectionClass::setRawValueWithoutLazyInitialization + + + ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE + + + ReflectionClass::SKIP_DESTRUCTOR + + + + + + + SOAP + + + Added support for clark notation for namespaces in class map. + It is now possible to specify entries in a class map with clark notation + to resolve a type with a specific namespace to a specific class. + For example: '{http://example.com}foo' => 'FooClass'. + + + + Instances of DateTimeInterface that are + passed to xsd:datetime or similar elements are now + serialized as such instead of being serialized as an empty string. + + + + Session persistence now works with a shared session module. + + + + + Standard + + + + + Added a new RoundingMode enum with clearer naming + and improved discoverability compared to the + PHP_ROUND_* constants. + Moreover, four new rounding modes were added which are only available via + the new RoundingMode enum. + + + + + XSL + + + It is now possible to use parameters that contain both single and double + quotes. + + + + + It is now possible to pass any callable to + XSLTProcessor::registerPhpFunctions. + + + + + Added XSLTProcessor::$maxTemplateDepth and + XSLTProcessor::$maxTemplateVars + to control the recursion depth of XSL template evaluation. + + + + + Zip + + + Added the ZipArchive::ER_TRUNCATED_ZIP + constant, which was added in libzip 1.11. + + + + + From 9e7e3966c4e60502c70ca766f711cd1c9487decb Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 12:48:34 +0100 Subject: [PATCH 17/35] Detail SimpleXMLElement incompatibility more --- appendices/migration84/incompatible.xml | 63 +++++++++++++++++++++---- 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index b66674ea47c0..9259386bc90a 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -602,18 +602,61 @@ SimpleXML - - Get methods called, or casting to a string on a - SimpleXMLElement will no longer implicitly reset - the iterator data, unless explicitly rewound. - For example, casting an element to a &string; within a &foreach; loop would - cause an infinite loop because it destroyed the current iterator data. - + SimpleXMLElement is not only a representation of an + XML element, but it is also a RecursiveIterator. + Prior to PHP 8.4.0, some of its methods (e.g. + SimpleXMLElement::asXML or + SimpleXMLElement::getName) and casting such + instances to &string; would implicitly reset the iterator. + + This could cause unexpected infinite loops as the iterator was rewound. + For example: + + +123"; +$xml = simplexml_load_string($xmlString); + +$nodes = $xml->a->b; +foreach ($nodes as $nodeData) { + echo "nodeData: " . $nodeData . "\n"; + + $xml = $nodes->asXml(); +} + +]]> + + would result in an infinite loop. + + + + However, this behavior has now been corrected, and a + SimpleXMLElement will no longer implicitly reset + the iterator data, unless explicitly rewound. + Meaning the previous example would now result in: + + + + + + From 1be1bf75d6d5837c5d8e460fa8934eb82f16e4d8 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 14:24:27 +0100 Subject: [PATCH 18/35] Fix title --- appendices/migration84/new-features.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration84/new-features.xml b/appendices/migration84/new-features.xml index f60949852b42..6c9abebcc495 100644 --- a/appendices/migration84/new-features.xml +++ b/appendices/migration84/new-features.xml @@ -67,7 +67,7 @@ examples - Parsing RFC1867 (multipart) requests in non-POST HTTP requests + Chaining &new; expressions without parentheses From cd64356fcff0f969eeec7f90004d1750770aa69d Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 15:14:02 +0100 Subject: [PATCH 19/35] Move exceptions from other changes to incompatibility --- appendices/migration84/incompatible.xml | 75 +++++++++++++++++++++++ appendices/migration84/other-changes.xml | 78 ------------------------ 2 files changed, 75 insertions(+), 78 deletions(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index 9259386bc90a..df760e6a0d26 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -172,6 +172,69 @@ programming errors, i.e. invalid values provided as arguments. + + Curl + + + curl_multi_select now throws a + ValueError if the + timeout parameter is less than + 0 or greater than PHP_INT_MAX. + + + + + Gd + + + + imagejpeg + imagewebp + imagepng + imageavif + + now throw an exception when an invalid quality + is passed. + + + + imageavif will now throw an exception + if an invalid speed parameter value is passed. + + + + imagescale will now throw an exception + if the width or width + parameters underflows/overflows. + + + + imagescale will now throw an exception + if an invalid mode parameter value is passed. + + + + imagefilter will now throw an exception + with the IMG_FILTER_SCATTER filter + if the sub or plus + parameters underflows/overflows. + + + + + Gettext + + + + bind_textdomain_codeset + textdomain + d*gettext + + now throw a ValueError if + domainis the empty string. + + + Intl @@ -192,6 +255,18 @@ + + + IntlDateFormatter::__construct throws a + ValueError if the + locale is invalid. + + + + NumberFormatter::__construct throws a + ValueError if the + locale is invalid. + diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 5c3692ae7fe5..6a983224cf91 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -106,17 +106,6 @@ - - Curl - - - curl_multi_select now throws a - ValueError if the - timeout parameter is less than - 0 or greater than PHP_INT_MAX. - - - DOM @@ -128,59 +117,6 @@ - - Gd - - - - imagejpeg - imagewebp - imagepng - imageavif - - now throw an exception when an invalid quality - is passed. - - - - imageavif will now throw an exception - if an invalid speed parameter value is passed. - - - - imagescale will now throw an exception - if the width or width - parameters underflows/overflows. - - - - imagescale will now throw an exception - if an invalid mode parameter value is passed. - - - - imagefilter will now throw an exception - with the IMG_FILTER_SCATTER filter - if the sub or plus - parameters underflows/overflows. - - - - - Gettext - - - - - bind_textdomain_codeset - textdomain - d*gettext - - now throw an exception if domain - is the empty string. - - - Hash @@ -195,18 +131,6 @@ Intl - - IntlDateFormatter::__construct throws a - ValueError if the - locale is invalid. - - - - NumberFormatter::__construct throws a - ValueError if the - locale is invalid. - - NumberFormatter::ROUND_TOWARD_ZERO and NumberFormatter::ROUND_AWAY_FROM_ZERO @@ -227,8 +151,6 @@ The idn_to_ascii and idn_to_utf8 functions now always throw ValueErrors if the domain name is empty or too long. - and if $variant is not - INTL_IDNA_VARIANT_UTS46. From 6fc846d28968a4ee73a248bdb01bbe709d3281b9 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 15:20:32 +0100 Subject: [PATCH 20/35] Some imprevements to GD exceptions --- appendices/migration84/incompatible.xml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index df760e6a0d26..a9fa08ead548 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -193,29 +193,33 @@ imagepng imageavif - now throw an exception when an invalid quality - is passed. + now throw a ValueError when an invalid + quality is passed. - imageavif will now throw an exception - if an invalid speed parameter value is passed. + imageavif will now throw a + ValueError if an invalid + speed parameter value is passed. - imagescale will now throw an exception - if the width or width + imagescale will now throw a + ValueError if the + width or height parameters underflows/overflows. - imagescale will now throw an exception - if an invalid mode parameter value is passed. + imagescale will now throw a + ValueError if an invalid + mode parameter value is passed. - imagefilter will now throw an exception - with the IMG_FILTER_SCATTER filter + imagefilter will now throw a + ValueError with the + IMG_FILTER_SCATTER filter if the sub or plus parameters underflows/overflows. From 16ae1a4b1cc2c6eb7f7fac8caef4a55678c339e8 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:20:03 +0100 Subject: [PATCH 21/35] Fix typo Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com> --- appendices/migration84/incompatible.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index a9fa08ead548..8f4bb32d8bfc 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -756,7 +756,7 @@ nodeData: 3 configure flag enabled, startup errors will now occur if the SOAP extension is also used. - To solve thiseither don't use rtld-now or load the session extension. + To solve this either don't use rtld-now or load the session extension. From 8421fdaef307a25f814ed87d3d1b90d612827d96 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:24:13 +0100 Subject: [PATCH 22/35] Wording fixes Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com> --- appendices/migration84/incompatible.xml | 2 +- appendices/migration84/other-changes.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index 8f4bb32d8bfc..a9bf86d8376e 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -482,7 +482,7 @@ - The DOMImplementation::getFeature has been removed. + The DOMImplementation::getFeature method has been removed. diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 6a983224cf91..9d31689356ab 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -113,7 +113,7 @@ DOMDocument::registerNodeClass now has a tentative return type of true instead of bool. - I could only ever return &true; in practice. + It could only ever return &true; in practice. @@ -124,7 +124,7 @@ hash_update now has a tentative return type of true instead of bool. - I could only ever return &true; in practice. + It could only ever return &true; in practice. From 3a82b47c6f9d87b57a42b76625bf142a80bac64a Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:16:17 +0100 Subject: [PATCH 23/35] Fix tag --- appendices/migration84/other-changes.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 9d31689356ab..561cb6cb8670 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -264,11 +264,11 @@ Five constants relating to this functionality have been added: - Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL - Pdo\Firebird::READ_COMMITTED - Pdo\Firebird::REPEATABLE_READ - Pdo\Firebird::SERIALIZABLE - Pdo\Firebird::WRITABLE_TRANSACTION + Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL + Pdo\Firebird::READ_COMMITTED + Pdo\Firebird::REPEATABLE_READ + Pdo\Firebird::SERIALIZABLE + Pdo\Firebird::WRITABLE_TRANSACTION From f3cd0020e770091786eb486da871cbb2da74ac97 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:17:59 +0100 Subject: [PATCH 24/35] PDO Class constants --- appendices/migration84/other-changes.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 561cb6cb8670..0b98b1ceef92 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -233,8 +233,7 @@ It is now possible to fetch the value of the - - ATTR_STRINGIFY_FETCHES attribute with + PDO::ATTR_STRINGIFY_FETCHES attribute with PDO::getAttribute. @@ -305,8 +304,7 @@ It is now possible to fetch the value of the - - ATTR_FETCH_TABLE_NAMES attribute with + PDO::ATTR_FETCH_TABLE_NAMES attribute with PDO::getAttribute. From 2bc52b53e281cd6bfa87fcd8ea6d422bf295c871 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:18:24 +0100 Subject: [PATCH 25/35] =?UTF-8?q?Remove=20uselss=20apostrophe=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appendices/migration84/other-changes.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 0b98b1ceef92..02b9324eabd5 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -414,7 +414,7 @@ PASSWORD_BCRYPT for password_hash - has been increased from 10 to '12. + has been increased from 10 to 12. From 696f8845799c75953ee1bb4ba5e1780ef4ce595a Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:20:42 +0100 Subject: [PATCH 26/35] Fix weird spacing --- appendices/migration84/constants.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration84/constants.xml b/appendices/migration84/constants.xml index 46a23a0eb961..5b958024623f 100644 --- a/appendices/migration84/constants.xml +++ b/appendices/migration84/constants.xml @@ -112,7 +112,7 @@ LIBXML_NO_XXE. - This is used together with LIBXML_NOENT + This is used together with LIBXML_NOENT when entity substitution should be performed, while disallowing external entity loading. This constant is available as of libxml2 2.13. From f28d803d2fa76b832c8eed2f6e79782364e6f66e Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:24:28 +0100 Subject: [PATCH 27/35] Use lowercase null wording --- appendices/migration84/incompatible.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index a9bf86d8376e..eb58e2a09dad 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -418,7 +418,7 @@ - Passing a &string; containing NULL bytes previously emitted a + Passing a &string; containing null bytes previously emitted a warning and now throws a ValueError. @@ -427,7 +427,7 @@ XMLWriter - Passing a &string; containing NULL bytes previously emitted a + Passing a &string; containing null bytes previously emitted a warning and now throws a ValueError. From 8347ecaa28d852677883125ceb918f22cad6f9cf Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:25:18 +0100 Subject: [PATCH 28/35] Move str function performance to Standard --- appendices/migration84/other-changes.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 02b9324eabd5..e579a8aea9bd 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -678,13 +678,6 @@ MBString - - - The performance of strspn and - strcspn is greatly improved. - They now run in linear time instead of being bounded by quadratic time. - - mb_strcut is much faster now for UTF-8 and UTF-16 strings. @@ -737,6 +730,12 @@ Standard + + The 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. From d12836d5f1b2de03f45ed9e7187d49a363890cc5 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 15 Oct 2024 19:27:17 +0100 Subject: [PATCH 29/35] PCNTL enum not global constants --- appendices/migration84/constants.xml | 17 ----------------- appendices/migration84/new-classes.xml | 8 ++++++++ 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/appendices/migration84/constants.xml b/appendices/migration84/constants.xml index 5b958024623f..ca32ecd0ed68 100644 --- a/appendices/migration84/constants.xml +++ b/appendices/migration84/constants.xml @@ -142,24 +142,7 @@ PCNTL - - - Pcntl\QosClass::Background (macOS only) - - - Pcntl\QosClass::Default (macOS only) - - - Pctnl\QosClass::UserInteractive (macOS only) - - - Pcntl\QosClass::UserInitiated (macOS only) - - - Pcntl\QosClass::Utility (macOS only) - - SIGCKPT (DragonFlyBSD only) diff --git a/appendices/migration84/new-classes.xml b/appendices/migration84/new-classes.xml index 5a17e2feecf0..f5a187becd52 100644 --- a/appendices/migration84/new-classes.xml +++ b/appendices/migration84/new-classes.xml @@ -41,6 +41,14 @@ + + PCNTL + + + Pcntl\QosClass (macOS only) + + + PDO_DBLIB From 57974fa745d2556db5859e685c7ef701b5199bf9 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 16 Oct 2024 10:38:42 +0100 Subject: [PATCH 30/35] Fill in TODO for aziv Co-authored-by: Larry Garfield --- appendices/migration84/new-features.xml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/appendices/migration84/new-features.xml b/appendices/migration84/new-features.xml index 6c9abebcc495..a07d9ec6354b 100644 --- a/appendices/migration84/new-features.xml +++ b/appendices/migration84/new-features.xml @@ -32,8 +32,24 @@ examples Asymmetric Property Visibility - TODO + Object properties may now have their set visibility controlled separately from the get visibility. + + +name = $name; + } +} +]]> + + From 52cfde5a3b26978748313b3600aada1521383710 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 16 Oct 2024 10:41:40 +0100 Subject: [PATCH 31/35] Add some of the new namespaces Dom classes Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com> --- appendices/migration84/new-classes.xml | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/appendices/migration84/new-classes.xml b/appendices/migration84/new-classes.xml index f5a187becd52..794f4697b4c0 100644 --- a/appendices/migration84/new-classes.xml +++ b/appendices/migration84/new-classes.xml @@ -29,7 +29,32 @@ Dom\HTMLDocument Dom\XMLDocument - + Dom\Document + Dom\ParentNode + Dom\ChildNode + Dom\Implementation + Dom\Node + Dom\NodeList + Dom\NamedNodeMap + Dom\DtdNamedNodeMap + Dom\HTMLCollection + Dom\AdjacentPosition + Dom\Element + Dom\HTMLElement + Dom\Attr + Dom\CharacterData + Dom\Text + Dom\CDATASection + Dom\ProcessingInstruction + Dom\Comment + Dom\DocumentType + Dom\DocumentFragment + Dom\Entity + Dom\EntityReference + Dom\Notation + Dom\TokenList + Dom\NamespaceInfo + Dom\XPath From 69a1585150105fd75323da202e9990d75a9b14b4 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 16 Oct 2024 10:40:44 +0100 Subject: [PATCH 32/35] Update removed extension text --- appendices/migration84/removed-extensions.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration84/removed-extensions.xml b/appendices/migration84/removed-extensions.xml index 7323d40d1820..ad64c94103ca 100644 --- a/appendices/migration84/removed-extensions.xml +++ b/appendices/migration84/removed-extensions.xml @@ -4,8 +4,8 @@ These extensions have been moved to PECL and are no longer part of the PHP - distribution. The PECL package versions of these extensions will be created - according to user demand. + distribution. New releases for the PECL packages will be published on an + ad-hoc basis according to user demand. From 5492e73e0e1c3a275257a9a0ab6c788e1c5673c9 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 16 Oct 2024 10:43:18 +0100 Subject: [PATCH 33/35] Credit Colin Percival --- appendices/migration84/other-changes.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index e579a8aea9bd..c884e783542a 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -672,6 +672,7 @@ Added 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. From d065458002b1b5807257f538496603ad916fb0f9 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 16 Oct 2024 11:42:27 +0100 Subject: [PATCH 34/35] Nits and markup reviews Co-authored-by: Christoph M. Becker --- appendices/migration84/deprecated.xml | 2 +- appendices/migration84/incompatible.xml | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/appendices/migration84/deprecated.xml b/appendices/migration84/deprecated.xml index cdfc3c7835a3..b814148a037c 100644 --- a/appendices/migration84/deprecated.xml +++ b/appendices/migration84/deprecated.xml @@ -178,7 +178,7 @@ class _MyClass {} The DatePeriod::__construct(string $isostr, int $options = 0) signature has been deprecated. - Use DatePeriod::createFromISO8601String> instead. + Use DatePeriod::createFromISO8601String instead. diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index eb58e2a09dad..bb4158703d67 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -15,7 +15,7 @@ - <function>exit</function> behavioural change + <function>exit</function> behavioral change The exit (and die) language @@ -72,7 +72,7 @@ The name of uploaded files and files created by the tempnam function are now 13 bytes longer. - Total length is platform-dependent. + The total length is still platform-dependent. @@ -301,7 +301,7 @@ odbc_fetch_row returns &false; when - row is less than or equal to 0. + row is less than or equal to 0. A warning is now emitted in this case. @@ -439,7 +439,7 @@ XSLTProcessor::setParameter will now throw a ValueError when its arguments contain null bytes. This never actually worked correctly in the first place, - which is why it throws an exception nowadays. + which is why it throws an exception now. @@ -593,8 +593,8 @@ - If JIT compilation is enabled, PHP will now exit with a fatal error on - startup if the initialization of the JIT compiler failed for any reason. + If JIT compilation is enabled, PHP will now exit with a fatal error on + startup if the initialization of the JIT compiler failed for any reason. @@ -799,8 +799,7 @@ nodeData: 3 The xml_set_*_handler functions now declare and check for an effective - - signature of callable|string|null for the + signature of callablestringnull for the handler parameters. Moreover, values of type string that correspond to method names, of object set with xml_set_object are now checked to From 7880dcee49a73228bc75996c9bd86230a97438b8 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Wed, 16 Oct 2024 11:42:38 +0100 Subject: [PATCH 35/35] Typo --- appendices/migration84/incompatible.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index bb4158703d67..4c5521421d8d 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -766,7 +766,7 @@ nodeData: 3 When using strcspn with characters being the empty string, - the length of the string is now returned instead of incorectly stopping + the length of the string is now returned instead of incorrectly stopping at the first null byte.