Skip to content

MongoDB C++11 Driver 3.0.0-rc0

Pre-release
Pre-release
Compare
Choose a tag to compare
@acmorrow acmorrow released this 11 Jan 22:33
· 626 commits to legacy since this release

This is the first release candidate of the new MongoDB C++11 driver. This is a pre-release version of the driver and is not suitable for production use.

Please see our blog post for a full description of the new driver's design goals. The new driver is incompatible with all previous MongoDB C++ drivers. Due to the long history and complex version numbering of prior C++ drivers released by MongoDB, the C++11 driver is issuing its first stable release as 3.0.0. This is the lowest major version number that was found to be unambiguous with all previously released MongoDB C++ driver versions.

As specified in the Quickstart Guide, building the driver requires a conforming C++11 compiler (GCC 4.9, clang-3.4, VS 2015 Update 1, etc.) and depends on the 1.3 release of the MongoDB C Driver.

While we plan to commit to a stable ABI in the future, versions prior to 3.1.0 will not offer a stable ABI. The library currently has a soname ABI version of _noabi which indicates no API or ABI stability guarantee across any two releases. We are holding off on setting an ABI version so that we can incorporate post-GA feedback before locking down the ABI.

API documentation can be found here. Please file JIRA tickets if you encounter any problems using the driver. Pull requests against the master branch are welcomed and encouraged.

Please note the following known issues in this release:

Known Issues

  • [CXX-778] - C++ driver SSL cannot be configured independently of C driver
  • [CXX-771] - Max time argument to some collection methods is ignored
  • [CXX-784] - Cannot use `document::view` with stream builder
  • [CXX-522] - Windows calling convention not specified for free functions
  • [CXX-805] - `options::find::comment` is not honored
  • [CXX-758] - Read concern is not inherited when not explicitly set
  • [CXX-807] - Required compiler minima not enforced by CMake
  • [CXX-808] - Missing error codes for server-side errors

Detailed information on the changes in this release since 0.2.0 (the prior alpha) can be found in the tickets below:

Bugs Fixed

  • [CXX-638] - C++ Driver on master fails to compile with Visual Studio 2015
  • [CXX-640] - actually set options in mongocxx::client constructor
  • [CXX-661] - bsoncxx::oid hex string constructor broken
  • [CXX-677] - bsoncxx static lib wrongly called bson.a
  • [CXX-681] - Cannot get deleted_count from result of collection::delete_one/many
  • [CXX-687] - collection::create_index does not support any options
  • [CXX-702] - database::create_collection not implemented
  • [CXX-713] - Add MONGOCXX_PRIVATE macro to all private constructors / methods
  • [CXX-723] - Actually sort documents with find
  • [CXX-730] - string_view.data() is unsafe
  • [CXX-731] - New driver examples seg fault
  • [CXX-742] - client::database() should raise an exception if client is uninitialized
  • [CXX-743] - Documentation for database::list_collections doesn't match declaration
  • [CXX-745] - Implement mongocxx::database::drop()
  • [CXX-755] - C++ driver fails to build when ssl is disabled on the C driver
  • [CXX-757] - document{} << const char* casts argument to bool
  • [CXX-759] - document/array::view.begin() != .end() for empty documents
  • [CXX-761] - Stream builder error for invalid context is unfriendly
  • [CXX-762] - Audit construction, copy, move and destruction of bsoncxx::v0::types::value
  • [CXX-774] - Cmake/Make parallelized build fails
  • [CXX-781] - CMake path incorrect when subproject
  • [CXX-788] - Number of 'const' qualifiers in return values
  • [CXX-791] - bulk_write constructor should take an enum not a boolean
  • [CXX-798] - Printing the inserted IDs returned by a bulk_write throws
  • [CXX-801] - bsoncxx::view_or_value should have private members
  • [CXX-802] - coll.drop() throws if collection doesn't exist

Improvements

  • [CXX-578] - expose wrapper for mongoc_log_handler
  • [CXX-580] - add syntactic sugar for reaching into deeply nested BSON structures
  • [CXX-585] - Make all publicly visible macros hygenic
  • [CXX-608] - Permit default construction of client/db/collection
  • [CXX-616] - simplify bsoncxx/util/functor.hpp
  • [CXX-626] - Provide support to construct b_date from std::chrono::time_point
  • [CXX-628] - Create an unreachable macro and use where needed
  • [CXX-629] - Attach visibility attribute to enum classes where needed
  • [CXX-630] - Improve move semantics of model::write
  • [CXX-631] - collection::create_index should return server response
  • [CXX-632] - de-inline collection::insert_many body to the extent possible
  • [CXX-633] - Understand requirements on count::hint
  • [CXX-634] - Find a home for options::return_document enum
  • [CXX-635] - Determine desired visibility of insert_many constructor
  • [CXX-636] - Determine return type of write_concern::tag
  • [CXX-654] - Add empty() to bsoncxx::array::view()
  • [CXX-704] - Create Write Concern W enum (for majority, default, etc)
  • [CXX-710] - Allow copying of collections
  • [CXX-712] - Add ordered option to insert_many
  • [CXX-715] - Add CRL file to SSL options
  • [CXX-716] - use stdx names in the mongocxx via mongocxx/stdx.hpp
  • [CXX-727] - Make it possible to rename collections
  • [CXX-733] - Move BSONCXX_INLINE and MONGOCXX_INLINE to a compiler header
  • [CXX-750] - Rename database::command to database::run_command
  • [CXX-751] - specified timeouts with chrono
  • [CXX-753] - Allow copying of databases
  • [CXX-756] - Make accessor methods to get at raw pointer for bson
  • [CXX-786] - Remove deprecated 'implementation' methods from all classes
  • [CXX-795] - Evergreen and travis builds should also run the bsoncxx unit tests
  • [CXX-799] - Update insert_many test in test/collection.cpp
  • [CXX-803] - Set the ABI version of the 3.0.0 release to something indicating the lack of a stable ABI

New Features

  • [CXX-549] - Provide abstraction over C driver client pool
  • [CXX-627] - Implement mongocxx exception hierarchy
  • [CXX-649] - make std::error_category for C driver error codes
  • [CXX-679] - bsoncxx::basic::builder should support concatenate
  • [CXX-686] - Support Filtered (Partial) Indexes
  • [CXX-690] - Support bypassDocumentValidation
  • [CXX-691] - options::find should be able to take a $hint
  • [CXX-693] - findAndModify take a write concern
  • [CXX-695] - Support "read committed" isolation level where "committed" means confimed by the voting majority of a replica set
  • [CXX-720] - Add document validation support to CreateCollectionOperation
  • [CXX-722] - Add option maxAwaitTimeMS on getMore commands
  • [CXX-725] - Add a collMod helper that takes document validation rules
  • [CXX-738] - Add variant type for bson document view_or_value
  • [CXX-739] - Add variant type for string_view_or_value
  • [CXX-760] - CMake Configuration needs alternate mechanism to find C driver instead of pkg-config
  • [CXX-768] - Implement bsoncxx exception hierarchy
  • [CXX-792] - Add support for using boost to provide stdx polyfills