Overview
了解以下版本中的新功能:
重大更改的类型
新版本的C++驱动程序可能会引入以下类型的破坏性变更:
API更改涉及C++驱动程序库的API。这些更改伴随着 API 主要版本的提升。您可能需要在项目中编辑C++源代码以解决这些更改。
例子
删除函数
v1::func()的声明。 (为了实现 ABI 兼容性,仍提供该定义。)删除内联函数
v_noabi::func()。删除
v_noabi::func()。将
bsoncxx::foo的重新声明从v1::foo更改为v2::foo。 要继续使用旧接口,请将bsoncxx::foo限定为bsoncxx::v1::foo。
ABI 更改涉及C++驱动程序的 ABI。这些更改伴随着 ABI 版本提升,也可能伴随着 API 主要版本提升。您可能需要重新构建项目或编辑C++源代码以解决这些更改。
与
v_noabi命名空间中声明的实体对应的符号不支持 ABI 稳定性。 此类符号的重大更改不一定伴随着 ABI 版本提升。例子
删除导出的符号
v_noabi::func()。删除导出的符号
v1::func()。删除
v1::type的导出符号。
构建系统更改涉及C++驱动程序库的构建系统或打包。这些更改不一定伴随着 API 主要版本提升或 ABI 版本提升。要解决这些更改,您可能需要修改构建系统配置或更新项目的包或依赖管理设置。您可能还需要修改或重新构建C++源代码。
例子
删除
ENABLE_FOO配置变量。将
ENABLE_BAR配置变量的默认值从OFF更改为ON。删除支持平台 A、编译器 B 或架构C的支持。
该发布包含以下错误:
- 当多次配置 CMake项目时,CMake 可能会错误地将自动下载的C驱动程序的API版本设立为
0.0.0;或者,当在初始配置期间显式设立BUILD_VERSION时,CMake 可能会错误地将 API 版本设置为与C++驱动程序的API版本相同的值。仅当使用find_package()找不到现有的 C 驱动程序安装时,CMake 才会自动下载带有 C++ 驱动程序的 C 驱动程序。该错误将在即将发布的补丁版本中得到修复。
要学习;了解有关此发布的更多信息,请参阅Github上的 v4.0 发布说明。
3.11 中的新功能
警告
重大更改
v3.11 驱动程序引入了以下破坏性变更:
删除了对MongoDB Server v 3.6的支持。
需要MongoDB C驱动程序v 1.28.0或更高版本。
删除 bsoncxx ABI 中以下私有成员函数的导出:
bsoncxx::v_noabi::types::bson_value::value::value(const uint8_t*, uint32_t, uint32_t, uint32_t)bsoncxx::v_noabi::types::bson_value::view::_init(void*)bsoncxx::v_noabi::types::bson_value::view::view(const uint8_t*, uint32_t, uint32_t, uint32_t)bsoncxx::v_noabi::types::bson_value::view::view(void*)
删除 mongocxx ABI 中以下私有成员函数的导出:
mongocxx::v_noabi::options::change_stream::as_bson()mongocxx::v_noabi::options::aggregate::append(bsoncxx::v_noabi::builder::basic::document&)mongocxx::v_noabi::options::index::storage_options()
使用 MSVC 编译时,使用
__cdecl声明所有导出函数符号。 如果您在构建项目时使用替代的默认调用约定,则这是一项 ABI破坏性变更 (breaking change)。
v3.11驱动程序发布包括以下新功能:
新增支持MongoDB Server v 8.0的支持。
Adds support for Queryable Encryption range queries. To use this feature, your app must connect to MongoDB Server 8.0 or later. For more information about Queryable Encryption, see Queryable Encryption in the MongoDB Server manual.
为
mongocxx::v_noabi::bulk_write添加empty()成员函数。
该发布包含以下错误:
- 当多次配置 CMake项目时,CMake 可能会错误地将自动下载的C驱动程序的API版本设立为
0.0.0;或者,当在初始配置期间显式设立BUILD_VERSION时,CMake 可能会错误地将 API 版本设置为与C++驱动程序的API版本相同的值。仅当使用find_package()找不到现有的 C 驱动程序安装时,CMake 才会自动下载带有 C++ 驱动程序的 C 驱动程序。该错误将在即将发布的补丁版本中得到修复。
要学习;了解有关此发布的更多信息,请参阅Github上的 v3.11 发布说明。
3.10 中的新功能
警告
构建系统重大更改
v3.10 驱动程序向构建系统引入了以下破坏性变更:
不再支持调用
find_package(libbsoncxx)和find_package(libmongocxx)。 请改用find_package(bsoncxx)和find_package(mongocxx)。删除支持旧版 CMake包配置文件提供的
LIBBSONCXX_*和LIBMONGOCXX_*CMake 变量的支持。 请改用mongo::bsoncxx_*和mongo::mongocxx_*CMake 目标。删除了
BSONCXX_POLY_USE_STD_EXPERIMENTALCMake 选项,并删除了对选择实验性C++标准库作为 polyfill 选项的支持。
v3.10.0驱动程序发布包括以下新功能:
添加提供
bsoncxx和mongocxx类类型的非定义声明的正向标头。驱动程序不支持用户定义的任何库实体的前向声明。要获取库实体的声明或定义,请始终包含相应的标头。当未请求 polyfill 库时,CMake 选项
ENABLE_BSONCXX_USE_POLY_IMPLS允许默认选择C++ 17 polyfill 的bsoncxx实现。 此选项默认为OFF。CMake 选项
BSONCXX_POLY_USE_IMPLS允许选择C++17 polyfill 的bsoncxx实现,而不是外部库或C++标准库。 此选项默认为OFF。bsoncxx::v_noabi和mongocxx::v_noabi命名空间不再声明为内联命名空间。 根命名空间声明仍受支持,且应与其之前的定义保持等效。 示例,bsoncxx::document仍然相当于bsoncxx::v_noabi::document,mongocxx::client仍然相当于mongocxx::v_noabi::client。默认,当使用 MSVC 编译库文件名时(由 CMake 的
MSVC变量检测),它们会嵌入 ABI标签string 。 这些字符串类似于以下内容:bsoncxx-v_noabi-rhs-x64-v142-md.lib 要禁用此行为,请将
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=OFF设立为 CMake 配置的一部分。ABI标签string也可以嵌入到 pkg-config元数据文件名中,如下所示:
libbsoncxx-v_noabi-rhs-x64-v142-md.pc 要启用此行为,设立
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ON和ENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON设置为 CMake 配置的一部分。
要学习;了解有关此发布的更多信息,请参阅Github上的 v3.10 发布说明。
3.9 中的新功能
警告
构建系统重大更改
v3.9 驱动程序引入了以下破坏性变更:
删除了对 CMake项目构建树中导出目标的支持
删除支持macOS 10.14 、macOS 10.15和Ubuntu 14.04的支持
需要MongoDB C驱动程序v 1.25.0或更高版本
需要 CMake v 3.15或更高版本才能支持
FetchContent模块
v3.9驱动程序发布包括以下新功能:
C++驱动程序容器映像现已在Docker Hub。上提供。
如果您未提供,驱动程序会自动下载MongoDB C驱动程序依赖项。
驱动程序不再将测试构建为
all目标的一部分。要构建测试,请将BUILD_TESTING=ON设立为 CMake 配置的一部分。如果系统未提供,驱动程序会使用
FetchContent模块而不是ExternalProject模块来下载和构建 MNMLSTC 核心 polyfill 库。它也不会修补 MNMLSTC Core 标头中的include指令。添加 CMake 选项
MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX。 如果此选项设立为TRUE,则CMAKE_INSTALL_PREFIX选项默认为构建目录。 此选项的默认值为TRUE。添加用于管理MongoDB 搜索索引的API。
将
VERSIONINFO资源添加到bsoncxx.dll和mongocxx.dll。明确记录从 APM回调中引发异常是未定义行为。
在 CMake构建步骤中,不会过早安装 MNMLSTC Core 标头。
要求所有已安装的C++驱动程序包配置通过
find_dependency()找到MongoDB C驱动程序CMake包。
要学习;了解有关此发布的更多信息,请参阅Github上的 v3.9 发布说明。