版本 1.85.0
版本 1.85.0
2024年4月15日 17:38 GMT
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_85_0.tar.bz2 | 7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617 |
boost_1_85_0.tar.gz | be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b | |
windows | boost_1_85_0.7z | 16d16b9658753117c1434e5450c5eac194957f4b6d0b390b9d07900d37c115a4 |
boost_1_85_0.zip | e712fe7eb1b9ec37ac25102525412fb4d74e638996443944025791f48f29408a |
已知问题
这些是库作者提供的补丁,由于时间太晚,无法在此版本中修复。
新库
更新的库
-
Asio:
-
修复了
async_result
主模板的概念检查,以正确处理左值限定的完成签名。 -
修复了使用
bind_allocator
、bind_executor
、bind_immediate_executor
和bind_cancellation_slot
完成令牌适配器相互适配时可能出现的一些编译错误。 -
更改了
experimental::ranged_parallel_group
操作,以便在调用完成处理程序时移动completion_order
向量。 -
修复了关于
ip::basic_resolver_query
、io_context::strand
和coroutine
上已弃用的隐式复制构造函数的一些警告。 -
更新了用于初始化 Winsock 的版本规范。
-
修复了
co_spawn
,以正确地将由取消操作产生的异常传播到完成处理程序。 -
添加了对
std::launder
的调用,以修复awaitable<>
内部存储中的未定义行为。 -
在 Windows 文件支持的实现中,添加了对
file_base::append
标志的缺失处理。 -
更新了套接字和描述符的实现,以增加在调用
ioctl
失败时回退到fcntl
的情况。 -
修复了boost/asio/experimental/parallel_group.hpp头文件,使其是自包含的。
-
修复了当通道和
experimental::coro
在同一翻译单元中使用时发生的编译错误。 -
向文档添加了缺失的 CancellationSlot 类型要求。
-
修复了异步操作的启动函数的推断返回类型的文档超链接。
-
其他次要的文档更新。
-
-
Beast:
-
API 更改
-
状态代码列表已更新,以符合 IANA 注册表。
-
-
修复
-
buffers_cat.hpp
中无法访问的代码警告。 -
websocker_server_awaitable
示例中的连接错误处理。 -
高级服务器示例中对
async_write
的并发调用。 -
zlib 名称与 minizip 冲突。
-
主机字符串应在
SSL_set_tlsext_host_name()
之后更新。
-
-
改进
-
asio::associator
专用于bind_wrapper
和bind_front_wrapper
。 -
为错误类别消息函数添加非分配重载。
-
-
文档
-
指定何时调用
http::message::prepare_payload()
是可选的。 -
受
basic_stream::expires_after()
影响的操作。 -
teardown()
和async_teardown()
是自定义点。 -
第一次使用后移动或复制
http::serializer
是未定义行为。 -
websocket::permessage_deflate
应在执行 WebSocket 握手之前进行配置。 -
http 读取操作中的
bytes_transferred
报告 HTTP 解析器消耗的字节数。
-
-
致谢
-
Emile Cormier, JohannesWilde, yhzx233
-
-
-
Bind:
-
不再支持 C++03;需要 C++11 编译器。(这包括 GCC 4.7 或更高版本,以及 MSVC 12.0(VS 2013)或更高版本。)
-
-
Core:
-
添加了一个新的
boost/core/functor.hpp
头文件,其中包含一个functor
类模板,用于将原始函数包装到函数对象类中。 -
更改了
null_deleter
、fclose_deleter
和 checked deleter 的定义,以便它们不会将命名空间boost
带入参数依赖查找。用户可能需要显式限定所调用函数的命名空间或添加using
声明。
-
-
Filesystem:
-
path::generic_path
和path::generic_string
方法现在会删除返回路径中的重复目录分隔符。 -
v4:
path::generic_path
、path::generic_string
、path::make_preferred
和path::lexically_normal
避免在路径根名称中转换反斜杠和正斜杠。例如,在 Windows 上,path("\\\\\\\\?\\\\c:\\\\foo").generic_string()
现在返回 "\\?\c:/foo" 而不是 "//?/c:/foo"。类似地,path("\\\\\\\\host/share/foo/..").lexically_normal()
现在返回 "\\host\share"。 -
v4: 如果路径都不存在,
equivalent
现在指示错误。 -
添加了一个
unique_path
重载,它接受单个error_code& ec
参数。重载使用默认路径模型生成唯一路径。 -
如果输入路径是相对路径且不包含文件系统中存在的任何元素,则
weakly_canonical
现在会生成绝对路径。(#300) -
在 Linux 上,基于
sendfile
和copy_file_range
系统调用的copy_file
后端将尝试为目标文件预分配存储空间。这可以减少文件系统碎片,并在可用空间不足时提供早期错误指示。并非所有文件系统都支持此功能;如果不支持存储预分配,则文件复制将继续进行。 -
在支持
fdopendir
、openat
和 POSIX.1-2008 中定义的相关 API 的 POSIX 系统上,以及在 Windows 上,recursive_directory_iterator
现在使用文件描述符/句柄而不是路径来查询文件状态并在迭代期间打开嵌套目录。这使得目录迭代更能抵抗文件系统的并发修改。 -
移除了之前声明为已弃用的 API。特别是,
path
和recursive_directory_iterator
成员函数,is_regular
,copy_directory
,symbolic_link_exists
,complete
,copy_option
,symlink_option
,以及boost/filesystem/convenience.hpp
和boost/filesystem/path_traits.hpp
头文件已被移除。文档中提到了被移除组件的可能替代方案。 -
默认情况下,禁用从容器类型(例如
std::vector<char>
)构造、赋值和追加path
的功能。用户仍然可以通过定义BOOST_FILESYSTEM_DEPRECATED
来启用此功能。此功能仍然是已弃用的,并将在未来的版本中完全删除。
-
-
函数:
-
不再支持 C++03;需要 C++11 编译器。(这包括 GCC 4.7 或更高版本,以及 MSVC 12.0(VS 2013)或更高版本。)
-
-
几何:
-
迭代器:
-
对 C++03 的支持已弃用,并将在未来的版本中删除。
-
-
JSON:
-
现在使用 Boost.Endian 来处理字节序。
-
Boost.System 和 Boost.Container 组件的别名已弃用,并且将在 1.87.0 版本中完全删除。
-
描述类的转换支持私有成员。
-
visit
的右值引用重载。 -
添加对类路径类型的转换支持。
-
解析到描述类中正确考虑了继承的成员。
-
禁用自引用序列的转换。
-
修复了 visit 中的引用处理。
-
-
LEAF:
-
用于在线程之间传输错误对象和异常的新 API:
try_capture_all
。 -
result<T>
能够传输通过try_capture_all
捕获的异常。 -
result<T>
以更高的效率传输动态捕获的错误对象。 -
旧的
make_shared_context
/capture
API 已弃用,将在下一个版本中删除。 -
删除了对在异常中传输动态捕获的错误对象的支持。
-
-
Math:
-
MSM:
-
重大更新。后端更新 (back11)。需要 C++ 11。文档现在将其用作默认值。
-
大的新功能。新的前端 (PlantUML)。需要 C++ 20
-
各种错误修复(编译器错误和警告,延迟事件的优先级)
-
-
多索引容器:
-
修复了文档错误。
-
-
MySQL:
-
重大更改:Boost.MySQL 现在需要链接到新的已编译的 Boost.Charconv 库。这解决了区域设置依赖问题,提高了效率,并为新的客户端 SQL 格式化功能提供支持。
-
添加了对连接池的实验性支持,它允许重用会话并提供内置的重新连接和错误处理。
-
添加了对类型擦除连接(
any_connection
类)的实验性支持。any_connection
不是模板,并且具有更简单的连接建立和重新连接语义。 -
添加了对客户端 SQL 格式化函数(
format_sql
和format_sql_to
)的实验性支持。这些允许安全地在客户端组合查询,从而启用诸如批量插入、动态过滤器或类似 PATCH 的更新之类的模式。 -
修复了影响
close_statement
和async_close_statement
的性能问题,该问题可能导致应用程序代码中出现重大延迟。 -
添加了对使用
BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
构建的支持。 -
已弃用的执行接口(
connection::query
、connection::start_query
、connection::execute_statement
、connection::start_statement_execution
及其异步对应项)现在会触发警告,因为它计划在 Boost 1.86 中删除。 -
修复了导致某些错误消息被截断的错误。
-
警告清理。现在使用
-Wall
和-Wextra
构建时,构建没有警告。 -
所有
field_view
构造函数现在都是稳定的。 -
该库的内部结构已使用 sans-io 方法重写以降低复杂性。
-
-
Odeint:
-
重大更改:该库现在显式需要 C++14,而不是通过包含 Boost.Math 隐式需要
-
修复了与 Thrust 1.10.0 的兼容性
-
删除了 C++03 Boost 组件
-
Array
-
Bind
-
函数
-
Static_assert
-
-
-
PFR:
-
删除了未使用的实现细节。感谢 Denis Mikhailov 的 PR PR#154。
-
字段反射技巧现在在文档中进行了描述。感谢 #150 中的所有讨论参与者!
-
System:
-
不再支持 C++03;需要 C++11 编译器。(这包括 GCC 4.8 或更高版本,以及 MSVC 14.0 (VS 2015) 或更高版本。)
-
已删除已弃用的头文件
boost/system/cygwin_error.hpp
。 -
不再支持原始且过时的(32 位)MinGW。仍然支持 MinGW-w64(64 位和 32 位)。
-
operator&
现在适用于result<void>
(通过采用一个空函数)。 -
为
result
添加了operator|=
。
-
-
Stacktrace:
-
重大新功能:来自任意异常的堆栈跟踪。在某些 POSIX 平台上,
std::stacktrace::from_current_exception()
现在会返回当前异常对象的堆栈跟踪,就像在抛出异常的位置捕获堆栈跟踪一样。非常感谢 Andrei Nekrashevich 在libsfe
中对该想法进行原型设计。 -
修复了 Windows 上使用
boost_stacktrace_windbg
时的内存消耗问题。感谢 ycyclop 报告此问题 #111,感谢 Thiago A. Correa 提供更多信息,感谢 Andrei Karpovskii 提供可能的修复方案。 -
修复了使用非隐藏可见性构建库的问题。感谢 Jan Bouwer 的报告和关于如何修复此问题的信息。
-
-
STL接口:
-
更改了 C++20 及更高版本中
iterator_interface
对于输入迭代器的行为,以更密切地遵循 C++20 的概念。 -
从
iterator_interface
中删除了隐藏友元,以修复关于使用不同约束重新定义概念的错误。 -
添加了一个新的
v3
内联命名空间,其中包含一个新的基于 deducing this 而不是 CRTP 的 iterator_interface(C++23 及更高版本)。 -
添加了一个
closure::operator()
的右值限定重载,以防止悬空临时对象。
-
-
变体:
-
移除了更多 C++11 之前的宏和变通方法。
-
更新的工具
-
构建:
-
包括 B2 版本 5.1.0 的发布。
-
测试的编译器
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 管理了这个版本。