Boost 1.80 发布,可移植的 C++ 库


Boost 是一套用于 C++ 编程语言的库,为线性代数、伪随机数生成、多线程、图像处理、正则表达式和单元测试等任务和结构提供支持。它包含了 164 个单独的库(截至 1.76 版)。

已知问题

这些是库的作者提出的补丁,由于发现得太晚,所以在发行版中没有修复。

  • Boost.Filesystem 目录迭代器在 Windows 10 之前可能无法为网络共享构建
  • 在 Windows 上的 Boost.Filesystem 中, weakly_canonical 无法处理以 "\?" 开头的路径

更新的库

  • Asio:
    • appendpredpendas_tupledeferred 移至 boost::asio 命名空间,并使它们与 C++11 兼容。
    • 使得 experimental::parallel_group 与 C++11 兼容
    • 为连续的容器(如 std::span)增加了 buffer() 重载
    • ……
  • Atomic:
    • 改进了 ARM、AArch32 和 AArch64 目标上的字节数检查的可移植性
    • 修正了 MSVC 14.0(Visual Studio 2015)在 C++17 模式下的编译
  • 文件系统。
    • 在 Windows 上,增加了一个回退实现,用于在文件因 ERROR_ACCESS_DENIED 错误而无法打开的情况下查询文件属性。
    • 在 Windows 上,为 FAT/exFAT 文件系统增加了一个解决方法,在查询文件属性时产生 ERROR_INVALID_PARAMETER
    • 解决了 RTEMS 上的一个编译问题
    • 在 Linux 上,如果 copy_file_range 在运行时与 ENOSYS 一起失败,纠正了切换到 sendfile copy_file 的实现。
    • 在支持 openat 和 POSIX.1-2008 中定义的相关 API 的 POSIX 系统上,以及在 Windows Vista 和更高版本上,改进了针对 CVE-2022-21658 的 remove_all 保护
  • GIL:计划在 Boost 1.80 之后的一到两个版本中,将 C++17 作为最低要求的 C++ 语言版本
  • 迭代器
    • 对于 C++11 和更高版本,增加了对写给 function_output_iterator 的值的完美转发的支持
    • 增加了对向 function_output_iterator 写入一个取消引用另一个 function_output_iterator 的结果的保护。
  • JSON
    • 增加了 string::subview() 重载。
    • 修正了 array::erase(it) 的 segfault。
    • 修正了 libc++ 上序列化的低性能
    • 修正了在 big-endian 平台上的解析问题
    • 修正了对尾部逗号后的注释的处理。
  • Locale:
    • 废弃了对 C++03 和更早版本的支持
    • 修复了ICU整理器在转换空字符串时出现的UB/断言故障
    • 修复一些与共享库中类的可见性有关的问题
    • 修复与 C++20 模式的兼容性
    • 修复与 BOOST_USE_WINDOWS_H 的兼容性问题
    • 修复了由于缺失包含物而导致的构建失败问题
    • 处理或压制许多警告,使构建日志更清晰

Boost 的主要测试编译器是

  • Linux:
    • Clang: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0
    • Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.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
    • 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
    • Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0
    • GCC: 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: 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

更多详情可查看:https://github.com/boostorg/boost/releases/tag/boost-1.80.0


相關推薦

2022-12-17

Boost 是一套用于 C++ 编程语言的库,为线性代数、伪随机数生成、多线程、图像处理、正则表达式和单元测试等任务和结构提供支持。它包含了 164 个单独的库(截至 1.76 版)。 新的库: URL:一个仅使用 C++11 解析、修改和打

2023-07-08

Visual Studio Code 发布了 1.80 版本,带来如下新东西: 无障碍功能改进 Accessible View  无障碍视图 新命令“打开可访问视图”(Alt+F2) 允许屏幕阅读器用户逐字符、逐行检查内容。当悬停或聊天面板响应聚焦时可调用此方法

2022-09-15

hash 库 path 库 文件系统操作(fs) 系统操作(os) 本次发布的版本,直接从 v2.0.3 跳到了 v3.0.0,跨度非常之大,它在性能、易用性、稳定性等方面均有全面的提升。 性能优化 内存分配器 v3.0 中实现了一个新的内存分配器(co/

2023-09-10

新增功能 基准测试框架。 #include "co/benchmark.h" #include "co/mem.h"   BM_group(malloc) { void* p;   BM_add(::malloc)( p = ::malloc(32); ); BM_use(p);   BM_add(co::alloc)( p = co::alloc(32); ); BM_use(p); }   int main(int argc, char** argv) { flag::parse(argc,

2023-09-20

也可以通过编写脚本进行半自动的生成。 CMake 3.27.5 现已发布,一些亮点更新内容如下: cmGeneratorTarget:支持独立于配置的 Fortran 源查询 cmComputeLinkInformation:计算使用模块的目标的链接信息 FortranCInterface:转发 CMAKE_OSX_DEPL

2022-08-16

Firebird 4.0.2 已发布。 Firebird 是一个跨平台的关系数据库,可运行在 Windows、Linux 和多种 Unix 操作系统上,提供了大部分 SQL-99 标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。 Firebird 源

2023-02-15

、音频、字幕等格式封装成 mkv 格式。 MKVToolNix 74.0 正式发布,更新内容如下: 新功能和改进 mkvmerge: SRT 处理:添加 -engage keep_whitespaces_in_text_subtitles,以在多路复用过程中禁止从 SRT 条目的每一行的开始和结束处剥离空白处

2022-10-11

Transmission 4.0.0 发布了首个 Beta 测试版。公告写道,自 3.0 发布以来,此版本已经积极开发了一年多,包含大量变化,并超过 1000 次 commit。 下载地址:https://transmissionbt.com/download Transmission 是开源的 BitTorrent 客户端,支持 macOS

2023-02-11

Transmission 4.0.0 稳定版已正式发布,其团队表示这是一个大版本更新——不仅体现在版本号上,他们还为这个版本投入了许多开发资源。自 3.0 发布以来,此版本已经积极开发了一年多,包含大量变化,提交了超过 1000 个 commit。

2023-11-06

Protocol Buffers 25.0 已经发布。Protocol Buffers(protobuf)是 Google 开源的语言无关、平台无关的可扩展机制,用于序列化结构化数据。 具体更新内容包括: Announcements Protobuf News 可能包括针对即将发生的更改的附加公告或

2022-05-28

也可以通过编写脚本进行半自动的生成。 CMake 3.23.2 现已发布,具体更新内容如下: CPack/NuGet:在 Windows 上恢复 component packaging cmInstallCommand:调整错误信息 cmExportBuildFileGenerator:处理 genex-wrapped 的源路径 ci:使用 CMake 3.2

2022-10-24

是一种新兴的网页虚拟机标准,它的设计目标包括:高可移植性、高安全性、高效率(包括载入效率和运行效率)、尽可能小的程序体积。2018 年 WebAssembly 第一个规范草案诞生,2019 年成为 W3C 第四个标准语言。到了 2022 年底,We

2023-11-28

据开发者的说法,他们已经完成了从 C++ 到 Rust 的大部分移植工作,但还有一些剩余的组件需要进行翻译。目前,他们正在处理与输入系统相关的读取器、屏幕处理、输入和分页器等强耦合组件。一旦这些组件完成翻译,剩下的

2023-07-25

也可以通过编写脚本进行半自动的生成。 CMake 3.27.0 现已发布,一些亮点更新内容如下: “cmake(1)”现在支持 CMake 语言的交互式调试。参阅“--debugger”选项。 VS 2015 及更高版本的 Visual Studio Generators 学会了使用“CMAKE_GENERATO