From aae149dd7da520dca42b799e7a2eafb2c3a579df Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 17:30:53 +0100 Subject: [PATCH 01/36] Add initial version of the PHP 8.2 migration guide --- appendices/migration82.xml | 52 ++ appendices/migration82/constants.xml | 526 ++++++++++++++++++++ appendices/migration82/deprecated.xml | 134 +++++ appendices/migration82/incompatible.xml | 145 ++++++ appendices/migration82/new-features.xml | 187 +++++++ appendices/migration82/new-functions.xml | 122 +++++ appendices/migration82/other-changes.xml | 539 +++++++++++++++++++++ appendices/migration82/windows-support.xml | 54 +++ 8 files changed, 1759 insertions(+) create mode 100644 appendices/migration82.xml create mode 100644 appendices/migration82/constants.xml create mode 100644 appendices/migration82/deprecated.xml create mode 100644 appendices/migration82/incompatible.xml create mode 100644 appendices/migration82/new-features.xml create mode 100644 appendices/migration82/new-functions.xml create mode 100644 appendices/migration82/other-changes.xml create mode 100644 appendices/migration82/windows-support.xml diff --git a/appendices/migration82.xml b/appendices/migration82.xml new file mode 100644 index 000000000000..ccc78d53ad94 --- /dev/null +++ b/appendices/migration82.xml @@ -0,0 +1,52 @@ + + + Migrating from PHP 8.1.x to PHP 8.2.x + + &appendices.migration82.new-features; + &appendices.migration82.new-functions; + &appendices.migration82.constants; + &appendices.migration82.incompatible; + &appendices.migration82.deprecated; + &appendices.migration82.other-changes; + &appendices.migration82.windows-support; + + + + 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. + + + + diff --git a/appendices/migration82/constants.xml b/appendices/migration82/constants.xml new file mode 100644 index 000000000000..5089fb4bfb2f --- /dev/null +++ b/appendices/migration82/constants.xml @@ -0,0 +1,526 @@ + + + New Global Constants + + + COM + + + + DISP_E_PARAMNOTFOUND + + + LOCALE_NEUTRAL + + + + + + cURL + + + + + CURLALTSVC_H1 (libcurl >= 7.64.1) + + + + + CURLALTSVC_H2 (libcurl >= 7.64.1) + + + + + CURLALTSVC_H3 (libcurl >= 7.64.1) + + + + + CURLALTSVC_READONLYFILE (libcurl >= 7.64.1) + + + + + CURLAUTH_AWS_SIGV4 (libcurl >= 7.75.0) + + + + + CURLE_PROXY (libcurl >= 7.73.0) + + + + + CURLFTPMETHOD_DEFAULT + + + + + CURLHSTS_ENABLE (libcurl >= 7.74.0) + + + + + CURLHSTS_READONLYFILE (libcurl >= 7.74.0) + + + + + CURLINFO_PROXY_ERROR (libcurl >= 7.73.0) + + + + + CURLINFO_REFERER (libcurl >= 7.76.0) + + + + + CURLINFO_RETRY_AFTER (libcurl >= 7.66.0) + + + + + CURLMOPT_MAX_CONCURRENT_STREAMS (libcurl >= 7.67.0) + + + + + CURLOPT_ALTSVC_CTRL (libcurl >= 7.64.1) + + + + + CURLOPT_ALTSVC (libcurl >= 7.64.1) + + + + + CURLOPT_AWS_SIGV4 (libcurl >= 7.75.0) + + + + + CURLOPT_CAINFO_BLOB (libcurl >= 7.77.0) + + + + + CURLOPT_DOH_SSL_VERIFYHOST (libcurl >= 7.76.0) + + + + + CURLOPT_DOH_SSL_VERIFYPEER (libcurl >= 7.76.0) + + + + + CURLOPT_DOH_SSL_VERIFYSTATUS (libcurl >= 7.76.0) + + + + + CURLOPT_HSTS_CTRL (libcurl >= 7.74.0) + + + + + CURLOPT_HSTS (libcurl >= 7.74.0) + + + + + CURLOPT_MAIL_RCPT_ALLLOWFAILS (libcurl >= 7.69.0) + + + + + CURLOPT_MAXAGE_CONN (libcurl >= 7.65.0) + + + + + CURLOPT_MAXFILESIZE_LARGE + + + + + CURLOPT_MAXLIFETIME_CONN (libcurl >= 7.80.0) + + + + + CURLOPT_PROXY_CAINFO_BLOB (libcurl >= 7.77.0) + + + + + CURLOPT_SASL_AUTHZID (libcurl >= 7.66.0) + + + + + CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 (libcurl >= 7.80.0) + + + + + CURLOPT_SSL_EC_CURVES (libcurl >= 7.73.0) + + + + + CURLOPT_UPKEEP_INTERVAL_MS (libcurl >= 7.62.0) + + + + + CURLOPT_UPLOAD_BUFFERSIZE (libcurl >= 7.62.0) + + + + + CURLOPT_XFERINFOFUNCTION (libcurl >= 7.32.0) + + + + + CURLPROTO_MQTT (libcurl >= 7.71.0) + + + + + CURLPX_BAD_ADDRESS_TYPE (libcurl >= 7.73.0) + + + + + CURLPX_BAD_VERSION (libcurl >= 7.73.0) + + + + + CURLPX_CLOSED (libcurl >= 7.73.0) + + + + + CURLPX_GSSAPI (libcurl >= 7.73.0) + + + + + CURLPX_GSSAPI_PERMSG (libcurl >= 7.73.0) + + + + + CURLPX_GSSAPI_PROTECTION (libcurl >= 7.73.0) + + + + + CURLPX_IDENTD_DIFFER (libcurl >= 7.73.0) + + + + + CURLPX_IDENTD (libcurl >= 7.73.0) + + + + + CURLPX_LONG_HOSTNAME (libcurl >= 7.73.0) + + + + + CURLPX_LONG_PASSWD (libcurl >= 7.73.0) + + + + + CURLPX_LONG_USER (libcurl >= 7.73.0) + + + + + CURLPX_NO_AUTH (libcurl >= 7.73.0) + + + + + CURLPX_OK (libcurl >= 7.73.0) + + + + + CURLPX_RECV_ADDRESS (libcurl >= 7.73.0) + + + + + CURLPX_RECV_AUTH (libcurl >= 7.73.0) + + + + + CURLPX_RECV_CONNECT (libcurl >= 7.73.0) + + + + + CURLPX_RECV_REQACK (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_COMMAND_NOT_SUPPORTED (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_CONNECTION_REFUSED (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_GENERAL_SERVER_FAILURE (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_HOST_UNREACHABLE (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_NETWORK_UNREACHABLE (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_NOT_ALLOWED (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_TTL_EXPIRED (libcurl >= 7.73.0) + + + + + CURLPX_REPLY_UNASSIGNED (libcurl >= 7.73.0) + + + + + CURLPX_REQUEST_FAILED (libcurl >= 7.73.0) + + + + + CURLPX_RESOLVE_HOST (libcurl >= 7.73.0) + + + + + CURLPX_SEND_AUTH (libcurl >= 7.73.0) + + + + + CURLPX_SEND_CONNECT (libcurl >= 7.73.0) + + + + + CURLPX_SEND_REQUEST (libcurl >= 7.73.0) + + + + + CURLPX_UNKNOWN_FAIL (libcurl >= 7.73.0) + + + + + CURLPX_UNKNOWN_MODE (libcurl >= 7.73.0) + + + + + CURLPX_USER_REJECTED (libcurl >= 7.73.0) + + + + + CURLSSLOPT_AUTO_CLIENT_CERT (libcurl >= 7.77.0) + + + + + CURLSSLOPT_NATIVE_CA (libcurl >= 7.71.0) + + + + + CURLSSLOPT_NO_PARTIALCHAIN (libcurl >= 7.68.0) + + + + + CURLSSLOPT_REVOKE_BEST_EFFORT (libcurl >= 7.70.0) + + + + + CURL_VERSION_GSASL (libcurl >= 7.76.0) + + + + + CURL_VERSION_HSTS (libcurl >= 7.74.0) + + + + + CURL_VERSION_HTTP3 (libcurl >= 7.66.0) + + + + + CURL_VERSION_UNICODE (libcurl >= 7.72.0) + + + + + CURL_VERSION_ZSTD (libcurl >= 7.72.0) + + + + + + + DBA + + + + DBA_LMDB_USE_SUB_DIR + + + DBA_LMDB_NO_SUB_DIR + + + + + + Filter + + + + FILTER_FLAG_GLOBAL_RANGE + + + + + + Sockets + + + The following socket options are now defined if they are supported: + + + + SO_INCOMING_CPU + + + SO_MEMINFO + + + SO_RTABLE (OpenBSD) + + + TCP_KEEPALIVE (MacOS) + + + TCP_KEEPCNT (Linux, others) + + + TCP_KEEPIDLE (Linux, others) + + + TCP_KEEPINTVL (Linux, others) + + + TCP_NOTSENT_LOWAT + + + LOCAL_CREDS_PERSISTENT (FreeBSD) + + + SCM_CREDS2 (FreeBSD) + + + LOCAL_CREDS (NetBSD) + + + SO_BPF_EXTENSIONS + + + SO_SETFIB + + + TCP_CONGESTION (Linux, FreeBSD) + + + SO_ZEROCOPY (Linux) + + + MSG_ZEROCOPY (Linux) + + + SO_ACCEPTFILTER + + + SO_DONTTRUNC + + + SO_WANTMORE + + + SO_MARK + + + TCP_DEFER_ACCEPT + + + + + + diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml new file mode 100644 index 000000000000..abd985265b13 --- /dev/null +++ b/appendices/migration82/deprecated.xml @@ -0,0 +1,134 @@ + + + Deprecated Features + + + PHP Core + + + Usage of dynamic properties + + + The creation of dynamic properties is deprecated, unless the class opts in by + using the #[AllowDynamicProperties] attribute. + stdClass allows dynamic properties. + + Usage of the __get()/__set() magic methods is not affected by this change. + A dynamic properties deprecation warning can be addressed by: + + + + Declaring the property (preferred). + + + + Adding the #[AllowDynamicProperties] attribute to the class + (which also applies to all child classes). + + + + + Using a WeakMap if additional data needs to be + associated with an object which one does not own. + + + + + + + + Relative callables + + + Callables that are not accepted by the $callable() syntax + (but are accepted by call_user_func) are deprecated. + + In particular: + + "self::method" + "parent::method" + "static::method" + ["self", "method"] + ["parent", "method"] + ["static", "method"] + ["Foo", "Bar::method"] + [new Foo, "Bar::method"] + + + This does not affect normal method callables such as + "A::method" or ["A", "method"]. + + + + + + + <code>"${var}"</code> and <code>"${expr}"</code> style interpolation + + + The "${var}" and "${expr}" style of string + interpolation are deprecated and will be removed in PHP 9. + Use "$var"/"{$var}" or "{${expr}}", respectively. + + + + + + + + MBString + + + Usage of the QPrint, Base64, + Uuencode, and HTML-ENTITIES + 'text encodings' is deprecated for all Mbstring functions. + + Unlike all the other text encodings supported by Mbstring, + these do not encode a sequence of Unicode codepoints, but rather a sequence of raw bytes. + It is not clear what the correct return values for most Mbstring functions + should be when one of these non-encodings is specified. + Moreover, PHP has separate, built-in implementations of all of them; + for example, UUencoded data can be handled using + convert_uuencode/convert_uudecode. + + + + + SPL + + + The internal SplFileInfo::_bad_state_ex method + has been deprecated. + + + + + Standard + + + utf8_encode and utf8_decode + have been deprecated. + + + + + diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml new file mode 100644 index 000000000000..cb9379b5987f --- /dev/null +++ b/appendices/migration82/incompatible.xml @@ -0,0 +1,145 @@ + + + Backward Incompatible Changes + + + Date + + + DateTime::createFromImmutable now has a tentative + return of static, previously it was DateTime. + + + + DateTimeImmutable::createFromMutable now has a tentative + return of static, previously it was DateTimeImmutable. + + + + + ODBC + + + The ODBC extension now escapes the username and password for the case when + both a connection string and username/password are passed, and the string + must be appended to. Before, user values containing values needing escaping + could have created a malformed connection string, or injected values from + user-provided data. The escaping rules should be identical to the .NET BCL + DbConnectionOptions behaviour. + + + + + PDO_ODBC + + + The PDO_ODBC extension also escapes the username and password when a + connection string is passed. See the change to the ODBC extension for + further details. + + + + + Standard + + + glob returns empty array if all paths are restricted by open_basedir. + Previously the error was returned but that behavior was not consistent and + did not work correctly for all patterns. + + + + strtolower, + strtoupper, + stristr, + stripos, + strripos, + lcfirst, + ucfirst, + ucwords, + and str_ireplace are no longer locale-sensitive. + They now perform ASCII case conversion, as if the locale were "C". + For localized versions of these functions are available in the MBString extension. + Moreover, array_change_key_case, and sorting with + SORT_FLAG_CASE now also use ASCII case conversion. + + + + str_split returns an empty array for an empty string now. + Previously it returned an array with a single empty string entry. + mb_str_split is not affected by this change as it was + already behaving like that. + + + + ksort and krsort now do numeric string + comparison under SORT_REGULAR using the standard PHP 8 rules now. + + + + + Standard PHP Library (SPL) + + + The following methods now enforce their signature: + + + SplFileInfo::_bad_state_ex + + + SplFileObject::getCsvControl + + + SplFileObject::fflush + + + SplFileObject::ftell + + + SplFileObject::fgetc + + + SplFileObject::fpassthru + + + + + + SplFileObject::hasChildren now has a tentative + return of false, previously it was bool. + + + + SplFileObject::getChildren now has a tentative + return of null, previously it was + RecursiveIteratornull. + + + + GlobIterator returns empty array if all paths are + restricted by open_basedir. Previously the error was returned but that + behavior was not consistent and did not work correctly. + + + + + diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml new file mode 100644 index 000000000000..a4e6bd176e32 --- /dev/null +++ b/appendices/migration82/new-features.xml @@ -0,0 +1,187 @@ + + + New Features + + + PHP Core + + + SensitiveParameter attribute + + + Added the #[\SensitiveParameter] attribute to redact + sensitive data in backtraces. + + + + + + error_log_mode INI directive + + + The error_log_mode INI directive has been added which allows setting + the permissions for the error log file. + + + + + Enumerations properties in constant expressions + + + It is now possible to fetch properties of + Enumerations + in constant expressions. + + + + + + Type System Improvements + + + It is now possible to use null and false + as stand-alone types. + + + + + The true has been added. + + + + + It is now possible to combine intersection and union types. + The type needs to be written in Disjoint Normal Form (DNF). + + + + + + Constants in Traits + + + It is now possible to defines constants in traits. + + + + + + + Readonly Classes + + + Support for readonly + on classes has been added. + + + + + + + + CURL + + + Added the CURLINFO_EFFECTIVE_METHOD option, + which returns the effective HTTP method in the return value of + curl_getinfo. + + + + Exposed multiple new constants from libcurl 7.62 to 7.80. + + + + Added the curl_upkeep function to perform any connection upkeep checks. + + + + + DBA + + + The LMDB Driver now accepts the DBA_LMDB_USE_SUB_DIR or + DBA_LMDB_NO_SUB_DIR flags to determine if it should + create a subdirectory or not when creating a database file. + + + + + OCI8 + + + Added the oci8.prefetch_lob_size INI directive and + oci_set_prefetch_lob function to tune LOB query + performance by reducing the number of round-trips between PHP and + Oracle Databases when fetching LOBS. + This is usable with Oracle Database 12.2 or later. + + + + + OpenSSL + + + Added AEAD support for the chacha20-poly1305 algorithm. + + + + + ODBC + + + Added the odbc_connection_string_is_quoted, + odbc_connection_string_should_quote, and + odbc_connection_string_quote functions. + These are primarily used behind the scenes in the ODBC and PDO_ODBC extensions, + but are exposed to userland for easier unit testing, and for user + applications and libraries to perform quoting themselves. + + + + + PCRE + + + Added support for the n (NO_AUTO_CAPTURE) modifier, + which makes simple (xyz) groups non-capturing. + Only named groups like (?<name>xyz) are capturing. + This only affects which groups are capturing, it is still possible to use + numbered subpattern references, and the matches array will still contain + numbered results. + + + + + Random + + + This is a new extension which organises and consolidates existing + implementations related to random number generators. + New and better RNGs are available with scope issues eliminated. + + + + + + + diff --git a/appendices/migration82/new-functions.xml b/appendices/migration82/new-functions.xml new file mode 100644 index 000000000000..7c03c20aaf36 --- /dev/null +++ b/appendices/migration82/new-functions.xml @@ -0,0 +1,122 @@ + + + New Functions + + + cURL + + + + + curl_upkeep + + + + + + + MySQLi + + + + + mysqli_execute_query + + + + + + + OpenSSL + + + + + openssl_cipher_key_length + + + + + + + Reflection + + + + + ReflectionFunction::isAnonymous + + + + + ReflectionMethod::hasPrototype + + + + + + + Sodium + + + XChaCha20 + + + + sodium_crypto_stream_xchacha20_xor_ic + + + + + + + + Standard + + + + + memory_reset_peak_usage + + + + + ini_parse_quantity + + + + + + + XML + + + + + libxml_get_external_entity_loader + + + + + + + diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml new file mode 100644 index 000000000000..43ebb8bf24e8 --- /dev/null +++ b/appendices/migration82/other-changes.xml @@ -0,0 +1,539 @@ + + + Other Changes + + + Core changes + + + The iterable type is now a built-in compile time alias for + arrayTraversable. + Error messages relating to iterable will therefore + now use array|Traversable. + Type Reflection is preserved for single iterable + (and ?iterable) to produce a + ReflectionNamedType with name iterable, + however usage of iterable in union types will be + converted to array|Traversable. + + + + + Changes in SAPI Modules + + + CLI + + + The STDOUT, STDERR and STDIN are no longer closed on resource destruction + which is mostly when the CLI finishes. It is however still possible to + explicitly close those streams using fclose and similar. + + + + + + Changed Functions + + + Core + + + The str*cmp, str*pos, substr_compare functions, using binary safe string + comparison now return -1, 0 and 1. + + + + + DBA + + + dba_open and dba_popen + now have the following enforced signature: + + resourcefalsedba_open + stringpath + stringmode + stringnullhandler&null; + intpermission0644 + intmap_size0 + + + + dba_fetch's optional skip argument is now at the end + in line with PHP userland semantics. Its signature is now: + + stringfalsedba_fetch + stringarraykey + resourcehandle + intskip + + + The overloaded signature: + + stringfalsedba_fetch + stringarraykey + intskip + resourcehandle + + is still accepted, but it is recommended to use the new standard variant. + + + + + Random + + + random_bytes and random_int + now throw a \Random\RandomException on CSPRNG failures. + Previously a plain Exception was thrown instead. + + + + + SPL + + + The iterator parameter of + iterator_to_array and iterator_count + is widened to iterable from Iterator, + allowing arrays to be passed. + + + + + + + Other Changes to Extensions + + + Date + + + The properties of DatePeriod are now properly declared. + + + + + Intl + + + Instances of + IntlBreakIterator, + IntlRuleBasedBreakIterator, + IntlCodePointBreakIterator, + IntlPartsIterator, + IntlCalendar, + IntlCalendar, + Collator, + IntlIterator, + UConverter, + IntlDateFormatter, + IntlDatePatternGenerator, + MessageFormatter, + ResourceBundle, + Spoofchecker, + IntlTimeZone, + and Transliterator + are no longer serializable. Previously, they could be serialized, but + unserialization yielded unusable objects or failed. + + + + + MySQLi + + + The support for libmysql has been removed. It's no longer possible to compile + mysqli with libmysql and all relevant functionality has been removed. + + + + + + The reconnect property of mysqli_driver has been removed. + + + + + + The INI directive mysqli.reconnect has been removed. + + + + + The constant MYSQLI_IS_MARIADB has been deprecated. + + + + + + + OCI8 + + + The minimum Oracle Client library version required is now 11.2. + + + + + PCRE + + + NUL characters (\0) in pattern strings are now supported. + + + + + Session + + + + Trying to change the SameSite cookie INI setting while the session is + active or output has already been sent will now fail and emit a warning. + This aligns the behaviour with all other session INI settings. + + + + + SQLite3 + + + + sqlite3.defensive is now PHP_INI_USER. + + + + + Standard + + + getimagesize now reports the actual image dimensions, + bits and channels of AVIF images. Previously, the dimensions have been reported as 0x0, + and bits and channels have not been reported at all. + + + + + Tidy + + + + + Properties of tidy are now properly declared. + + + + + Properties of tidyNode are now properly declared as readonly. + + + + + + + Zip + + + The Zip extension has been updated to version 1.20.0, + which adds the following methods: + + + + ZipArchive::clearError + + + + + ZipArchive::getStreamName + + + + + ZipArchive::getStreamIndex + + + + + + + + + Changes to INI File Handling + + + Parsing of some ill-formatted values will now trigger a warning when this + was silently ignored before. + For backwards compatibility, interpretation of these values has not changed. + This affects the following settings: + + + + + bcmath.scale + + + com.code_page + + + default_socket_timeout + + + fiber.stack_size + + + hard_timeout + + + intl.error_level + + + ldap.max_links + + + max_input_nesting_level + + + max_input_vars + + + mbstring.regex_retry_limit + + + mbstring.regex_stack_limit + + + mysqli.allow_local_infile + + + mysqli.allow_persistent + + + mysqli.default_port + + + mysqli.max_links + + + mysqli.max_persistent + + + mysqli.reconnect + + + mysqli.rollback_on_cached_plink + + + mysqlnd.log_mask + + + mysqlnd.mempool_default_size + + + mysqlnd.net_read_buffer_size + + + mysqlnd.net_read_timeout + + + oci8.default_prefetch + + + oci8.max_persistent + + + oci8.persistent_timeout + + + oci8.ping_interval + + + oci8.prefetch_lob_size + + + oci8.privileged_connect + + + oci8.statement_cache_size + + + odbc.allow_persistent + + + odbc.check_persistent + + + odbc.defaultbinmode + + + odbc.default_cursortype + + + odbc.defaultlrl + + + odbc.max_links + + + odbc.max_persistent + + + opcache.consistency_checks + + + opcache.file_update_protection + + + opcache.force_restart_timeout + + + opcache.interned_strings_buffer + + + opcache.jit_bisect_limit + + + opcache.jit_blacklist_root_trace + + + opcache.jit_blacklist_side_trace + + + opcache.jit_debug + + + opcache.jit_hot_func + + + opcache.jit_hot_loop + + + opcache.jit_hot_return + + + opcache.jit_hot_side_exit + + + opcache.jit_max_exit_counters + + + opcache.jit_max_loop_unrolls + + + opcache.jit_max_polymorphic_calls + + + opcache.jit_max_recursive_calls + + + opcache.jit_max_recursive_returns + + + opcache.jit_max_root_traces + + + opcache.jit_max_side_traces + + + opcache.log_verbosity_level + + + opcache.max_file_size + + + opcache.opt_debug_level + + + opcache.optimization_level + + + opcache.revalidate_freq + + + output_buffering + + + pcre.backtrack_limit + + + pcre.recursion_limit + + + pgsql.max_links + + + pgsql.max_persistent + + + post_max_size + + + realpath_cache_size + + + realpath_cache_ttl + + + session.cache_expire + + + session.cookie_lifetime + + + session.gc_divisor + + + session.gc_maxlifetime + + + session.gc_probability + + + soap.wsdl_cache_limit + + + soap.wsdl_cache_ttl + + + unserialize_max_depth + + + upload_max_filesize + + + user_ini.cache_ttl + + + xmlrpc_error_number + + + zend.assertions + + + zlib.output_compression_level + + + + + + + diff --git a/appendices/migration82/windows-support.xml b/appendices/migration82/windows-support.xml new file mode 100644 index 000000000000..f7f6fbf8b46a --- /dev/null +++ b/appendices/migration82/windows-support.xml @@ -0,0 +1,54 @@ + + + Windows Support + + + Core + + Windows specific error messages are no longer localized, but instead + always displayed in English to better match PHP error messages. + + + Preliminary and highly experimental support for building on ARM64 has been added. + + + + + OCI8 + + Because building against Oracle Client 10g is no longer supported anyway, + the configuration option --with-oci8 has been dropped. + The --with-oci8-11g, --with-oci8-12c and + --with-oci8-19 configuration options are still supported. + + + + + Zip + + The Zip extension is upgraded to version 1.21.0, + and is now built as shared library (DLL) by default. + + + + + From e20028ceb207db7cdc27b7f4dfe54306f402b2d8 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 18:59:10 +0100 Subject: [PATCH 02/36] Use simplelist for Callable depraction Co-authored-by: Christoph M. Becker --- appendices/migration82/deprecated.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index abd985265b13..294d2f4f952b 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -44,16 +44,16 @@ (but are accepted by call_user_func) are deprecated. In particular: - - "self::method" - "parent::method" - "static::method" - ["self", "method"] - ["parent", "method"] - ["static", "method"] - ["Foo", "Bar::method"] - [new Foo, "Bar::method"] - + + "self::method" + "parent::method" + "static::method" + ["self", "method"] + ["parent", "method"] + ["static", "method"] + ["Foo", "Bar::method"] + [new Foo, "Bar::method"] + This does not affect normal method callables such as "A::method" or ["A", "method"]. From ef3d5e5e9853815c6250f486a66afc20a9bfe28e Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 18:59:31 +0100 Subject: [PATCH 03/36] cURL wording MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tim Düsterhus --- appendices/migration82/new-features.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index a4e6bd176e32..c2d8b6ede2ba 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -79,7 +79,7 @@ - CURL + cURL Added the CURLINFO_EFFECTIVE_METHOD option, From 792d62ce2be3a27bffabe29a8d6588d49e11a605 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 19:00:32 +0100 Subject: [PATCH 04/36] Use link for magic methods Co-authored-by: Christoph M. Becker --- appendices/migration82/deprecated.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index 294d2f4f952b..22990a5fa4dd 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -12,8 +12,7 @@ The creation of dynamic properties is deprecated, unless the class opts in by using the #[AllowDynamicProperties] attribute. stdClass allows dynamic properties. - - Usage of the __get()/__set() magic methods is not affected by this change. + Usage of the __get()/__set() magic methods is not affected by this change. A dynamic properties deprecation warning can be addressed by: From 42f9f8a378e1df589ca860eacd41e0a352c2d1c4 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 19:02:04 +0100 Subject: [PATCH 05/36] Use FQN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tim Düsterhus --- appendices/migration82/deprecated.xml | 2 +- appendices/migration82/other-changes.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index 22990a5fa4dd..f1c11666a672 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -10,7 +10,7 @@ The creation of dynamic properties is deprecated, unless the class opts in by - using the #[AllowDynamicProperties] attribute. + using the #[\AllowDynamicProperties] attribute. stdClass allows dynamic properties. Usage of the __get()/__set() magic methods is not affected by this change. A dynamic properties deprecation warning can be addressed by: diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 43ebb8bf24e8..e8b25d9aad69 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -86,7 +86,7 @@ random_bytes and random_int now throw a \Random\RandomException on CSPRNG failures. - Previously a plain Exception was thrown instead. + Previously a plain \Exception was thrown instead. From 210cfaa8efd7db4137c1d9ddf4571ae127501d01 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 19:02:31 +0100 Subject: [PATCH 06/36] Wording for string interpolation deprecation --- appendices/migration82/deprecated.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index f1c11666a672..a0735b10d75d 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -66,8 +66,8 @@ The "${var}" and "${expr}" style of string - interpolation are deprecated and will be removed in PHP 9. - Use "$var"/"{$var}" or "{${expr}}", respectively. + interpolation is deprecated. + Use "$var"/"{$var}" and "{${expr}}", respectively. From d26880afb8bf53068b5f46015a074dacc4df5863 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 19:04:04 +0100 Subject: [PATCH 07/36] Remove socket constants which were added in 8.1 Those are a leftover from copy pasting the migration guide --- appendices/migration82/constants.xml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/appendices/migration82/constants.xml b/appendices/migration82/constants.xml index 5089fb4bfb2f..4711ec274783 100644 --- a/appendices/migration82/constants.xml +++ b/appendices/migration82/constants.xml @@ -485,21 +485,6 @@ MSG_ZEROCOPY (Linux) - - SO_ACCEPTFILTER - - - SO_DONTTRUNC - - - SO_WANTMORE - - - SO_MARK - - - TCP_DEFER_ACCEPT - From 5f3b8cdf69ab65d78cf5774e2854885de667ce76 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 6 Sep 2022 19:05:33 +0100 Subject: [PATCH 08/36] use a simplelist --- appendices/migration82/deprecated.xml | 28 +++++++++++---------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index a0735b10d75d..f6aa31c9e65a 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -15,23 +15,17 @@ Usage of the __get()/__set() magic methods is not affected by this change. A dynamic properties deprecation warning can be addressed by: - - - Declaring the property (preferred). - - - - Adding the #[AllowDynamicProperties] attribute to the class - (which also applies to all child classes). - - - - - Using a WeakMap if additional data needs to be - associated with an object which one does not own. - - - + + Declaring the property (preferred). + + Adding the #[AllowDynamicProperties] attribute to the class + (which also applies to all child classes). + + + Using a WeakMap if additional data needs to be + associated with an object which one does not own. + + From 388b307e541f078723ed30e544b63a63e94780a2 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 11:10:31 +0100 Subject: [PATCH 09/36] More FQN --- appendices/migration82/deprecated.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index f6aa31c9e65a..6ca45e4deac8 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -18,7 +18,7 @@ Declaring the property (preferred). - Adding the #[AllowDynamicProperties] attribute to the class + Adding the #[\AllowDynamicProperties] attribute to the class (which also applies to all child classes). From 577d2b3379226b7f807eabfb38bf7dcbaa614603 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 11:13:52 +0100 Subject: [PATCH 10/36] Fix dba_open() signature Missed the new flags param --- appendices/migration82/other-changes.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index e8b25d9aad69..4a47f9f39c10 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -57,6 +57,7 @@ stringnullhandler&null; intpermission0644 intmap_size0 + intnullflags&null; From c0f90b7f178893c55e3e97009cc1b1cf88e3c245 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 11:26:22 +0100 Subject: [PATCH 11/36] Add some function links --- appendices/migration82/other-changes.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 4a47f9f39c10..6b81cd8ff6b7 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -39,7 +39,12 @@ Core - The str*cmp, str*pos, substr_compare functions, using binary safe string + The str*cmp, + strcmp, + strcasecmp, + strncmp, + strncasecmp, + str*pos, substr_compare functions, using binary safe string comparison now return -1, 0 and 1. From afa857c0022b1a2cb434713bb858af03f0aa3f60 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 11:29:38 +0100 Subject: [PATCH 12/36] Add INI link for mysqli.reconnect and asdd removal note --- appendices/migration82/other-changes.xml | 5 +++-- reference/mysqli/ini.xml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 6b81cd8ff6b7..ca057412b20c 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -162,8 +162,9 @@ - - The INI directive mysqli.reconnect has been removed. + The INI directive + mysqli.reconnect + has been removed. diff --git a/reference/mysqli/ini.xml b/reference/mysqli/ini.xml index 72132c28a660..dfdff5728ead 100644 --- a/reference/mysqli/ini.xml +++ b/reference/mysqli/ini.xml @@ -80,7 +80,7 @@ mysqli.reconnect "0" PHP_INI_SYSTEM - + Removed as of PHP 8.2.0 mysqli.rollback_on_cached_plink From c86964c7ad27edfc5ec89a48a2881a7eb0d31c32 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 11:31:35 +0100 Subject: [PATCH 13/36] Session SameSite INI link --- appendices/migration82/other-changes.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index ca057412b20c..197f03dae30f 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -195,9 +195,10 @@ Session - - Trying to change the SameSite cookie INI setting while the session is - active or output has already been sent will now fail and emit a warning. + Trying to change the + session.cookie_samesite + INI directive while the session is active or output has already been sent + will now fail and emit a warning. This aligns the behaviour with all other session INI settings. From 20cc05c14d234bdc34ed57358a9f6086c7a557c6 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 11:33:54 +0100 Subject: [PATCH 14/36] SQLite3.defensive INI setting link + note --- appendices/migration82/other-changes.xml | 4 ++-- reference/sqlite3/ini.xml | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 197f03dae30f..6be26f173358 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -207,8 +207,8 @@ SQLite3 - - sqlite3.defensive is now PHP_INI_USER. + sqlite3.defensive + is now PHP_INI_USER. diff --git a/reference/sqlite3/ini.xml b/reference/sqlite3/ini.xml index fbe3564f73c6..2bed6f444ad1 100644 --- a/reference/sqlite3/ini.xml +++ b/reference/sqlite3/ini.xml @@ -26,8 +26,12 @@ sqlite3.defensive 1 - PHP_INI_SYSTEM - Available as of PHP 7.2.17 and 7.3.4 for libsqlite ≥ 3.26.0. + PHP_INI_USER + + Available as of PHP 7.2.17 and 7.3.4 for libsqlite ≥ 3.26.0. + Prior to PHP 8.2.0 this setting was changeable only as + PHP_INI_SYSTEM. + From 21b06a80865387a40097312882cfcab0d0995082 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 12:41:29 +0100 Subject: [PATCH 15/36] Return type wording fix --- appendices/migration82/incompatible.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index cb9379b5987f..4262330e8363 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -7,12 +7,12 @@ DateTime::createFromImmutable now has a tentative - return of static, previously it was DateTime. + return type of static, previously it was DateTime. DateTimeImmutable::createFromMutable now has a tentative - return of static, previously it was DateTimeImmutable. + return type of static, previously it was DateTimeImmutable. @@ -106,12 +106,12 @@ SplFileObject::hasChildren now has a tentative - return of false, previously it was bool. + return type of false, previously it was bool. SplFileObject::getChildren now has a tentative - return of null, previously it was + return type of null, previously it was RecursiveIteratornull. From 7a7e37281e90901fdaaf04414a45c7453f274199 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 12:42:52 +0100 Subject: [PATCH 16/36] Add links in advance Co-authored-by: Christoph M. Becker --- appendices/migration82/incompatible.xml | 6 +++--- appendices/migration82/new-features.xml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index 4262330e8363..ee8deac7e99a 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -43,7 +43,7 @@ Standard - glob returns empty array if all paths are restricted by open_basedir. + glob returns an empty &array; if all paths are restricted by open_basedir. Previously the error was returned but that behavior was not consistent and did not work correctly for all patterns. @@ -116,8 +116,8 @@ - GlobIterator returns empty array if all paths are - restricted by open_basedir. Previously the error was returned but that + GlobIterator returns an empty &array; if all paths are + restricted by open_basedir. Previously the error was returned but that behavior was not consistent and did not work correctly. diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index c2d8b6ede2ba..22994f2b392b 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -19,7 +19,7 @@ error_log_mode INI directive - The error_log_mode INI directive has been added which allows setting + The error_log_mode INI directive has been added which allows setting the permissions for the error log file. @@ -110,7 +110,7 @@ OCI8 - Added the oci8.prefetch_lob_size INI directive and + Added the oci8.prefetch_lob_size INI directive and oci_set_prefetch_lob function to tune LOB query performance by reducing the number of round-trips between PHP and Oracle Databases when fetching LOBS. From 380a2c2b29d78b2e3a7763ad3c0b34881f62ebf1 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 12:43:47 +0100 Subject: [PATCH 17/36] Use simplelist Co-authored-by: Christoph M. Becker --- appendices/migration82/incompatible.xml | 28 +++++++------------------ 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index ee8deac7e99a..e50bd34662ce 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -82,26 +82,14 @@ The following methods now enforce their signature: - - - SplFileInfo::_bad_state_ex - - - SplFileObject::getCsvControl - - - SplFileObject::fflush - - - SplFileObject::ftell - - - SplFileObject::fgetc - - - SplFileObject::fpassthru - - + + SplFileInfo::_bad_state_ex + SplFileObject::getCsvControl + SplFileObject::fflush + SplFileObject::ftell + SplFileObject::fgetc + SplFileObject::fpassthru + From fafef3e3556624a41a7fff31fb32f796491a9432 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 12:46:20 +0100 Subject: [PATCH 18/36] Grammar + Markup changes Co-authored-by: Christoph M. Becker --- appendices/migration82/incompatible.xml | 4 ++-- appendices/migration82/new-features.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index e50bd34662ce..5dcbcbd1b125 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -59,13 +59,13 @@ ucwords, and str_ireplace are no longer locale-sensitive. They now perform ASCII case conversion, as if the locale were "C". - For localized versions of these functions are available in the MBString extension. + Localized versions of these functions are available in the MBString extension. Moreover, array_change_key_case, and sorting with SORT_FLAG_CASE now also use ASCII case conversion. - str_split returns an empty array for an empty string now. + str_split returns an empty &array; for an empty &string; now. Previously it returned an array with a single empty string entry. mb_str_split is not affected by this change as it was already behaving like that. diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index 22994f2b392b..d692ad20704b 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -6,7 +6,7 @@ PHP Core - SensitiveParameter attribute + SensitiveParameter Attribute Added the #[\SensitiveParameter] attribute to redact @@ -60,7 +60,7 @@ Constants in Traits - It is now possible to defines constants in traits. + It is now possible to define constants in traits. @@ -83,7 +83,7 @@ Added the CURLINFO_EFFECTIVE_METHOD option, - which returns the effective HTTP method in the return value of + which returns the effective HTTP method in the return value of curl_getinfo. From 88f865b2a0cb5e86eb5fb6d3329ba3590b31a3f6 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 12:47:20 +0100 Subject: [PATCH 19/36] Link to new cURL constants Co-authored-by: Christoph M. Becker --- appendices/migration82/new-features.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index d692ad20704b..d096873c3730 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -88,7 +88,7 @@ - Exposed multiple new constants from libcurl 7.62 to 7.80. + Exposed multiple new constants from libcurl 7.62 to 7.80. From 1f56229e1d76b1870683f54b77ae78ee6856698d Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 12:52:42 +0100 Subject: [PATCH 20/36] Fix markup --- appendices/migration82/new-features.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index d096873c3730..8ed3c53b00d7 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -110,7 +110,7 @@ OCI8 - Added the oci8.prefetch_lob_size INI directive and + Added the oci8.prefetch_lob_size INI directive and oci_set_prefetch_lob function to tune LOB query performance by reducing the number of round-trips between PHP and Oracle Databases when fetching LOBS. From f73706c4d8d25763d3d7c1f6f829e9b380320c5d Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 14:13:51 +0100 Subject: [PATCH 21/36] Add error_log_mode INI setting docs --- appendices/ini.list.xml | 6 ++++++ reference/errorfunc/ini.xml | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/appendices/ini.list.xml b/appendices/ini.list.xml index e1e4218ed672..65c5d3bfe0ae 100644 --- a/appendices/ini.list.xml +++ b/appendices/ini.list.xml @@ -278,6 +278,12 @@ PHP_INI_ALL + + error_log_mode + 0o644 + PHP_INI_ALL + Available as of PHP 8.2.0 + error_prepend_string NULL diff --git a/reference/errorfunc/ini.xml b/reference/errorfunc/ini.xml index 48663f365251..541d38c5c4fa 100644 --- a/reference/errorfunc/ini.xml +++ b/reference/errorfunc/ini.xml @@ -120,6 +120,12 @@ PHP_INI_ALL + + error_log_mode + 0o644 + PHP_INI_ALL + Available as of PHP 8.2.0 + syslog.facility "LOG_USER" @@ -482,6 +488,19 @@ + + + error_log_mode + int + + + + File mode for the file described set in + error_log. + + + + syslog.facility From ca567fbff7b2931cc0ba4a3daaf009bd64ece01b Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 14:15:49 +0100 Subject: [PATCH 22/36] Cleanup binary string comp section --- appendices/migration82/other-changes.xml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 6be26f173358..fc5648291b25 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -39,12 +39,9 @@ Core - The str*cmp, - strcmp, - strcasecmp, - strncmp, - strncasecmp, - str*pos, substr_compare functions, using binary safe string + The strcmp, strcasecmp, + strncmp, strncasecmp, and + substr_compare functions, using binary safe string comparison now return -1, 0 and 1. From b15cce405610525f508da7dc60992b8e16ff45f9 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 7 Sep 2022 14:39:19 +0100 Subject: [PATCH 23/36] Add some INI links --- appendices/migration82/other-changes.xml | 117 +++++++++++------------ 1 file changed, 57 insertions(+), 60 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index fc5648291b25..d0a5adda2fc8 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -275,10 +275,10 @@ - bcmath.scale + bcmath.scale - com.code_page + com.code_page default_socket_timeout @@ -290,10 +290,10 @@ hard_timeout - intl.error_level + intl.error_level - ldap.max_links + ldap.max_links max_input_nesting_level @@ -308,58 +308,55 @@ mbstring.regex_stack_limit - mysqli.allow_local_infile + mysqli.allow_local_infile - mysqli.allow_persistent + mysqli.allow_persistent - mysqli.default_port + mysqli.default_port - mysqli.max_links + mysqli.max_links - mysqli.max_persistent + mysqli.max_persistent - mysqli.reconnect + mysqli.rollback_on_cached_plink - mysqli.rollback_on_cached_plink + mysqlnd.log_mask - mysqlnd.log_mask + mysqlnd.mempool_default_size - mysqlnd.mempool_default_size + mysqlnd.net_read_buffer_size - mysqlnd.net_read_buffer_size + mysqlnd.net_read_timeout - mysqlnd.net_read_timeout + oci8.default_prefetch - oci8.default_prefetch + oci8.max_persistent - oci8.max_persistent + oci8.persistent_timeout - oci8.persistent_timeout + oci8.ping_interval - oci8.ping_interval + oci8.prefetch_lob_size - oci8.prefetch_lob_size + oci8.privileged_connect - oci8.privileged_connect - - - oci8.statement_cache_size + oci8.statement_cache_size odbc.allow_persistent @@ -383,91 +380,91 @@ odbc.max_persistent - opcache.consistency_checks + opcache.consistency_checks - opcache.file_update_protection + opcache.file_update_protection - opcache.force_restart_timeout + opcache.force_restart_timeout - opcache.interned_strings_buffer + opcache.interned_strings_buffer - opcache.jit_bisect_limit + opcache.jit_bisect_limit - opcache.jit_blacklist_root_trace + opcache.jit_blacklist_root_trace - opcache.jit_blacklist_side_trace + opcache.jit_blacklist_side_trace - opcache.jit_debug + opcache.jit_debug - opcache.jit_hot_func + opcache.jit_hot_func - opcache.jit_hot_loop + opcache.jit_hot_loop - opcache.jit_hot_return + opcache.jit_hot_return - opcache.jit_hot_side_exit + opcache.jit_hot_side_exit - opcache.jit_max_exit_counters + opcache.jit_max_exit_counters - opcache.jit_max_loop_unrolls + opcache.jit_max_loop_unrolls - opcache.jit_max_polymorphic_calls + opcache.jit_max_polymorphic_calls - opcache.jit_max_recursive_calls + opcache.jit_max_recursive_calls - opcache.jit_max_recursive_returns + opcache.jit_max_recursive_returns - opcache.jit_max_root_traces + opcache.jit_max_root_traces - opcache.jit_max_side_traces + opcache.jit_max_side_traces - opcache.log_verbosity_level + opcache.log_verbosity_level - opcache.max_file_size + opcache.max_file_size - opcache.opt_debug_level + opcache.opt_debug_level - opcache.optimization_level + opcache.optimization_level - opcache.revalidate_freq + opcache.revalidate_freq output_buffering - pcre.backtrack_limit + pcre.backtrack_limit - pcre.recursion_limit + pcre.recursion_limit - pgsql.max_links + pgsql.max_links - pgsql.max_persistent + pgsql.max_persistent post_max_size @@ -479,25 +476,25 @@ realpath_cache_ttl - session.cache_expire + session.cache_expire - session.cookie_lifetime + session.cookie_lifetime - session.gc_divisor + session.gc_divisor - session.gc_maxlifetime + session.gc_maxlifetime - session.gc_probability + session.gc_probability - soap.wsdl_cache_limit + soap.wsdl_cache_limit - soap.wsdl_cache_ttl + soap.wsdl_cache_ttl unserialize_max_depth @@ -515,7 +512,7 @@ zend.assertions - zlib.output_compression_level + zlib.output_compression_level From 6e142fde8f91e0d70516207f36786f4ee107c5d5 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:24:20 +0100 Subject: [PATCH 24/36] Restructure libmysql removal --- appendices/migration82/other-changes.xml | 33 ++++++++---------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index d0a5adda2fc8..2fd2a97badea 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -147,29 +147,18 @@ MySQLi - The support for libmysql has been removed. It's no longer possible to compile - mysqli with libmysql and all relevant functionality has been removed. + The support for libmysql has been removed. It is therefore no longer + possible to compile mysqli with libmysql. + The mysqli extension can therefore only be compiled with mysqlnd. + All relevant libmysqli functionality not available with mysqlnd has thus been removed: + + The reconnect property of mysqli_driver + + The mysqli.reconnect INI directive + + The MYSQLI_IS_MARIADB constant has been deprecated + - - - - - The reconnect property of mysqli_driver has been removed. - - - - - The INI directive - mysqli.reconnect - has been removed. - - - - - The constant MYSQLI_IS_MARIADB has been deprecated. - - - From 51b91790fa84a60f2d53eadc303ef9e719e5ec4c Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:27:20 +0100 Subject: [PATCH 25/36] Use simplelist in new functions --- appendices/migration82/new-functions.xml | 92 +++++++----------------- 1 file changed, 26 insertions(+), 66 deletions(-) diff --git a/appendices/migration82/new-functions.xml b/appendices/migration82/new-functions.xml index 7c03c20aaf36..2048733c5270 100644 --- a/appendices/migration82/new-functions.xml +++ b/appendices/migration82/new-functions.xml @@ -4,99 +4,59 @@ cURL - - - - - curl_upkeep - - - + + curl_upkeep + MySQLi - - - - - mysqli_execute_query - - - + + mysqli_execute_query + OpenSSL - - - - - openssl_cipher_key_length - - - + + openssl_cipher_key_length + Reflection - - - - - ReflectionFunction::isAnonymous - - - - - ReflectionMethod::hasPrototype - - - + + + ReflectionFunction::isAnonymous + + ReflectionMethod::hasPrototype + Sodium - XChaCha20 - - - - sodium_crypto_stream_xchacha20_xor_ic - - - + XChaCha20 + + sodium_crypto_stream_xchacha20_xor_ic + Standard - - - - - memory_reset_peak_usage - - - - - ini_parse_quantity - - - + + memory_reset_peak_usage + ini_parse_quantity + XML - - - - - libxml_get_external_entity_loader - - - + + libxml_get_external_entity_loader + From 49ffbf6e7d559e62b7aa1b0c9cb839138b0fbe75 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:29:10 +0100 Subject: [PATCH 26/36] Use simplelist for Zip methods --- appendices/migration82/other-changes.xml | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 2fd2a97badea..f514eccce725 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -231,23 +231,11 @@ The Zip extension has been updated to version 1.20.0, which adds the following methods: - - - - ZipArchive::clearError - - - - - ZipArchive::getStreamName - - - - - ZipArchive::getStreamIndex - - - + + ZipArchive::clearError + ZipArchive::getStreamName + ZipArchive::getStreamIndex + From a69fae1294a4efc826fb8debc4d1193245627ba9 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:30:49 +0100 Subject: [PATCH 27/36] Restrcuture Tidy section --- appendices/migration82/other-changes.xml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index f514eccce725..f079dd3b4a13 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -211,18 +211,10 @@ Tidy - - - - Properties of tidy are now properly declared. - - - - - Properties of tidyNode are now properly declared as readonly. - - - + + The properties of the tidy class are now properly declared. + And those of the tidyNode class are now properly declared as readonly. + From c45f5037f08849369d17f8e2824b3dff18e5631f Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:32:45 +0100 Subject: [PATCH 28/36] Convert INI list to simplelist --- appendices/migration82/other-changes.xml | 324 ++++++----------------- 1 file changed, 82 insertions(+), 242 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index f079dd3b4a13..d67919043a39 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -242,248 +242,88 @@ This affects the following settings: - - - bcmath.scale - - - com.code_page - - - default_socket_timeout - - - fiber.stack_size - - - hard_timeout - - - intl.error_level - - - ldap.max_links - - - max_input_nesting_level - - - max_input_vars - - - mbstring.regex_retry_limit - - - mbstring.regex_stack_limit - - - mysqli.allow_local_infile - - - mysqli.allow_persistent - - - mysqli.default_port - - - mysqli.max_links - - - mysqli.max_persistent - - - mysqli.rollback_on_cached_plink - - - mysqlnd.log_mask - - - mysqlnd.mempool_default_size - - - mysqlnd.net_read_buffer_size - - - mysqlnd.net_read_timeout - - - oci8.default_prefetch - - - oci8.max_persistent - - - oci8.persistent_timeout - - - oci8.ping_interval - - - oci8.prefetch_lob_size - - - oci8.privileged_connect - - - oci8.statement_cache_size - - - odbc.allow_persistent - - - odbc.check_persistent - - - odbc.defaultbinmode - - - odbc.default_cursortype - - - odbc.defaultlrl - - - odbc.max_links - - - odbc.max_persistent - - - opcache.consistency_checks - - - opcache.file_update_protection - - - opcache.force_restart_timeout - - - opcache.interned_strings_buffer - - - opcache.jit_bisect_limit - - - opcache.jit_blacklist_root_trace - - - opcache.jit_blacklist_side_trace - - - opcache.jit_debug - - - opcache.jit_hot_func - - - opcache.jit_hot_loop - - - opcache.jit_hot_return - - - opcache.jit_hot_side_exit - - - opcache.jit_max_exit_counters - - - opcache.jit_max_loop_unrolls - - - opcache.jit_max_polymorphic_calls - - - opcache.jit_max_recursive_calls - - - opcache.jit_max_recursive_returns - - - opcache.jit_max_root_traces - - - opcache.jit_max_side_traces - - - opcache.log_verbosity_level - - - opcache.max_file_size - - - opcache.opt_debug_level - - - opcache.optimization_level - - - opcache.revalidate_freq - - - output_buffering - - - pcre.backtrack_limit - - - pcre.recursion_limit - - - pgsql.max_links - - - pgsql.max_persistent - - - post_max_size - - - realpath_cache_size - - - realpath_cache_ttl - - - session.cache_expire - - - session.cookie_lifetime - - - session.gc_divisor - - - session.gc_maxlifetime - - - session.gc_probability - - - soap.wsdl_cache_limit - - - soap.wsdl_cache_ttl - - - unserialize_max_depth - - - upload_max_filesize - - - user_ini.cache_ttl - - - xmlrpc_error_number - - - zend.assertions - - - zlib.output_compression_level - - + + bcmath.scale + com.code_page + default_socket_timeout + fiber.stack_size + hard_timeout + intl.error_level + ldap.max_links + max_input_nesting_level + max_input_vars + mbstring.regex_retry_limit + mbstring.regex_stack_limit + mysqli.allow_local_infile + mysqli.allow_persistent + mysqli.default_port + mysqli.max_links + mysqli.max_persistent + mysqli.rollback_on_cached_plink + mysqlnd.log_mask + mysqlnd.mempool_default_size + mysqlnd.net_read_buffer_size + mysqlnd.net_read_timeout + oci8.default_prefetch + oci8.max_persistent + oci8.persistent_timeout + oci8.ping_interval + oci8.prefetch_lob_size + oci8.privileged_connect + oci8.statement_cache_size + odbc.allow_persistent + odbc.check_persistent + odbc.defaultbinmode + odbc.default_cursortype + odbc.defaultlrl + odbc.max_links + odbc.max_persistent + opcache.consistency_checks + opcache.file_update_protection + opcache.force_restart_timeout + opcache.interned_strings_buffer + opcache.jit_bisect_limit + opcache.jit_blacklist_root_trace + opcache.jit_blacklist_side_trace + opcache.jit_debug + opcache.jit_hot_func + opcache.jit_hot_loop + opcache.jit_hot_return + opcache.jit_hot_side_exit + opcache.jit_max_exit_counters + opcache.jit_max_loop_unrolls + opcache.jit_max_polymorphic_calls + opcache.jit_max_recursive_calls + opcache.jit_max_recursive_returns + opcache.jit_max_root_traces + opcache.jit_max_side_traces + opcache.log_verbosity_level + opcache.max_file_size + opcache.opt_debug_level + opcache.optimization_level + opcache.revalidate_freq + output_buffering + pcre.backtrack_limit + pcre.recursion_limit + pgsql.max_links + pgsql.max_persistent + post_max_size + realpath_cache_size + realpath_cache_ttl + session.cache_expire + session.cookie_lifetime + session.gc_divisor + session.gc_maxlifetime + session.gc_probability + soap.wsdl_cache_limit + soap.wsdl_cache_ttl + unserialize_max_depth + upload_max_filesize + user_ini.cache_ttl + xmlrpc_error_number + zend.assertions + zlib.output_compression_level + From d637d3b99e53d803cc7220732dceabfcbb456051 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:34:36 +0100 Subject: [PATCH 29/36] Acronym tags Co-authored-by: Christoph M. Becker --- appendices/migration82/other-changes.xml | 2 +- appendices/migration82/windows-support.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index d67919043a39..69c3cfc5c4a3 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -88,7 +88,7 @@ random_bytes and random_int - now throw a \Random\RandomException on CSPRNG failures. + now throw a \Random\RandomException on CSPRNG failures. Previously a plain \Exception was thrown instead. diff --git a/appendices/migration82/windows-support.xml b/appendices/migration82/windows-support.xml index f7f6fbf8b46a..50c16ed0de6e 100644 --- a/appendices/migration82/windows-support.xml +++ b/appendices/migration82/windows-support.xml @@ -27,7 +27,7 @@ Zip The Zip extension is upgraded to version 1.21.0, - and is now built as shared library (DLL) by default. + and is now built as shared library (DLL) by default. From 1a68d2d823c0d717835d773ef93456de034a8ec8 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:36:11 +0100 Subject: [PATCH 30/36] Phrasing + markup nits Co-authored-by: Christoph M. Becker --- appendices/migration82/other-changes.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 69c3cfc5c4a3..9edb1233c6e3 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -25,7 +25,7 @@ CLI - The STDOUT, STDERR and STDIN are no longer closed on resource destruction + The STDOUT, STDERR and STDIN streams are no longer closed on resource destruction which is mostly when the CLI finishes. It is however still possible to explicitly close those streams using fclose and similar. @@ -42,7 +42,7 @@ The strcmp, strcasecmp, strncmp, strncasecmp, and substr_compare functions, using binary safe string - comparison now return -1, 0 and 1. + comparison now return -1, 0 and 1. From 3230f0d48960bee1eeecf0e9d12bbde5e33a37a9 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 08:37:55 +0100 Subject: [PATCH 31/36] DNF acronym tag --- appendices/migration82/new-features.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index 8ed3c53b00d7..9623b2a5dc09 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -51,7 +51,7 @@ It is now possible to combine intersection and union types. - The type needs to be written in Disjoint Normal Form (DNF). + The type needs to be written in DNF. From 87d435ef63d19d02766453dde031400435e50ae9 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 13 Sep 2022 09:16:27 +0100 Subject: [PATCH 32/36] Link to missing INI directives Not all are there as some turn out to be undocumented --- appendices/migration82/other-changes.xml | 40 ++++++++++++------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/appendices/migration82/other-changes.xml b/appendices/migration82/other-changes.xml index 9edb1233c6e3..348e22d3b6b4 100644 --- a/appendices/migration82/other-changes.xml +++ b/appendices/migration82/other-changes.xml @@ -241,17 +241,17 @@ For backwards compatibility, interpretation of these values has not changed. This affects the following settings: - + bcmath.scale com.code_page - default_socket_timeout + default_socket_timeout fiber.stack_size - hard_timeout + hard_timeout intl.error_level ldap.max_links - max_input_nesting_level - max_input_vars + max_input_nesting_level + max_input_vars mbstring.regex_retry_limit mbstring.regex_stack_limit mysqli.allow_local_infile @@ -271,13 +271,13 @@ oci8.prefetch_lob_size oci8.privileged_connect oci8.statement_cache_size - odbc.allow_persistent - odbc.check_persistent - odbc.defaultbinmode - odbc.default_cursortype - odbc.defaultlrl - odbc.max_links - odbc.max_persistent + odbc.allow_persistent + odbc.check_persistent + odbc.max_persistent + odbc.max_links + odbc.defaultbinmode + odbc.default_cursortype + odbc.defaultlrl opcache.consistency_checks opcache.file_update_protection opcache.force_restart_timeout @@ -302,14 +302,14 @@ opcache.opt_debug_level opcache.optimization_level opcache.revalidate_freq - output_buffering + output_buffering pcre.backtrack_limit pcre.recursion_limit pgsql.max_links pgsql.max_persistent - post_max_size - realpath_cache_size - realpath_cache_ttl + post_max_size + realpath_cache_size + realpath_cache_ttl session.cache_expire session.cookie_lifetime session.gc_divisor @@ -318,10 +318,10 @@ soap.wsdl_cache_limit soap.wsdl_cache_ttl unserialize_max_depth - upload_max_filesize - user_ini.cache_ttl - xmlrpc_error_number - zend.assertions + upload_max_filesize + user_ini.cache_ttl + xmlrpc_error_number + zend.assertions zlib.output_compression_level From cc208e03fd9ba8baa8641a67e9947dd4d48c932b Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Sat, 24 Sep 2022 12:22:31 +0100 Subject: [PATCH 33/36] Improve glob message --- appendices/migration82/incompatible.xml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index 5dcbcbd1b125..339041139f0b 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -43,9 +43,11 @@ Standard - glob returns an empty &array; if all paths are restricted by open_basedir. - Previously the error was returned but that behavior was not consistent and - did not work correctly for all patterns. + glob now returns an empty &array; if all paths are + restricted by open_basedir. + Previously it returned &false;. + Moreover, a warning is now emitted even if only some paths are restricted by + open_basedir. @@ -104,9 +106,11 @@ - GlobIterator returns an empty &array; if all paths are - restricted by open_basedir. Previously the error was returned but that - behavior was not consistent and did not work correctly. + GlobIterator now returns an empty &array; if all + paths are restricted by open_basedir. + Previously it returned &false;. + Moreover, a warning is now emitted even if only some paths are restricted by + open_basedir. From cd8fca8975bbd4cc4e807f282217a1fb10bcf76d Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Mon, 26 Sep 2022 10:29:05 +0100 Subject: [PATCH 34/36] Fix wording for true type addition Co-authored-by: Christoph M. Becker --- appendices/migration82/new-features.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appendices/migration82/new-features.xml b/appendices/migration82/new-features.xml index 9623b2a5dc09..77f315497963 100644 --- a/appendices/migration82/new-features.xml +++ b/appendices/migration82/new-features.xml @@ -45,7 +45,7 @@ - The true has been added. + The true type has been added. From 3767b5abff8143fc01b87e9dbedf1b8901f70ad1 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Mon, 26 Sep 2022 10:30:18 +0100 Subject: [PATCH 35/36] Add links Co-authored-by: Christoph M. Becker --- appendices/migration82/incompatible.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index 339041139f0b..01be060abf02 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -34,7 +34,7 @@ The PDO_ODBC extension also escapes the username and password when a - connection string is passed. See the change to the ODBC extension for + connection string is passed. See the change to the ODBC extension for further details. @@ -61,7 +61,7 @@ ucwords, and str_ireplace are no longer locale-sensitive. They now perform ASCII case conversion, as if the locale were "C". - Localized versions of these functions are available in the MBString extension. + Localized versions of these functions are available in the MBString extension. Moreover, array_change_key_case, and sorting with SORT_FLAG_CASE now also use ASCII case conversion. From c5b0601019eb3522023967c5d49d59b85dd92979 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Mon, 26 Sep 2022 10:37:11 +0100 Subject: [PATCH 36/36] MBString casing fixes --- appendices/migration82/deprecated.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appendices/migration82/deprecated.xml b/appendices/migration82/deprecated.xml index 6ca45e4deac8..6bd7aafc6ee4 100644 --- a/appendices/migration82/deprecated.xml +++ b/appendices/migration82/deprecated.xml @@ -74,11 +74,11 @@ Usage of the QPrint, Base64, Uuencode, and HTML-ENTITIES - 'text encodings' is deprecated for all Mbstring functions. + 'text encodings' is deprecated for all MBString functions. - Unlike all the other text encodings supported by Mbstring, + Unlike all the other text encodings supported by MBString, these do not encode a sequence of Unicode codepoints, but rather a sequence of raw bytes. - It is not clear what the correct return values for most Mbstring functions + It is not clear what the correct return values for most MBString functions should be when one of these non-encodings is specified. Moreover, PHP has separate, built-in implementations of all of them; for example, UUencoded data can be handled using