Mongo Cxx Driver Versions Save

C++ Driver for MongoDB

r3.10.1

2 months ago

Fixed

  • (MSVC only) The name of the libbsoncxx package in the "Requires" field of the libmongocxx pkg-config file incorrectly used the library output name instead of the pkg-config package name when ENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=OFF.
  • (MSVC only) The translation of the MSVC_RUNTIME_LIBRARY target property into an ABI tag parameter in library and package filenames did not account for generator expressions.

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:

r3.10.0

2 months ago

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.
  • 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 and mongocxx::v_noabi namespaces are no longer declared inline.
    • 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 to bsoncxx::v_noabi::document, mongocxx::client is still equivalent to mongocxx::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 setting ENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON (requires ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ON).

Removed

  • Deprecated CMake package config files.
    • find_package(libbsoncxx) and find_package(libmongocxx) are no longer supported. Use find_package(bsoncxx) and find_package(mongocxx) instead.
    • Accordingly, LIBBSONCXX_* and LIBMONGOCXX_* CMake variables provided by the legacy CMake package config files are no longer supported. Use the mongo::bsoncxx_* and mongo::mongocxx_* CMake targets instead.
    • Note: manually setting compile definitions, include directories, and link libraries is unnecessary with target-based CMake. The former LIBBSONCXX_* and LIBMONGOCXX_* CMake variables are superseded by the target_link_libraries() CMake command, which automatically propagates the necessary compile definitions, include directories, and link libraries to dependent targets via mongo::bsoncxx_* and mongo::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:

r3.9.0

6 months ago

Added

  • The C++ driver container image is now available on Docker hub.
  • Document availability of on vcpkg and Conan.
  • Add CMake option MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX (default is TRUE for backwards-compatibility). If enabled, CMAKE_INSTALL_PREFIX defaults to the build directory.
  • Add API to manage Atlas Search Indexes.
  • Automatically download C driver dependency if not provided.
  • Add VERSIONINFO resource to bsoncxx.dll and mongocxx.dll.

Changed

  • Do not build tests as part of all target. Configure with BUILD_TESTING=ON to build tests.
  • Bump minimum required CMake version to 3.15 to support the FetchContent module and for consistency with the C Driver.
  • Improve handling of downloaded (non-system) mnmlstc/core as the polyfill library.
    • Use FetchContent instead of ExternalProject to download and build the library.
    • Do not patch include directives in mnmlstc/core headers.
  • Bump minimum C Driver version to 1.25.0.

Fixed

  • Explicitly document that throwing an exception from an APM callback is undefined behavior.
  • Do not prematurely install mnmlstc/core headers during the CMake build step.
  • Require a C Driver CMake package is found via find_dependency() for all installed CXX Driver package configurations.

Removed

  • Remove support for exported targets from the CMake project build tree.
  • Drop support for the following operating systems:
    • macOS 10.14 and 10.15
    • Ubuntu 14.04

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:

r3.8.1

7 months ago

Release Notes - C++ Driver - Version 3.8.1

Bug

  • [CXX-2295] - [ChangeStream] options::change_stream::start_at_operation_time accept uses internal bsoncxx::types::b_timestamp in API
  • [CXX-2726] - Do not override CMAKE_BUILD_TYPE for multi-config generators

New Feature

Improvement

  • [CXX-2480] - Update docs.mongodb.com links in source, API & Reference documentation

r3.8.0

10 months ago

Release Notes - C++ Driver - Version 3.8.0

What's New

  • Support MongoDB server version 6.0 and 7.0
  • Support C++20 language standard
  • Support updated Queryable Encryption protocol
    • Introduces backwards breaking changes to the Queryable Encryption protocol. Using Queryable Encryption now requires MongoDB server version 7.0+.
  • Support new Queryable Encryption features
    • Add client_encryption::create_encrypted_collection to automatically create data encryption keys when creating a new encrypted collection.
  • Support new security features
    • Add ability to fetch KMS credentials automatically from Azure, GCP, and AWS environments.
    • Support authentication with KMS AWS temporary credentials.
    • Cache fetched AWS credentials.
    • Support AWS IAM Roles for service accounts, EKS in particular.
  • Add srvMaxHosts option to limit the number of mongos servers used in connecting to sharded clusters.
  • Retry operations if the connection handshake fails.

Dependency updates

  • Minimum C Driver (libmongoc) version bumped to 1.24.0.

Deprecations and Removals

Support for below operating systems will be dropped in an upcoming release.

  • macOS 10.14
  • macOS 10.15
  • Ubuntu 14.04

Bug

  • [CXX-2451] - Kerberos on Windows should not pass username to SSPI when password is not set
  • [CXX-2548] - Disable causal consistency in implicit sessions
  • [CXX-2599] - Error if RewrapManyDataKey is called with masterKey and without provider
  • [CXX-2670] - options::aggregate::append ignores readConcern

New Feature

  • [CXX-2307] - Add native support for AWS IAM Roles for service accounts, EKS in particular
  • [CXX-2318] - Provide options to limit number of mongos servers used in connecting to sharded clusters
  • [CXX-2425] - Key Management API
  • [CXX-2474] - Add ClientEncryption entity and Key Management API operations to Unified Test Format
  • [CXX-2496] - Add Queryable Encryption behavior for CreateCollection() and Collection.Drop()
  • [CXX-2500] - Add Queryable Encryption API to AutoEncryptionOpts
  • [CXX-2502] - Add Queryable Encryption API to ClientEncryptionOpts
  • [CXX-2508] - Obtain AWS credentials for CSFLE in the same way as for MONGODB-AWS
  • [CXX-2546] - Automatically create Queryable Encryption keys
  • [CXX-2554] - Cache AWS Credentials Where Possible

Improvement

  • [CXX-1712] - Overload bsoncxx::to_json to accept a bsoncxx::array::view
  • [CXX-2172] - Support AWS authentication with temporary credentials in CSFLE
  • [CXX-2284] - Append platform data to handshake
  • [CXX-2344] - Use OP_MSG to authenticate if server supports OP_MSG
  • [CXX-2393] - Drivers should retry operations if connection handshake fails
  • [CXX-2394] - Require hello command for connection handshake to use OP_MSG, disallowing OP_QUERY
  • [CXX-2433] - Support In-Use Encryption Shared Library
  • [CXX-2441] - Add example of iterating change stream indefinitely
  • [CXX-2490] - Make allowDiskUse opt-out rather than opt-in in 6.0
  • [CXX-2491] - Clustered Indexes for all Collections
  • [CXX-2517] - Support for Range Indexes
  • [CXX-2527] - Reduce expected removeKeyAltName operations to a single findOneAndUpdate
  • [CXX-2528] - Ensure "does not fail" in CSE Prose Test 13 accounts for (no) matching documents
  • [CXX-2534] - Allow RewrapManyDataKeyResult.bulkWriteResult to be optional
  • [CXX-2551] - Add support for GCP attached service accounts when using GCP KMS
  • [CXX-2562] - Error if RewrapManyDataKey is called with libmongocrypt
  • [CXX-2565] - Support the Azure VM-assigned Managed Identity for Automatic KMS Credentials
  • [CXX-2610] - Improve test coverage for retryable handshake errors
  • [CXX-2637] - Deprecate currentOp/collStats commands by 7.0
  • [CXX-2642] - Drivers should not create the ECC collection in v2 of queryable encryption
  • [CXX-2664] - Bump maxWireVersion for MongoDB 7.0

See full list of changes in JIRA.

Reporting Issues

Think you’ve found a bug? Want to see a new feature in the C++ Driver? Please open a case in our issue management tool, Jira:
  • Create an account and login.
  • Navigate to the CXX project.
  • Click Create Issue. Please provide as much information as possible about the issue type and how to reproduce it.
  • Bug reports in Jira for all driver projects (i.e. CXX, CDRIVER etc) and the Core Server (i.e. SERVER) projects are public.

r3.7.2

11 months ago

Release Notes - C++ Driver - Version 3.7.2

Bug

  • [CXX-2686] - Fails to compile with GCC 13.0.1

r3.7.1

1 year ago

Release Notes - C++ Driver - Version 3.7.1

Bug

  • [CXX-2584] - Update libmongoc dependency to 1.22.1 in CMakeLists.txt
  • [CXX-2650] - Fix limit value in open_download_stream

Improvement

  • [CXX-2629] - Remove requirement to set `/Zc:__cplusplus` in MSVC flags

r3.7.0

1 year ago

Release Notes - C++ Driver - Version 3.7.0

Bug

  • [CXX-1891] - Coverity analysis defect 105008: Uninitialized scalar field
  • [CXX-2093] - rpm-package-build on Linux Distro Packaging failing
  • [CXX-2117] - Oid prose tests fail on s390x Ubuntu 18.04 (MongoDB 4.4)
  • [CXX-2237] - listLocalSessions test occasionally fails
  • [CXX-2258] - Prelude headers applied incorrectly
  • [CXX-2276] - Install tries to remove empty directories
  • [CXX-2327] - hard-coded libdir in pkg-config scripts breaks with lib64
  • [CXX-2329] - options::server_api::version_from_string() throws the wrong type
  • [CXX-2330] - calc_release_version.py produces different output for Python2 vs Python3
  • [CXX-2358] - Compilation failure (tests) with glibc 2.34
  • [CXX-2364] - Remove git merge markers from docs/content/mongocxx-v3/client-side-encryption.md
  • [CXX-2447] - Fix comment helper specification tests
  • [CXX-2455] - Fix server version incompatibility for updateOne-let and updateMany-let server-side error tests
  • [CXX-2457] - Fix getMore with comment specs
  • [CXX-2461] - Fix server version incompatibility for bulkWrite updateOne and updateMany server-side error tests of let support
  • [CXX-2475] - Inherited comment causes OperationFailure on MongoDB
  • [CXX-2539] - collection::find_one_and_* may raise exception with unacknowledged write concern

New Feature

  • [CXX-1173] - Support users adding mongocxx as a CMake subdirectory
  • [CXX-1619] - Implement ObjectID spec
  • [CXX-1628] - Code coverage in Evergreen
  • [CXX-1714] - Resync CRUD spec tests to use transaction spec test format
  • [CXX-2254] - Implement Evergreen testing for versioned API
  • [CXX-2478] - Change Stream event document missing "to" field for rename events

Improvement

  • [CXX-1455] - Add JSON-like syntax to construct BSON object
  • [CXX-1530] - Ensure example code is consistent with docs processes
  • [CXX-1643] - Use mongoc_uri_new_with_error for better exception messages
  • [CXX-1660] - Fix doxygen warnings
  • [CXX-1697] - Test with C driver extra alignment on
  • [CXX-1739] - Create rpm-package-build Evergreen task
  • [CXX-1817] - Rename get_utf8() to get_string()
  • [CXX-1824] - Add missing tests for aggregation pipeline in bulk write updates
  • [CXX-1898] - Separate installation instructions into more discrete guides
  • [CXX-1945] - separate BulkWrite tests by operation
  • [CXX-1975] - Tests drivers raise error if hint specified for unacknowledged delete using OP_MSG or OP_DELETE
  • [CXX-1985] - Support for 'authorizedDatabases' option
  • [CXX-2002] - Raise error when hint option is provided on unacknowledged writes against any server version
  • [CXX-2019] - Test arrayFilters on non-supporting server for subsequent ops in bulkWrite
  • [CXX-2049] - Add a way to run specific test suites or tests in test_driver
  • [CXX-2057] - Add tests for update/replacement validation in single and bulk write operations
  • [CXX-2064] - Test that ElectionInProgress is not resumed
  • [CXX-2067] - Expose bson_value::value type constructors
  • [CXX-2074] - Testing Data Lake with Drivers
  • [CXX-2088] - Implement ENABLE_TESTS CMake option
  • [CXX-2094] - Correctly express lack of event assertions in change stream tests
  • [CXX-2109] - Deprecate all references to utf8
  • [CXX-2111] - Support Azure and GCP keystores in FLE
  • [CXX-2116] - Document rpath for non-standard install location
  • [CXX-2125] - Add comparison operators for bson_value and element
  • [CXX-2130] - Add append method for list builder
  • [CXX-2131] - Add extract_document and extract_array methods for list builder
  • [CXX-2132] - Remove builder::list in favor of builder::document and builder::array
  • [CXX-2138] - Versioned MongoDB API for Drivers
  • [CXX-2155] - Sharing a MongoClient for metadata lookup can lead to deadlock in drivers using automatic encryption
  • [CXX-2164] - Migrate away from travis-ci
  • [CXX-2179] - Implement change stream oplog parsing code for delta oplog entries
  • [CXX-2193] - Change estimatedDocumentCount() to use the $collStats Agg Stage Instead of Count Command
  • [CXX-2202] - Support Removal of Several Platform Builds
  • [CXX-2206] - Test that KMS TLS connections verify peer certificates
  • [CXX-2226] - Vendor Fedora RPM spec file
  • [CXX-2229] - Convert CRUD v2 spec tests to unified test format
  • [CXX-2230] - Upgrade unified test runner to version 1.1
  • [CXX-2239] - Convert change stream spec tests to unified test format
  • [CXX-2257] - Stable API Connection Examples for Docs
  • [CXX-2265] - Add test for security-sensitive command monitoring event redaction
  • [CXX-2269] - Test against 5.0 servers
  • [CXX-2274] - Support 'let' option for aggregate command
  • [CXX-2345] - Investigate changes in SERVER-58612: Add BSON Binary subtype 7
  • [CXX-2368] - Snapshot reads on Secondaries
  • [CXX-2400] - Add support for the comment field to all helpers
  • [CXX-2410] - Support KMIP provider
  • [CXX-2415] - mongocxx::read_preference::tags(bsoncxx::document::view_or_value) should take a bsoncxx::array::view_or_value
  • [CXX-2424] - Add GridFS partial download
  • [CXX-2438] - Change streams support for user-facing PIT pre- and post-images
  • [CXX-2458] - Avoid warnings when compiling with -Wfloat-equal
  • [CXX-2470] - test_util for matching exceptions should produce clearer explanation
  • [CXX-2492] - Platform Support: Add Enterprise RHEL 8 (zSeries)
  • [CXX-2497] - Always report 'wallTime' in the change stream event output

r3.6.7

2 years ago

Release Notes - C++ Driver - Version 3.6.7

Bug

  • [CXX-2358] - Compilation failure (tests) with glibc 2.34

r3.7.0-beta1

2 years ago

Release Notes - C++ Driver - Version 3.7.0-beta1

Includes support for MongoDB Atlas Serverless.