Docs 菜单
Docs 主页
/ / /
C++ 驱动程序

新增功能

在此页面上

  • Overview
  • 重大更改的类型
  • 3.11 中的新功能
  • 3.10 中的新功能
  • 3.9 中的新功能

了解以下版本中的新功能:

  • 版本 3.11

  • 版本 3.10

  • 版本 3.9

新版本的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的支持。

警告

重大更改

v 3.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)。

v 3.11驾驶员发布包括以下新功能:

  • 新增支持MongoDB Server v 8.0的支持。

  • 添加支持Queryable Encryption范围查询的支持。 要使用此功能,您的应用必须连接到MongoDB Server 8.0或更高版本。 有关Queryable Encryption的更多信息,请参阅MongoDB Server手册中的Queryable Encryption

  • mongocxx::v_noabi::bulk_write添加empty()成员函数。

要学习;了解有关此发布的更多信息,请参阅 v3.11 发布说明 在Github 上。

警告

构建系统重大更改

v 3.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_EXPERIMENTAL CMake 选项,并删除了对选择实验性C++标准库作为 polyfill 选项的支持。

v 3.10.0 驾驶员发布包括以下新功能:

  • 添加提供bsoncxxmongocxx类类型的非定义声明的正向标头。 驾驶员不支持用户定义的任何库实体的前向声明。 要获取库实体的声明或定义,请始终包含相应的标头。

  • 当未请求 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_noabimongocxx::v_noabi命名空间不再声明为内联命名空间。 根命名空间声明仍受支持,且应与其之前的定义保持等效。 示例, bsoncxx::document仍然相当于bsoncxx::v_noabi::documentmongocxx::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=ONENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON设置为 CMake 配置的一部分。

要学习;了解有关此发布的更多信息,请参阅 v3.10 发布说明 在Github 上。

警告

构建系统重大更改

v 3.9驾驶员引入了以下重大更改:

  • 删除了对 CMake项目构建树中导出目标的支持

  • 删除支持macOS 10.14 、macOS 10.15和Ubuntu 14.04的支持

  • 需要MongoDB C驱动程序v 1.25.0或更高版本

  • 需要 CMake v 3.15或更高版本才能支持FetchContent模块

v 3.9驾驶员发布包括以下新功能:

  • C++驾驶员容器映像现已在 Docker Hub 上提供。

  • 如果您未提供,驾驶员会自动下载MongoDB C驱动程序依赖项。

  • 驾驶员不再将测试构建为all目标的一部分。 要构建测试,请将BUILD_TESTING=ON设立为 CMake 配置的一部分。

  • 驾驶员使用FetchContent 模块下载并构建 MNMLSTC 核心 polyfill 库(如果系统未提供),而不是ExternalProject 模块。它也不会修补 MNMLSTC Core 标头中的include指令。

  • 添加 CMake 选项MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX 。 如果此选项设立为TRUE ,则CMAKE_INSTALL_PREFIX选项默认为构建目录。 此选项的默认值为TRUE

  • 添加用于管理Atlas Search索引的API 。

  • VERSIONINFO资源添加到bsoncxx.dllmongocxx.dll

  • 明确记录从 APM回调中引发异常是未定义行为。

  • 在 CMake构建步骤中,不会过早安装 MNMLSTC Core 标头。

  • 要求所有已安装的C++驾驶员包配置通过find_dependency()找到MongoDB C驱动程序CMake包。

要学习;了解有关此发布的更多信息,请参阅 v3.9 发布说明 在Github 上。

后退

ABI 版本控制