San Giovanni li Cuti - Catania

I just released version 1.3.0 of libbson and libmongoc, the C libraries that compose the MongoDB C Driver. The changelist is massive; the highlights are support for new MongoDB 3.2 features, and a widespread cleanup of GridFS.

Links:

libbson

Since the release candidate libbson 1.3.0-rc0, the only changes have been fixes for compiler warnings and errors on various platforms.

All changes since the previous stable release, libbson 1.2.1:

  • Fix potential crash in bson_strncpy on Windows.
  • Parse DBRefs correctly from JSON.
  • CMake option to disable building tests: "cmake -DENABLE_TESTS:BOOL=OFF".
  • Refactor the build system to declare library version in one place.
  • Fix compiler warnings and errors, especially with Visual Studio 2015 and IBM XL C.
  • Combine environment's CFLAGS with configure options when building.

libmongoc

Changes since the the release candidate, libmongoc 1.3.0-rc0:

  • Fix a cursor bug introduced on big-endian platforms in 1.3.0-beta0.
  • Improve documentation for mongoc_host_list_t.
  • Move private mongoc_host_list_t functions from public header.
  • Refactor the build system to declare library version in one place.

All new features and changes since the previous stable release, libmongoc 1.2.1:

  • If the driver is compiled without SSL support but a URI with "ssl=true" is passed to mongoc_client_new, mongoc_client_new_from_uri, or mongoc_client_pool_new, the function logs an error and returns NULL. Before, the driver would attempt a non-SSL connection.
  • mongoc_collection_find_and_modify will now apply the mongoc_collection_t's write_concern_t when talking to MongoDB 3.2.
  • Support for MongoDB 3.2's "readConcern" feature for queries, counts, and aggregations. The option "readConcernLevel" is now accepted in the MongoDB URI. New struct mongoc_read_concern_t, and functions operating on it:
  • mongoc_client_get_read_concern
  • mongoc_client_set_read_concern
  • mongoc_database_get_read_concern
  • mongoc_database_set_read_concern
  • mongoc_collection_get_read_concern
  • mongoc_collection_set_read_concern
  • mongoc_read_concern_copy
  • mongoc_read_concern_destroy
  • mongoc_read_concern_get_level
  • mongoc_read_concern_new
  • mongoc_read_concern_set_level
  • mongoc_uri_get_read_concern
  • Support for MongoDB 3.2's "bypassDocumentValidation" option for writes.
  • New struct mongoc_bulk_write_flags_t and related functions:
  • mongoc_bulk_operation_set_bypass_document_validation
  • New struct mongoc_find_and_modify_opts_t and related functions:
  • mongoc_find_and_modify_opts_new
  • mongoc_find_and_modify_opts_destroy
  • mongoc_find_and_modify_opts_set_sort
  • mongoc_find_and_modify_opts_set_update
  • mongoc_find_and_modify_opts_set_fields
  • mongoc_find_and_modify_opts_set_flags
  • mongoc_find_and_modify_opts_set_bypass_document_validation
  • mongoc_collection_find_and_modify_with_opts
  • New functions to copy database and collection handles:
  • mongoc_collection_copy
  • mongoc_database_copy
  • Support for MongoDB 3.2 wire protocol: use commands in place of OP_QUERY, OP_GETMORE, and OP_KILLCURSORS messages.
  • To explain a query plan with MongoDB 3.2, you must now call the "explain" command, instead of including the "$explain" key in a mongoc_collection_find query. See the mongoc_collection_find documentation page for details.
  • Configurable wait time on tailable cursors with MongoDB 3.2:
  • mongoc_cursor_get_max_await_time_ms
  • mongoc_cursor_set_max_await_time_ms
  • Use electionId to detect a stale replica set primary during a network split.
  • Disconnect from replica set members whose "me" field does not match the connection address.
  • The client side matching feature, mongoc_matcher_t and related functions, are deprecated and scheduled for removal in version 2.0.
  • New CMake options ENABLE_SSL, ENABLE_SASL, ENABLE_TESTS, and ENABLE_EXAMPLES.
  • Use constant-time comparison when verifying credentials.
  • Combine environment's CFLAGS with configure options when building.
  • Improved man page output and "whatis" entries.

There are extensive bugfixes and improvements in GridFS since 1.2.1, including:

  • Handle seeking, reading, and writing past the end of a GridFS file.
  • If a GridFS chunk is missing, mongoc_gridfs_file_readv sets file->error to domain MONGOC_ERROR_GRIDFS and a new code MONGOC_ERROR_GRIDFS_CHUNK_MISSING.
  • Optimization for long seeks forward with mongoc_gridfs_file_seek.

Other fixes since 1.2.1:

  • Memory leaks in mongoc_database_has_collection and mongoc_cursor_next.
  • Report writeConcern failures from findAndModify and from legacy writes.
  • Memory leak in mongoc_database_find_collections.
  • Set OP_QUERY's nToReturn from the provided limit.
  • Fix compiler warnings and errors, especially with Visual Studio 2015, GCC 4.8, and IBM XL C.
  • Bugs and typos in tutorial examples.

Thanks to everyone who contributed to this release.

  • A. Jesse Jiryu Davis
  • Hannes Magnusson
  • Kyle Suarez
  • Jose Sebastian Battig
  • Matt Cotter
  • Claudio Canella
  • alexeyvo
  • Christopher Wang
  • Flavio Medeiros
  • Iago Rubio
  • Jeremy Mikola
  • Victor Leschuk
  • Mark Benvenuto
  • Petr Písař
  • xpol
  • Jeroen Ooms
  • Jason Carey

Peace,
— A. Jesse Jiryu Davis


Image: Davide Restivo