PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.5.0alpha1 - BCMath: . Simplify `bc_divide()` code. (SakiTakamachi) . If the result is 0, n_scale is set to 0. (SakiTakamachi) . If size of BC_VECTOR array is within 64 bytes, stack area is now used. (SakiTakamachi) - CLI: . Add --ini=diff to print INI settings changed from the builtin default. (timwolla) . Drop support for -z CLI/CGI flag. (nielsdos) . Fixed GH-17956 - development server 404 page does not adapt to mobiles. (pascalchevrel) - COM: . Fixed property access of PHP objects wrapped in variant. (cmb) . Fixed method calls for PHP objects wrapped in variant. (cmb) - Core: . Fixed bug GH-16665 (\array and \callable should not be usable in class_alias). (nielsdos) . Added PHP_BUILD_DATE constant. (cmb) . Added support for Closures and first class callables in constant expressions. (timwolla, Volker Dusch) . Use `clock_gettime_nsec_np()` for high resolution timer on macOS if available. (timwolla) . Implement GH-15680 (Enhance zend_dump_op_array to properly represent non-printable characters in string literals). (nielsdos, WangYihang) . Add support for backtraces for fatal errors. (enorris) . Fixed bug GH-17442 (Engine UAF with reference assign and dtor). (nielsdos) . Improved error message of UnhandledMatchError for zend.exception_string_param_max_len=0. (timwolla) . Fixed bug GH-17959 (Relax missing trait fatal error to error exception). (ilutov) . Fixed bug GH-18033 (NULL-ptr dereference when using register_tick_function in destructor). (nielsdos) . Fixed bug GH-18026 (Improve "expecting token" error for ampersand). (ilutov) . Added the #[\NoDiscard] attribute to indicate that a function's return value is important and should be consumed. (timwolla, Volker Dusch) . Added the (void) cast to indicate that not using a value is intentional. (timwolla, Volker Dusch) . Added get_error_handler(), get_exception_handler() functions. (Arnaud) . Fixed bug GH-15753 and GH-16198 (Bind traits before parent class). (ilutov) - Curl: . Added curl_multi_get_handles(). (timwolla) . Added curl_share_init_persistent(). (enorris) . Added CURLINFO_USED_PROXY, CURLINFO_HTTPAUTH_USED, and CURLINFO_PROXYAUTH_USED support to curl_getinfo. (Ayesh Karunaratne) - Date: . Fix undefined behaviour problems regarding integer overflow in extreme edge cases. (nielsdos, cmb, ilutov) - DOM: . Added Dom\Element::$outerHTML. (nielsdos) . Added Dom\Element::insertAdjacentHTML(). (nielsdos) - Enchant: . Added enchant_dict_remove_from_session(). (nielsdos) . Added enchant_dict_remove(). (nielsdos) - Fileinfo: . Upgrade to file 5.46. (nielsdos) - FPM: . Fixed GH-17645 (FPM with httpd ProxyPass does not decode script path). (Jakub Zelenka) - GD: . Fixed bug #68629 (Transparent artifacts when using imagerotate). (pierre, cmb) . Fixed bug #64823 (ZTS GD fails to to find system TrueType font). (cmb) - Intl: . Bumped ICU requirement to ICU >= 57.1. (cmb) . IntlDateFormatter::setTimeZone()/datefmt_set_timezone() throws an exception with uninitialised classes or clone failure. (David Carlier) . Added DECIMAL_COMPACT_SHORT/DECIMAL_COMPACT_LONG for NumberFormatter class. (BogdanUngureanu) - MySQLi: . Fixed bugs GH-17900 and GH-8084 (calling mysqli::__construct twice). (nielsdos) - MySQLnd: . Added mysqlnd.collect_memory_statistics to ini quick reference. (hauk92) - OPcache: . Fixed ZTS OPcache build on Cygwin. (cmb) . Added opcache.file_cache_read_only. (Samuel Melrose) - Output: . Fixed calculation of aligned buffer size. (cmb) - PCRE: . Upgraded to pre2lib from 10.44 to 10.45. (nielsdos) . Remove PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK from pcre compile options. (mvorisek) - PDO_PGSQL: . Added Iterable support for PDO::pgsqlCopyFromArray. (KentarouTakeda) . Implement GH-15387 Pdo\Pgsql::setAttribute(PDO::ATTR_PREFETCH, 0) or Pdo\Pgsql::prepare(…, [ PDO::ATTR_PREFETCH => 0 ]) make fetch() lazy instead of storing the whole result set in memory (Guillaume Outters) - PGSQL: . Added pg_close_stmt to close a prepared statement while allowing its name to be reused. (David Carlier) . Added Iterable support for pgsql_copy_from. (David Carlier) . pg_connect checks if connection_string contains any null byte, pg_close_stmt check if the statement contains any null byte. (David Carlier) . Added pg_service to get the connection current service identifier. (David Carlier) - POSIX: . Added POSIX_SC_OPEN_MAX constant to get the number of file descriptors a process can handle. (David Carlier) . posix_ttyname() sets last_error to EBADF on invalid file descriptors, posix_isatty() raises E_WARNING on invalid file descriptors, posix_fpathconf checks invalid file descriptors. (David Carlier) - Random: . Moves from /dev/urandom usage to arc4random_buf on Haiku. (David Carlier) - Reflection: . Added ReflectionConstant::getExtension() and ::getExtensionName(). (DanielEScherzer) . Fixed bug GH-12856 (ReflectionClass::getStaticPropertyValue() returns UNDEF zval for uninitialized typed properties). (nielsdos) . Fixed bug GH-15766 (ReflectionClass::toString() should have better output for enums). (DanielEScherzer) - Session: . session_start() throws a ValueError on option argument if not a hashmap or a TypeError if read_and_close value is not compatible with int. (David Carlier) - SimpleXML: . Fixed bug GH-12231 (SimpleXML xpath should warn when returning other return types than node lists). (nielsdos) - SNMP: . snmpget, snmpset, snmp_get2, snmp_set2, snmp_get3, snmp_set3 and SNMP::__construct() throw an exception on invalid hostname, community timeout and retries arguments. (David Carlier) - SOAP: . Fixed bug #49169 (SoapServer calls wrong function, although "SOAP action" header is correct). (nielsdos) - Sockets: . Added IPPROTO_ICMP/IPPROTO_ICMPV6 to create raw socket for ICMP usage. (David Carlier) . Added TCP_FUNCTION_BLK to change the TCP stack algorithm on FreeBSD. (David Carlier) . socket_set_option() catches possible overflow with SO_RCVTIMEO/SO_SNDTIMEO with timeout setting on windows. (David Carlier) . Added TCP_FUNCTION_ALIAS, TCP_REUSPORT_LB_NUMA, TCP_REUSPORT_LB_NUMA_NODOM, TCP_REUSPORT_LB_CURDOM, TCP_BBR_ALGORITHM constants. . socket_create_listen() throws an exception on invalid port value. (David Carlier) . socket_bind() throws an exception on invalid port value. (David Carlier) . socket_sendto() throws an exception on invalid port value. (David Carlier) . socket_addrinfo_lookup throws an exception on invalid hints value types. (David Carlier) . socket_addrinfo_lookup throws an exception if any of the hints value overflows. (David Carlier) . socket_addrinfo_lookup throws an exception if one or more hints entries has an index as numeric. (David Carlier) . socket_set_option with the options MCAST_LEAVE_GROUP/MCAST_LEAVE_SOURCE_GROUP will throw an exception if its value is not a valid array/object. (David Carlier) . socket_getsockname/socket_create/socket_bind handled AF_PACKET family socket. (David Carlier) . Added IP_BINDANY for a socket to bind to any address. (David Carlier) . Added SO_BUSY_POOL to reduce packets poll latency. (David Carlier) - Sodium: . Fix overall theorical overflows on zend_string buffer allocations. (David Carlier/nielsdos) - Standard: . Fixed crypt() tests on musl when using --with-external-libcrypt (Michael Orlitzky). . Fixed bug GH-18062 (is_callable(func(...), callable_name: $name) for first class callables returns wrong name). (timwolla) - Streams: . Fixed bug GH-16889 (stream_select() timeout useless for pipes on Windows). (cmb) - Tests: . Allow to shuffle tests even in non-parallell mode. (dhuang00) - Windows: . Fixed bug GH-10992 (Improper long path support for relative paths). (cmb, nielsdos) . Fixed bug GH-16843 (Windows phpize builds ignore source subfolders). (cmb) - XMLWriter: . Improved performance and reduce memory consumption. (nielsdos) - XSL: . Implement request #30622 (make $namespace parameter functional). (nielsdos) - Zlib: . gzfile, gzopen and readgzfile, their "use_include_path" argument is now a boolean. (David Carlier) . Fixed bug GH-16883 (gzopen() does not use the default stream context when opening HTTP URLs). (nielsdos) . Implemented GH-17668 (zlib streams should support locking). (nielsdos) <<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>