Added
- Forward headers providing non-defining declarations of bsoncxx and mongocxx class types.
- Note: user-defined forward declarations of any library entity has not been, and is still not, supported.
To obtain the declaration or definition of a library entity, always include the corresponding header.
- Note: user-defined forward declarations of any library entity has not been, and is still not, supported.
- The CMake option
ENABLE_BSONCXX_USE_POLY_IMPLS
(OFF by default) allows selecting bsoncxx implementations of C++17 polyfills by default when no polyfill library is requested. - The CMake option
BSONCXX_POLY_USE_IMPLS
(OFF by default) allows selecting bsoncxx implementations of C++17 polyfills instead of external libraries or the C++ standard library.
Changed
- The
bsoncxx::v_noabi
andmongocxx::v_noabi
namespaces are no longer declaredinline
.- This change is not expected to break source or binary compatibility, but is nevertheless documented here due to its significance. If this change does inadvertently break source or binary compatibility, please submit a bug report.
- Root namespace declarations are still supported and expected to remain equivalent to their prior definitions (e.g.
bsoncxx::document
is still equivalent tobsoncxx::v_noabi::document
,mongocxx::client
is still equivalent tomongocxx::v_noabi::client
, etc.). Argument-dependent lookup and template instantiations are expected to remain equivalent to their prior behavior. - Note: user-defined forward declarations of any library entity has not been, and is still not, supported.
To obtain the declaration or definition of a library entity, always include the corresponding header.
- Library filenames, when compiled with MSVC (as detected by CMake's MSVC variable), are now embedded with an ABI tag string, e.g.
bsoncxx-v_noabi-rhs-x64-v142-md.lib
.- This new behavior is enabled by default; disable by setting
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=OFF
when configuring the CXX Driver. - The ABI tag string can also be embedded in pkg-config metadata filenames, e.g.
libbsoncxx-v_noabi-rhs-x64-v142-md.pc
. This is disabled by default; enable by settingENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON
(requiresENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ON
).
- This new behavior is enabled by default; disable by setting
Removed
- Deprecated CMake package config files.
find_package(libbsoncxx)
andfind_package(libmongocxx)
are no longer supported.
Usefind_package(bsoncxx)
andfind_package(mongocxx)
instead.- Accordingly,
LIBBSONCXX_*
andLIBMONGOCXX_*
CMake variables provided by the legacy CMake package config files are no longer supported. Use themongo::bsoncxx_*
andmongo::mongocxx_*
CMake targets instead. - Note: manually setting compile definitions, include directories, and link libraries is unnecessary with target-based CMake. The former
LIBBSONCXX_*
andLIBMONGOCXX_*
CMake variables are superseded by thetarget_link_libraries()
CMake command, which automatically propagates the necessary compile definitions, include directories, and link libraries to dependent targets viamongo::bsoncxx_*
andmongo::mongocxx_*
interface properties.
- Experimental C++ standard library as a polyfill option via
BSONCXX_POLY_USE_STD_EXPERIMENTAL
.
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
.