新增功能
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的支持。
3.11 中的新功能
警告
重大更改
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()
成员函数。
要学习;了解有关此发布的更多信息,请参阅 3.11GithubGitHub 上的 v 发布说明 。
3.10 中的新功能
警告
构建系统重大更改
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 驾驶员发布包括以下新功能:
添加提供
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 配置的一部分。
要学习;了解有关此发布的更多信息,请参阅 v3.10 发布说明 在Github 上。
3.9 中的新功能
警告
构建系统重大更改
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.dll
和mongocxx.dll
。明确记录从 APM回调中引发异常是未定义行为。
在 CMake构建步骤中,不会过早安装 MNMLSTC Core 标头。
要求所有已安装的C++驾驶员包配置通过
find_dependency()
找到MongoDB C驱动程序CMake包。
要学习;了解有关此发布的更多信息,请参阅 v3.9 发布说明 在Github 上。