版本 1.83.0
版本 1.83.0
2023 年 8 月 11 日 16:23 GMT
平台 | 文件 | SHA256 哈希 |
---|---|---|
unix | boost_1_83_0.tar.bz2 | 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e |
boost_1_83_0.tar.gz | c0685b68dd44cc46574cce86c4e17c0f611b15e195be9848dfd0769a0a207628 | |
windows | boost_1_83_0.7z | 22ee9dcf3f1fb58f585772f70c69113a4077b92adeac58b643b3543b78633a16 |
boost_1_83_0.zip | c86bd9d9eef795b4b0d3802279419fde5221922805b073b9bd822edecb1ca28e |
已知问题
这些是库作者提供的补丁,发现得太晚而无法在此版本中修复。
新库
-
Compat: C++11 标准组件的实现仓库,这些组件是在以后的 C++ 标准中添加的,来自 Peter Dimov 和贡献者。
更新的库
-
Any:
-
新的
boost::anys::unique_any
C++11 类 -boost::any
(或std::any
) 的替代方案,它不需要从所持有的类型进行复制或移动构造。 -
将文档移植到 Quickbook,Doxygen 注释现在在代码中使用。
-
-
Chrono:
-
移除对已弃用的 Boost.Ratio 功能的使用。
-
-
Compat:
-
添加了
latch.hpp
,std::latch
的实现 (由 Christian Mazakas 贡献)。 -
添加了
shared_lock.hpp
,std::shared_lock
的(部分)实现 (由 Christian Mazakas 贡献)。
-
-
Core:
-
为
boost::core::type_name
添加了对不完整类型的支持。 -
boost/core/bit.hpp
中的位操作函数现在在最新的 MSVC 版本 (VS2019 update 5 及更高版本) 上是constexpr
。 -
将
boost::core::byteswap
(C++23 中std::byteswap
的实现) 添加到boost/core/bit.hpp
。 -
将 yield 原语
sp_thread_pause
、sp_thread_yield
、sp_thread_sleep
从 SmartPtr 实现细节移动到boost/core/yield_primitives.hpp
。
-
-
DLL:
-
修复了 glibc 2.36+ 上的测试失败,感谢 Đoàn Trần Công Danh 的错误报告 #58。
-
-
Filesystem:
-
添加了
directory_entry::refresh
方法,该方法更新由路径标识的目录条目的内部缓存文件状态。 -
v4: 初始化或修改路径的
directory_entry
构造函数和修饰符现在会自动调用refresh
。如果查询文件状态失败 (例如,如果文件不存在),这可能会导致以前和 v3 中未指示的错误。这种新行为类似于 std::filesystem。 -
v4: 删除了采用
file_status
参数的directory_entry
构造函数和方法。建议用户删除这些参数,并依赖directory_entry
在内部调用refresh
。 -
添加了
directory_entry
成员方法,用于检查文件的文件类型,类似于 std::filesystem。 -
添加了更多用于测试文件状态的方法:
is_block_file
、is_character_file
、is_fifo
、is_socket
和is_reparse_file
。 -
recursive_directory_iterator
现在更有可能重用在文件系统迭代期间获得的文件类型信息。这可能会提高性能。 (#288) -
在
boost/filesystem/fstream.hpp
中定义的文件流现在是可移动的,如果标准库文件流是可移动的。 (#280) -
添加了一个新的头文件
boost/filesystem/cstdio.hpp
,其中包含一个可移植的fopen
重载,它将path
作为第一个参数。此函数等效于std::fopen
,不同之处在于在 Windows 上,它对路径使用本机宽字符编码。 -
在 Windows 上,放宽了查询文件时间所需的访问权限。 (#290)
-
-
Flyweight:
-
为
boost::flyweight
添加了智能指针语法 (operator*
和operator->
解引用到基础值)。 -
修复了
simple_locking
使用的互斥锁不是递归的情况 (问题 #12)。
-
-
JSON:
-
该库现在仅抛出
system_error
,除非分配失败,在这种情况下会抛出std::bad_alloc
。 -
序列化行为现在可以通过
serialize_options
更改。 -
上下文转换。
-
用于更精确数字解析的解析器选项。
-
在流
operator<<
中支持parse_options
。 -
允许
Infinity
和NaN
JSON 字面量的解析器选项。 -
仅验证数字而不是解析数字的解析器模式。
-
指数大于
INT_MAX
的数字被解析器接受并视为无穷大。 -
修复了应提供强保证的
object
成员函数。 -
修复了包含
boost/range.hpp
时end
调用的歧义。 -
修复了 ASan 故障。
-
修复了
error::size_mismatch
的错误消息。 -
修复了转换为具有 const 元素的元组。
-
-
Locale:
-
消息目录文件中不再支持位/二进制运算符(左/右移位、二进制与/或/异或/非),以匹配 GNU gettext 行为
-
Windows 上的 Std 后端在请求的区域设置不存在时使用经典区域设置而不是系统区域设置(现在与其他操作系统相同)
-
localization_backend_manager::get
已弃用,请改用生成器 -
新的转换器类作为
to_utf
/from_utf
/between
的替代方案 -
修复了格式字符串中无效索引上的 UB
-
修复了在没有 ICU 的 Windows 上将 UTF 转换为例如 iso-2022-jp
-
将
long long
用作复数翻译的计数参数 -
修复了某些类的可移动性和异常规范
-
-
Mp11:
-
为
mp_from_sequence
、mp_iota
、mp_iota_c
添加了 offset/from 参数。 -
添加了
mp_value
、mp_list_v
、mp_rename_v
、mp_is_value_list
。 -
为
<boost/mp11/list.hpp>
中的原语添加了值列表支持。 -
为
mp_repeat
、mp_fill
、mp_at
、mp_back
、mp_take
、mp_pop_back
、mp_drop
、mp_insert
、mp_erase
添加了值列表支持。
-
-
MySQL:
-
重大更新。
-
现在完全支持存储过程,包括生成数据的
SELECT
语句和带有OUT
参数的过程。 -
添加了对多查询的支持,允许通过一次调用运行多个分号分隔的语句。
-
添加了静态类型接口,允许使用 Boost.Describe 结构和元组将查询结果解析为用户提供的类型。
-
现在可以使用新的
connection::execute
和connection::start_execution
函数(及其异步对应项)执行文本查询和预准备语句。这些函数取代了connection::query
、connection::execute_statement
、connection::start_query
和connection::start_statement_execution
。新函数允许访问新功能,例如静态接口。 -
添加了单独的编译模式以帮助减少构建时间。源文件包含在
boost/mysql/src.hpp
中,必须包含在一个转换单元中。 -
现在可以使用迭代器对来指定参数来执行预准备语句,使用
statement::bind
和connection::execute
。这使得参数的数量和类型在编译时未知的情况成为可能。 -
预准备语句执行现在接受
bool
、std::optional
和boost::optional
类型的参数。 -
添加了错误代码并验证了与 MySQL v8.0.33 和 MariaDB v11.0 的兼容性。
-
修复了 Windows 的
min()
和max()
宏的潜在问题。 -
所有断言现在都使用 Boost.Assert。
-
所有异常现在都通过 Boost.ThrowException 抛出。
-
立即完成现在已通过 I/O 对象执行器正确调度。
-
-
Ratio:
-
将默认
BOOST_RATIO_VERSION
更改为 2。 -
对
BOOST_RATIO_EXTENSIONS
的支持现已弃用,并且当 Boost.Ratio 以标准<ratio>
头文件的形式实现时,最终将被删除。
-
-
Timer:
-
移除对 Boost.Chrono、Boost.System 和其他库的依赖。
-
禁用已弃用的头文件,除非定义了
BOOST_TIMER_ENABLE_DEPRECATED
。
-
-
Unordered:
-
重大更新。
-
添加了
boost::concurrent_flat_map
,一个基于开放寻址的快速、线程安全的哈希图。 -
加速了开放寻址容器的迭代。
-
在开放寻址容器中,
erase(iterator)
之前不返回任何内容,现在返回一个可转换为指向下一个元素的迭代器的代理对象。 这使得典型的it = c.erase(it)
惯用法成为可能,而当不使用返回的代理时,不会产生任何性能损失。
-
-
Variant2:
-
添加了
uses_double_storage()
。
-
更新的工具
-
Build:
-
包括 B2 版本 4.10.1 的发布。
-
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
GCC, C++03: 4.6.3, 11, 12
-
GCC, C++11: 4.7.3, 4.8.5, 11, 12
-
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
-
-
OS X
-
Apple Clang, C++03: 11.0.3
-
Apple Clang, C++11: 11.0.3
-
Apple Clang, C++14: 11.0.3
-
Apple Clang, C++17: 11.0.3
-
Apple Clang, C++20: 11.0.3
-
-
Windows
-
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
-
致谢
Marshall Clow 和 Glen Fernandes 管理了此版本。