版本 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 更新 5 及更高版本)上是constexpr
。 -
向
boost/core/bit.hpp
添加了boost::core::byteswap
(来自 C++23 的std::byteswap
的实现)。 -
将 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
的替代方案 -
修复格式化字符串中无效索引导致的未定义行为
-
修复在没有 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>
头文件实现时,最终将被删除。
-
-
定时器:
-
删除对 Boost.Chrono、Boost.System 和其他库的依赖。
-
除非定义了
BOOST_TIMER_ENABLE_DEPRECATED
,否则禁用已弃用的头文件。
-
-
Unordered:
-
重大更新。
-
添加了
boost::concurrent_flat_map
,这是一个基于开放寻址的快速、线程安全的哈希映射。 -
加快了开放寻址容器的迭代速度。
-
在开放寻址容器中,之前不返回任何内容的
erase(iterator)
现在返回一个可转换为指向下一个元素的迭代器的代理对象。这使得典型的it = c.erase(it)
惯用法无需在不使用返回的代理时产生任何性能损失。
-
-
Variant2:
-
添加了
uses_double_storage()
。
-
更新的工具
-
构建:
-
包括发布 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 管理了此版本。