Important
This release removes and changes the exports of many unstable ABI symbols.
As a reminder, recompilation is required to link with a new release of the unstable ABI for mongo-cxx-driver libraries.
Added
- Experimental support for stable ABI interfaces under the
v1namespace for both bsoncxx and mongocxx libraries. - To support incremental migration, the following entities are defined as equivalent to their renamed counterparts.
bsoncxx::types::id: equivalent tobsoncxx::type.bsoncxx::types::binary_subtype: equivalent tobsoncxx::binary_sub_type.bsoncxx::types::view: equivalent tobsoncxx::types::bson_value::view.bsoncxx::types::value: equivalent tobsoncxx::types::bson_value::value.type_view()inbsoncxx::document::elementandbsoncxx::array::element: equivalent toget_value().type_value()inbsoncxx::document::elementandbsoncxx::array::element: equivalent toget_owning_value().
- Experimental support for In-Use Encryption Text Indexes (
mongocxx::v1::text_options). - Change stream helpers for convenient iteration (
mongocxx::v1::change_stream::nextandmongocxx::v1::change_stream::try_next).
Changed
Important
This release provides an experimental stable ABI for bsoncxx and mongocxx.
- For consistency with the library and package filenames of MongoDB C Driver 2.0.0 and newer:
- CMake package config files now use the
<name>Config.cmakeand<name>ConfigVersion.cmakepattern. (Old:<name>-config.cmakeand<name>-config-version.cmake)
- CMake package config files now use the
- CMake 3.16.0 or newer is required when
ENABLE_TESTS=ONfor compatibility with the updated Catch2 library version (3.7.0 -> 3.8.1). - Minimum supported compiler versions to build from source are updated to the following:
- GCC 8.1 (from GCC 4.8.2).
- Users on RHEL 7 may consult Red Hat's "Hello World - installing GCC on RHEL 7" or "How to install GCC 8 and Clang/LLVM 6 on Red Hat Enterprise Linux 7" for instructions on how to obtain GCC 8 or newer.
- Clang 3.8 (from Clang 3.5).
- Apple Clang 13.1 with Xcode 13.4.1 (from Apple Clang 5.1 with Xcode 5.1).
- MSVC 19.0.24210 with Visual Studio 2015 Update 3 (from MSVC 19.0.23506 with Visual Studio 2015 Update 1).
- GCC 8.1 (from GCC 4.8.2).
mongocxx::v_noabi::instance::~instance()no longer skips callingmongoc_cleanup()when compiled with ASAN enabled.- See google/sanitizers#89 for context.
- Bump the minimum required C Driver version to 2.2.3.
Deprecated
mongocxx::v_noabi::instance::current()is "for internal use only". Theinstanceconstructor(s) should be used instead.- Creating the
instanceobject in the scope ofmain(), or in an appropriate (non-global) scope such that its (non-static) lifetime is valid for the duration of all other mongocxx library operations, is recommended over the following workarounds. - If there is only one call to
current()present within an application, it may be replaced with a static local variable:// Before: mongocxx::instance::current(); // After: static mongocxx::instance instance; // Only ONE instance object!
- If there are multiple calls to
current()present within an application, they may be replaced with a call to a user-defined function containing the static local variable:mongocxx::instance& mongocxx_instance() { static mongocxx::instance instance; // Only ONE instance object! return instance; }
- Creating the
- These following entities will be renamed (and removed) in an upcoming major release. To support incremental migration, both old and new names are still provided.
bsoncxx::type->bsoncxx::types::id.bsoncxx::binary_sub_type->bsoncxx::types::binary_subtype.bsoncxx::types::bson_value::view->bsoncxx::types::viewbsoncxx::types::bson_value::value->bsoncxx::types::valueget_value()->type_view()inbsoncxx::document::elementandbsoncxx::array::element.get_owning_value()->type_value()inbsoncxx::document::elementandbsoncxx::array::element.
Removed
- Support for MongoDB Server 4.2.
- Support for macOS 11 and macOS 12 (deprecated in 4.1.0).
Fixed
- Do not throw when comparing
mongocxx::result::insert_manywith non-ObjectID IDs.
See the full list of changes in Jira.
Feedback
To report a bug or request a feature, please open a ticket in the MongoDB issue management tool Jira:
- Create an account and login.
- Navigate to the CXX project
- Click
Create.
Signature Verification
Release artifacts may be verified by using the accompanying detached signature (.asc) and the cpp-driver public key obtained from https://pgp.mongodb.com.