MongoDB C++ Driver v2.0-rc0 Release Notes

Release Date: 2017-11-17 // over 6 years ago
  • ๐Ÿš€ This is the first release candidate for mongocxx 3.2.0, the MongoDB C++11 driver.

    ๐Ÿš€ This release provides additional support for new features in MongoDB 3.4, introduces support for GridFS, and includes a large number of fixes and improvements since the 3.1.x release series.

    ๐Ÿš€ Please note that this version of mongocxx requires the MongoDB C driver 1.8.2.

    ๐Ÿ‘€ See the MongoDB C++ Driver Manual and the Driver Installation Instructions for more details on downloading, installing, and using this driver.

    NOTE : The mongocxx 3.2.x series does not promise API or ABI stability across patch releases.

    The full list of user-visible issues that have been resolved in 3.2.0-rc0 since the prior 3.1.x series are as follows:

    ๐Ÿ› Bug

    • [CXX-771] - Change collection methods to use options.max_time()
    • ๐Ÿ“„ [CXX-994] - Fix missing or misleading docs about pools, thread/fork safety and background monitoring
    • ๐Ÿ— [CXX-1014] - bsoncxx::builder::core exceptions are undocumented
    • [CXX-1043] - Add doxygen tag for mongocxx and bsoncxx namespaces
    • ๐Ÿ—„ [CXX-1080] - Document autoIndexId as deprecated
    • [CXX-1118] - BSON Regex flags must be alphabetically ordered
    • [CXX-1144] - Mutator methods which return non-void should document their return value
    • ๐Ÿ— [CXX-1150] - bsoncxx builders should error when multiple keys are pushed without a value
    • ๐Ÿ— [CXX-1151] - bsoncxx::builder::core::view_document() and bsoncxx::builder::core::view_array() should throw when builder top-level BSON datum type is incorrect
    • ๐Ÿ— [CXX-1152] - Context enforcement for BSON stream builder doesn't play nicely with statements that leave open sub-documents or sub-arrays
    • ๐ŸŽ [CXX-1158] - Unable to link against SSL libs on MacOS
    • ๐Ÿ‘ [CXX-1163] - Compiling with SSL support doesn't work
    • [CXX-1172] - Document result::bulk_write::modified_count() throws with mongod 2.4
    • [CXX-1175] - Drivers MUST NOT require a username *in the URI* for MONGODB-X509
    • [CXX-1178] - CMAKE_C_COMPILER, CMAKE_CXX_COMPILER not passed to CMake invocation for EP_mnmlstc_core
    • [CXX-1187] - mongocxx::uri::database() segfaults if no database specified in URL
    • ๐Ÿ“š [CXX-1196] - Improve mongocxx::instance documentation
    • โœ… [CXX-1220] - Invalid URI passed to SSL unit test for mongocxx::pool
    • ๐Ÿ— [CXX-1228] - fix minor issues with stream builder and example
    • [CXX-1231] - When patching include paths to use 'mnmlstc', avoid filename collisions (PR #582)
    • [CXX-1242] - Index pages from each section in driver manual fail to render properly
    • [CXX-1243] - Audit GridFS implementation for correct handling of user-provided and server-provided file lengths and chunk sizes
    • ๐Ÿ— [CXX-1246] - bsoncxx::builder::stream::single_context should not permit appending of multiple values
    • [CXX-1252] - Tailable cursors only work once
    • โฑ [CXX-1254] - Document that write_concern timeout of zero means no timeout
    • [CXX-1258] - Cursor iterators lose lockstep at cursor end
    • 0๏ธโƒฃ [CXX-1279] - Copy assignment for database/collection incorrectly degrades to no-op if rhs is default-constructed
    • [CXX-1281] - collection::find() and collection::distinct() leak a mongoc_cursor_t on some error paths
    • [CXX-1285] - aggregate sets read preference option incorrectly
    • [CXX-1300] - Prevent mongoc_init/mongoc_cleanup from running more than once
    • [CXX-1302] - Documentation for read_concern::acknowledge_string() should clarify that any read concern string can be passed in
    • [CXX-1317] - bucket::upload_from_stream() and bucket::upload_from_stream_with_id() should abort upload on failure
    • [CXX-1322] - gridfs::bucket::upload_from_stream and upload_from_stream_with_id infinitely loop on invalid ifstream without error bits set
    • ๐Ÿ— [CXX-1324] - Examples not running under Ubuntu 16.04 builders
    • ๐Ÿ†“ [CXX-1325] - Overly-greedy template substitution in declarations of comparison operator free functions for bsoncxx::types::value
    • [CXX-1338] - Capped size in bytes is limited to 32bit integer, need 64bit integer
    • [CXX-1341] - Wrong integer type for many CRUD spec API fields
    • [CXX-1346] - PR: fixing more __imp_bson and __imp_mongoc linker errors
    • [CXX-1347] - Calls to bson_append_* are not checked for errors in the core builder
    • [CXX-1367] - bsoncxx::types::timestamp t and i parts are reversed
    • [CXX-1387] - Bulk write operations don't inherit write concern from the collection
    • ๐Ÿ— [CXX-1441] - Build fails on Evergreen because of use of deprecated libmongoc API
    • [CXX-1453] - Compilation fails on GCC 6 due to -Wignored-attributes
    • โœ… [CXX-1454] - list_collections test fails with MMAPv1 storage engine
    • ๐Ÿ—„ [CXX-1458] - Deprecate ~frame() destructor, and add close() function as replacement
    • [CXX-1461] - Missing UNREACHABLE in json.cpp
    • [CXX-1463] - b_regex and b_codewscope constructors lack SFINAE protections

    Epic

    • ๐Ÿ”ง [CXX-1257] - Revise static library naming and link configuration
    • [CXX-1358] - Implement the index view API for the C++ driver
    • [CXX-1372] - Implement the microbenchmark suite and generate scores for the driver

    ๐Ÿ†• New Feature

    • ๐Ÿ— [CXX-915] - Add example of how to write a CMake project to build against the C++11 driver
    • [CXX-995] - Add mongocxx::pool examples
    • ๐Ÿ—„ [CXX-1055] - Add new read_preference setters that support method chaining, deprecate existing setters and constructors
    • [CXX-1060] - Adopting bsoncxx::stdx polyfills into mongocxx::stdx namespace is confusing
    • [CXX-1075] - Add section to manual on connecting with auth and SSL
    • [CXX-1085] - Inconsistent API for operation level write concern
    • ๐Ÿ—„ [CXX-1086] - Deprecate non-const methods on mongocxx::client
    • ๐Ÿ“š [CXX-1087] - Public method documentation for command helpers should point users to command reference, not shell method reference
    • [CXX-1121] - Include MONGOCXX_CALL and BSONCXX_CALL macros with function definitions
    • [CXX-1130] - Implement GridFS Spec
    • [CXX-1159] - Make unwrapping conversion operators constant (PR #577)
    • [CXX-1160] - Please add instructions to compile Mongo C++ driver as static library
    • 0๏ธโƒฃ [CXX-1161] - b_regex should provide a default value for options string
    • [CXX-1174] - Introduce make_document() and make_array() helpers, builder::core append style methods should return ref-to-this
    • ๐Ÿ— [CXX-1202] - Document how to build array in a loop with stream builder
    • โšก๏ธ [CXX-1207] - Update vendored Catch to latest stable version
    • [CXX-1233] - Create GridFS upload/download example
    • [CXX-1241] - Implement Extended JSON spec
    • [CXX-1255] - Add a "file length" accessor to gridfs::downloader
    • ๐Ÿ— [CXX-1280] - Basic builders are not copyable or movable
    • [CXX-1282] - collection::name() should not guarantee returned string is null-terminated
    • [CXX-1283] - scoped_bson_t should simplify use case providing a pointer for initialization
    • [CXX-1307] - bsoncxx: Change static library name to "bsoncxx-static", add static-only pkg-config and CMake config files
    • [CXX-1308] - Add basic integration tests for GridFS bucket methods other than open_upload_stream()/open_download_stream()
    • [CXX-1313] - "bsoncxx" depends on "bson-1.0" if BUILD_SHARED_LIBS, else depends on "bson-static-1.0"
    • [CXX-1315] - mongocxx: Change static library name to "mongocxx-static", add static-only pkg-config and CMake config files, depend on mongoc-static-1.0 if BUILD_SHARED_LIBS=OFF
    • โœ… [CXX-1316] - Add tests for installed pkg-config and installed CMake config files
    • โœ… [CXX-1318] - Add GridFS integration tests which upload/download files of size >4 GB
    • [CXX-1334] - Add index hint to aggregation and non-materialized views
    • ๐Ÿ‘ [CXX-1356] - Add support for reading and writing OP_COMPRESSED
    • [CXX-1359] - Replace use of index options in API with BSON document
    • [CXX-1360] - Implement index_model and add dummy implementation of index_view
    • [CXX-1362] - Replace dummy index view implementation with actual implementation
    • ๐Ÿ‘ [CXX-1464] - Support non-experimental use of std::optional and string::view in C++17 mode

    ๐Ÿ‘Œ Improvement

    • [CXX-869] - mongocxx::result::insert_many::inserted_ids() should be const
    • [CXX-984] - Improve use of bson_init_static
    • [CXX-992] - bsoncxx::document::view::find() should be rewritten to avoid string allocation
    • ๐Ÿ”จ [CXX-1169] - Minor refactoring (PR #578)
    • [CXX-1188] - Add functionality to write a model for mongocxx::collection
    • [CXX-1217] - GridFS download streams should kill the cursor when closed
    • [CXX-1333] - Cache SCRAM-SHA-1 ClientKey
    • [CXX-1429] - Document polyfill option BSONCXX_POLY_USE_SYSTEM_MNMLSTC
    • โœ… [CXX-1447] - Reduce use of deprecated methods in test files