php 8.4.1 更新日志
原文地址:PHP: PHP 8 ChangeLog
2024年11月21日更新说明
BcMath(高精度数学库):
- [RFC] 新增bcfloor、bcceil和bcround函数
- 性能优化
- 调整bcround()的$mode参数,仅接受RoundingMode枚举类型
- 修复BCMath扩展中的LONG_MAX问题
- 修复bcdiv()除以1的运算
- [RFC] 支持BCMath中的对象类型
- 优化bcpow()性能
- ext/bcmath:检查精度溢出
- [RFC] ext/bcmath:新增bcdivmod函数
- 修复GH-15968问题(避免在运算符计算中将对象转换为字符串)
- 修复GH-16265问题(结果为0时提前返回)(开发者:Saki Takamachi)
- 修复GH-16262问题(修复size_t下溢问题)(开发者:Saki Takamachi)
- 修复GH-16236问题(修复BcMath\Number::pow()和bcpow()在计算0的负数次幂时的错误)(Saki Takamachi)
核心模块(Core):
- 为NetBSD、DragonFlyBSD、Solaris和Haiku系统添加zend_call_stack_get实现
- 从FreeBSD 12.x版本开始启用ifunc检查
- 将PHP_DEBUG和PHP_ZTS常量的类型改为bool
- 修复GH-13142问题(包含\0的未定义变量名被缩短)
- 修复GH-13178问题(将打包数组转换为哈希表时迭代器位置不正确)
- 修复Solaris默认模式(32位)下的zend fiber构建问题
- 修复macOS/arm64下的zend调用栈大小问题
- 为FreeBSD添加Zend最大执行计时器支持
- 确保fiber栈不由THP(透明大页)支持
- 实现GH-13609(在WeakReference类中转储包装对象)
- 为zend fiber添加sparc64架构汇编支持
- 修复GH-13581问题(NetBSD上TLS无可用空间)
- 添加fiber Sys-V loongarch64支持
- 调整闭包名称以包含父函数名
- 优化上传文件名和tempnam()创建文件的随机性
- 为zend_mm自定义处理程序添加gc和关闭回调
- 修复GH-14650问题(分配内存前计算页大小)
- 修复GH-11928问题(--enable-re2c-cgoto未添加-g标志)
- 添加#[\Deprecated]属性
- 修复GH-11389问题(允许在析构函数中挂起fiber)
- 修复GH-14801问题(修复armv7构建)
- 实现属性钩子RFC
- 修复GH-14978问题(xmlreader扩展的phpize构建)
- 遇到递归比较时抛出Error异常而非致命错误
- 为C++构建添加缺失的cstddef头文件
- 更新构建系统脚本config.guess至2024-07-27版本,config.sub至2024-05-27版本
- 修复GH-15240问题(特性钩子中的无限递归)
- 修复GH-15140问题(抽象集合不对称类型检查缺失)
- 修复GH-15181问题(禁用的输出处理程序被再次刷新)
- 传递E_USER_ERROR到trigger_error()现已被弃用
- 修复GH-15292问题(MSVC的动态AVX检测失效)
- 使用"_"作为类名现已被弃用
- 退出命名空间时清除已见符号
- exit(和die)语言构造现在更像函数:可像调用可调用对象一样传递,受strict_types声明影响,执行常规类型强制转换而非将任何非整数值转为字符串。因此,向exit/die传递无效类型可能导致TypeError
- 修复GH-15438问题(忽略无可见性的构造函数提升属性的钩子)
- 修复GH-15419问题(缺少只读类中只读+钩子的不兼容检查)
- 修复GH-15187问题(各种钩子对象迭代器问题)
- 修复GH-15456问题(在虚拟属性上调用get_class_vars()时崩溃)
- 修复GH-15501问题(Windows上HAVE_<header>_H宏定义为1或未定义)
- 实现属性的不对称可见性
- 修复GH-15644问题(不对称可见性与钩子不兼容)
- 实现惰性对象RFC
- 修复GH-15686问题(使用外部iconv库构建共享iconv)
- 修复为单边虚拟属性添加不对称可见性时的错误缺失
- 修复GH-15693问题(main.c中不必要的包含导致二进制膨胀)
- 修复GH-15731问题(AllowDynamicProperties验证应对枚举报错)
- 修复GH-16040问题(钩子中释放对象的use-after-free)
- 修复GH-16026问题(关闭期间重用析构函数fiber)
- 修复GH-15999问题(惰性对象的zend_std_write_property()断言失败)
- 修复GH-15960问题(惰性对象的foreach边缘情况)
- 修复GH-16185问题(各种钩子对象迭代器问题)
- 修复OSS-Fuzz #371445205问题(attr_free中的堆使用后释放)
- 修复为静态属性添加不对称可见性时的错误缺失
- 修复OSS-Fuzz #71407问题(zend_lazy_object_clone中的空引用WRITE)
- 修复GH-16574问题("未定义方法"错误消息不正确)
- 修复GH-16577问题(opcache.preload下EG(strtod_state).freelist泄漏)
- 修复GH-16615问题(zend_std_read_property中的断言失败)
- 修复GH-16342问题(新增ReflectionProperty::isLazy())
- 修复GH-16725问题(钩子对象迭代器中非钩子属性的访问检查不正确)
Curl(网络传输库):
- 弃用CURLOPT_BINARYTRANSFER常量
- 将所需libcurl版本提升至7.61.0
- 为curl_version()返回值添加feature_list键
- 添加CURL_HTTP_VERSION_3(libcurl 7.66)和CURL_HTTP_VERSION_3ONLY(libcurl 7.88)作为CURLOPT_HTTP_VERSION选项(开发者:Ayesh Karunaratne)
- 添加CURLOPT_TCP_KEEPCNT选项以设置连接断开前的探测次数
- 添加CURLOPT_PREREQFUNCTION Curl选项,在连接建立后、请求执行前设置自定义回调
- 添加CURLOPT_SERVER_RESPONSE_TIMEOUT选项,原名为CURLOPT_FTP_RESPONSE_TIMEOUT
- CURLOPT_DNS_USE_GLOBAL_CACHE选项现在被静默忽略
- 添加CURLOPT_DEBUGFUNCTION作为Curl选项
- 修复GH-16359问题(使用curl_setopt*设置CURLOPT_WRITEFUNC