@@ -133,7 +133,7 @@ PHP 8.6 UPGRADE NOTES
133133 unchanged. Previously, NUL bytes were silently accepted: for cookie_path
134134 and cookie_domain this caused the SAPI to drop the Set-Cookie header; for
135135 cache_limiter the value was silently truncated at the NUL byte.
136- . A ValueError is not thrown if $name is a string containing NUL bytes in
136+ . A ValueError is thrown if $name is a string containing NUL bytes in
137137 session_module_name().
138138 . session_encode() now returns an empty string instead of false for empty
139139 sessions. It only returns false now when the session data could not be
@@ -199,6 +199,16 @@ PHP 8.6 UPGRADE NOTES
199199 rules" message. Code that compares the exact message may need to be
200200 updated.
201201
202+ - Sockets:
203+ . socket_set_option() with SO_ATTACH_REUSEPORT_CBPF now requires an int
204+ $value and a $level of SOL_SOCKET. Any other value type throws a TypeError
205+ instead of being coerced, and any other level raises a warning and returns
206+ false.
207+ . socket_set_option() with SO_ATTACH_REUSEPORT_CBPF and a $value of 0 now
208+ detaches the reuseport filter through SO_DETACH_REUSEPORT_BPF. It
209+ previously used SO_DETACH_BPF, an alias of SO_DETACH_FILTER, which left the
210+ reuseport program attached.
211+
202212- Sodium:
203213 . The password-hashing functions sodium_crypto_pwhash(),
204214 sodium_crypto_pwhash_str(),
@@ -309,6 +319,9 @@ PHP 8.6 UPGRADE NOTES
309319 when the "remove_all_path" option is not of type bool, or when the
310320 "comp_method", "comp_flags", or "enc_method" options are not of type int
311321 (numeric strings are coerced), instead of emitting a warning.
322+ . Serializing or unserializing a ZipArchive now throws an Exception. A
323+ subclass can override __serialize() and __unserialize() to round-trip
324+ through ZipArchive::closeString() and ZipArchive::openString().
312325
313326- Zlib:
314327 . deflate_init() now raises a TypeError when the value for option "level",
@@ -484,10 +497,10 @@ PHP 8.6 UPGRADE NOTES
484497 RFC: https://wiki.php.net/rfc/uri_followup#uri_type_detection
485498 . Added Uri\Rfc3986\Uri::getHostType() and Uri\WhatWg\Url::getHostType().
486499 RFC: https://wiki.php.net/rfc/uri_followup#host_type_detection
487- . Added Uri\Rfc3986\UriBuilder.
488- RFC: https://wiki.php.net/rfc/uri_followup#uri_building
489- . Added Uri\WhatWg\UrlBuilder.
500+ . Added Uri\Rfc3986\UriBuilder and Uri\WhatWg\UrlBuilder.
490501 RFC: https://wiki.php.net/rfc/uri_followup#uri_building
502+ . Added Uri\url_percent_encode().
503+ RFC: https://wiki.php.net/rfc/uri_followup#percent-encoding_support
491504
492505========================================
4935063. Changes in SAPI modules
@@ -629,6 +642,12 @@ PHP 8.6 UPGRADE NOTES
6296425. Changed Functions
630643========================================
631644
645+ - Filter:
646+ . filter_var_array() return type has been narrowed from array|false|null to
647+ array|false. The function always establishes an array before filtering, so
648+ null was never returned. filter_input_array() is unaffected: it still
649+ returns null when the requested superglobal does not exist.
650+
632651- GMP:
633652 . gmp_fact() now throws a ValueError if $num does not fit into an unsigned
634653 long.
@@ -639,6 +658,10 @@ PHP 8.6 UPGRADE NOTES
639658 . gmp_powm() modulo-by-zero now raises a DivisionByZeroError whose message
640659 includes the function name and argument index ($modulus).
641660
661+ - LDAP:
662+ . ldap_free_result() return type has been narrowed from bool to true. The
663+ function already always returned true.
664+
642665- MySQLi:
643666 . The return structure of mysqli_get_charset() no longer contains the
644667 undocumented "comment" element. The value of "charsetnr" is now set to a
@@ -800,7 +823,7 @@ PHP 8.6 UPGRADE NOTES
800823 . StreamPollHandle
801824
802825- URI:
803- . Uri\Rfc3986\UriBuilder
826+ . Uri\Rfc3986\UriBuilder and Uri\WhatWg\UrlBuilder
804827 RFC: https://wiki.php.net/rfc/uri_followup#uri_building
805828
806829========================================
@@ -860,6 +883,29 @@ PHP 8.6 UPGRADE NOTES
860883 . EAI_ALLDONE.
861884 . EAI_INTR.
862885 . EAI_IDN_ENCODE.
886+ . SO_DETACH_REUSEPORT_BPF (Linux only).
887+
888+ - Sodium:
889+ . SODIUM_CRYPTO_IPCRYPT_BYTES.
890+ . SODIUM_CRYPTO_IPCRYPT_KEYBYTES.
891+ . SODIUM_CRYPTO_IPCRYPT_ND_KEYBYTES.
892+ . SODIUM_CRYPTO_IPCRYPT_ND_TWEAKBYTES.
893+ . SODIUM_CRYPTO_IPCRYPT_ND_INPUTBYTES.
894+ . SODIUM_CRYPTO_IPCRYPT_ND_OUTPUTBYTES.
895+ . SODIUM_CRYPTO_IPCRYPT_NDX_KEYBYTES.
896+ . SODIUM_CRYPTO_IPCRYPT_NDX_TWEAKBYTES.
897+ . SODIUM_CRYPTO_IPCRYPT_NDX_INPUTBYTES.
898+ . SODIUM_CRYPTO_IPCRYPT_NDX_OUTPUTBYTES.
899+ . SODIUM_CRYPTO_IPCRYPT_PFX_KEYBYTES.
900+ . SODIUM_CRYPTO_IPCRYPT_PFX_BYTES.
901+ . SODIUM_CRYPTO_XOF_SHAKE128_BLOCKBYTES.
902+ . SODIUM_CRYPTO_XOF_SHAKE128_STATEBYTES.
903+ . SODIUM_CRYPTO_XOF_SHAKE256_BLOCKBYTES.
904+ . SODIUM_CRYPTO_XOF_SHAKE256_STATEBYTES.
905+ . SODIUM_CRYPTO_XOF_TURBOSHAKE128_BLOCKBYTES.
906+ . SODIUM_CRYPTO_XOF_TURBOSHAKE128_STATEBYTES.
907+ . SODIUM_CRYPTO_XOF_TURBOSHAKE256_BLOCKBYTES.
908+ . SODIUM_CRYPTO_XOF_TURBOSHAKE256_STATEBYTES.
863909
864910- Standard:
865911 . ARRAY_FILTER_USE_VALUE.
@@ -871,6 +917,15 @@ PHP 8.6 UPGRADE NOTES
87191711. Changes to INI File Handling
872918========================================
873919
920+ - Core:
921+ . The error_include_args INI option has been added to make the display of
922+ function arguments consistent in errors; it is off by default. Previously,
923+ some functions shown a parameter in the error that was up to each call to
924+ the internal error function. Now, all parameters as were actually passed to
925+ the function will be displayed. This uses the same infrastructure as stack
926+ traces, so i.e. sensitive parameters will not be displayed, and strings
927+ will be truncated according to zend.exception_string_param_max_len.
928+
874929- Mbstring:
875930 . The mbstring.detect_order INI directive now updates the internal detection
876931 order when changed at runtime via ini_set(). Previously, runtime changes
@@ -940,6 +995,9 @@ PHP 8.6 UPGRADE NOTES
940995 . Made splitText() faster and consume less memory.
941996
942997- GD:
998+ . imagebmp(), imagewbmp(), imagegd(), and imagegd2() now buffer output when
999+ writing to PHP streams, significantly improving performance when writing
1000+ images to files.
9431001 . Improved performance of imagegrabscreen() and imagegrabwindow() on
9441002 Windows.
9451003
@@ -960,6 +1018,7 @@ PHP 8.6 UPGRADE NOTES
9601018
9611019- Standard:
9621020 . Improved performance of array_chunk() when not preserving keys.
1021+ . Improved performance of sorting single-element arrays.
9631022 . Improved performance of array_fill_keys().
9641023 . Improved performance of array_intersect().
9651024 . Improved performance of array_map() with multiple arrays passed.
0 commit comments