Releases: mongodb/mongo-c-driver
mongo-c-driver 2.0.0
Announcing 2.0.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
New Features
- Add support for BSON Binary Vector.
Changes
BSON_ERROR_BUFFER_SIZEis reduced from504to503to reserve the final byte for internal use.- The data layout of
bson_error_tremains otherwise unchanged: the size is still 512 bytes and the offset of the.code,.domain, and.messagedata members remain unchanged.
- The data layout of
- The pkg-config files
libbson-1.0andlibbson-static-1.0have been renamed tobson2, andbson2-static, respectively.
CMake Packages and Imported Targets
The bson-1.0 CMake package has been removed. Instead, use or bson, and
specify a version or version range to be imported:
find_package(bson 1.30...2.0)The new package imports different target names:
mongo::bson_static→bson::staticmongo::bson_shared→bson::shared- The target
bson::bsonis a shim target that points to either the shared library or the static library.
Removals
bson_as_jsonandbson_array_as_jsonare removed due to producing non-portable Legacy Extended JSON. Prefer Canonical Extended JSON or Relaxed Extended JSON for portability. To continue using Legacy Extended JSON, usebson_as_legacy_extended_jsonandbson_array_as_legacy_extended_json.- Compiling with
BSON_MEMCHECKdefined now has no effect. - Remove deprecated integral comparison interfaces:
bson_in_range_*andbson_cmp_*. - Remove deprecated atomic and threading interfaces:
bson_atomic_*andbson_thrd_yield. - The deprecated
ENABLE_EXTRA_ALIGNMENTCMake option is removed.bson_tandbson_iter_tare now aligned to the size of a pointer instead of128.bson_error_t,bson_value_t, andbson_visitor_tare now aligned to the size of a pointer instead of8.BSON_ALIGNED_BEGINandBSON_ALIGNED_ENDnow unconditionally apply their requested alignment.
- Remove deprecated
bson_copy_to_excluding. Usebson_copy_to_excluding_noinitinstead.
libmongoc
New Features
- Support aggregate operations with
$lookupstage for In-Use Encryption.
Notes
- In a future minor release the minimum supported MongoDB Server version will be raised from 4.0 to 4.2. This is in accordance with MongoDB Software Lifecycle Schedules.
- Raise required version of libmongocrypt to 1.13.0 to support In-Use Encryption (corresponds to the CMake option:
ENABLE_CLIENT_SIDE_ENCRYPTION).
Changes
- Passing
batchSize:0as an option tomongoc_client_watch,mongoc_database_watch, ormongoc_collection_watch
now appliesbatchSize:0to theaggregatecommand. Useful to request an immediate cursor. Previously the value
was ignored. bson_oid_init_sequenceis removed. Usebson_oid_initinstead.mongoc_server_description_hostchanges the return type frommongoc_host_list_t *toconst mongoc_host_list_t *.- URI authentication credentials validation (only applicable during creation of a new
mongoc_uri_tobject from a connection string):- The requirement that a username is non-empty when specified is now enforced regardless of authentication mechanism.
- Username and password specification requirements are now validated and returns a client error for the specified authentication mechanism.
- e.g. it is a client error to not specify a username or a password for SCRAM-SHA-1, SCRAM-SHA-256, and PLAIN.
- e.g. it is a client error to specify a password for MONGODB-X509.
- e.g. it is a client error to specify a username or a password without the other for MONGODB-AWS.
authSourceis now correctly defaulted to"$external"for MONGODB-AWS (instead of the database name or"admin").authMechanismis now validated and returns a client error for invalid or unsupported values.authMechanismPropertiesis now validated and returns a client error for invalid or unsupported properties for the specified authentication mechanism.authMechanismPropertiesnow correctly supports':'within property values.- Old behavior:
authMechanismProperties=A:B,C:D:E,F:Gis parsed as{'A': 'B', 'C': 'D:E,F:G'}. - New behavior:
authMechanismProperties=A:B,C:D:E,F:Gis parsed as{'A': 'B': 'C': 'D:E', 'F': 'G'}.
- Old behavior:
- Calling
mongoc_bulk_operation_executeon the samemongoc_bulk_operation_trepeatedly is an error. Previously this was only discouraged in documentation. - Consistently apply
__cdeclcalling convention to function declarations in public API. Intended to support consumers building their code using a different default calling convention with MSVC. The mongoc and bson libraries only support being built with the__cdecldefault calling convention. mongoc_client_set_ssl_optsnow ignores a pooledmongoc_client_tand logs an error. Usemongoc_client_pool_set_ssl_optsto set TLS options on amongoc_client_pool_tbefore popping any clients.mongoc_client_set_ssl_stream_initiatornow ignores a pooledmongoc_client_tand logs an error.- The pkg-config files
libmongoc-1.0,libmongoc-static-1.0,libbson-1.0, andlibbson-static-1.0have been renamed tomongoc2,mongoc2-static,bson2, andbson2-static, respectively.
CMake Packages and Imported Targets
The mongoc-1.0 (and bson-1.0) CMake packages have been removed. Instead, use
mongoc or bson, and specify a version or version range to be imported:
find_package(mongoc 1.30...2.0)The new packages import different target names:
mongo::mongoc_static→mongoc::staticmongo::mongoc_shared→mongoc::shared- The target
mongoc::mongocis a shim target that points to either the shared library or the static library.
The BSON library has had similar name changes.
Removals
- The
bson_md5_tstruct and associated API is removed. - The client side matching feature,
mongoc_matcher_tand related functions are removed. mongoc_server_description_ismasteris removed. Use the equivalentmongoc_server_description_helloinstead.MONGOC_QUERY_SLAVE_OKis removed. Use the equivalentMONGOC_QUERY_SECONDARY_OKinstead.MONGOC_URI_SLAVEOKis removed. It was unused.mongoc_client_command,mongoc_database_command, andmongoc_collection_commandare removed. Usemongoc_client_command_simple,mongoc_database_command_simple, andmongoc_collection_command_simpleinstead.MONGOC_URI_MAXIDLETIMEMSandMONGOC_URI_WAITQUEUEMULTIPLEare removed. They were unused.bson_string_tand associated functions are removed.- Support for
ENABLE_SASL=CYRUSon Windows is removed. UseENABLE_SASL=SSPIorENABLE_SASL=OFFinstead.- The associated Windows-only option
CYRUS_PLUGIN_PATH_PREFIXis removed.
- The associated Windows-only option
- Support for the deprecated
minPoolSizeURI option is removed along with associated API:MONGOC_URI_MINPOOLSIZEandmongoc_client_pool_min_size. - Support for LibreSSL (the CMake option
ENABLE_SSL=LIBRESSL) is removed. Associated API is removed (MONGOC_ENABLE_SSL_LIBRESSLandmongoc_stream_tls_libressl_new). MONGOC_WRITE_CONCERN_W_ERRORS_IGNORED(value -1) is removed. UseMONGOC_WRITE_CONCERN_W_UNACKNOWLEDGED(value 0) which is handled equivalently. If specified in a URI, replace:mongodb://host/?w=-1withmongodb://host/?w=0.- The deprecated CMake option
ENABLE_AUTOMATIC_INIT_AND_CLEANUPis removed. See Initialization and cleanup for expected use ofmongoc_init()andmongoc_cleanup(). mongoc_client_get_database_namesis removed. Usemongoc_client_get_database_names_with_optsinstead.mongoc_client_find_databasesis removed. Usemongoc_client_find_databases_with_optsinstead.mongoc_client_get_max_message_sizeis removed.mongoc_client_get_max_bson_sizeis removed.- Deprecated
mongoc_apm_command_*_get_server_connection_idfunctions are removed. Usemongoc_apm_command_*_get_server_connection_id_int64instead. - Deprecated index management API is removed:
mongoc_collection_create_index_with_opts,mongoc_collection_create_index, andmongoc_collection_ensure_indexare removed. Usemongoc_collection_create_indexes_with_optsinstead.mongoc_index_opt_t,mongoc_index_opt_geo_tmongoc_index_opt_wt_tare removed. Pass options usingbson_ttomongoc_collection_create_indexes_with_optsinstead.mongoc_collection_find_indexesis removed. Usemongoc_collection_find_indexes_with_optsinstead.- See MongoDB documentation for working with indexes.
- Deprecated cursor API is removed:
mongoc_cursor_is_aliveis removed. Use the equivalentmongoc_cursor_moreinstead.mongoc_cursor_set_hintis removed. Use the equivalentmongoc_cursor_set_server_idinstead.mongoc_cursor_get_hintis removed. Use the equivalentmongoc_cursor_get_server_idinstead.mongoc_cursor_new_from_command_replyis removed. Usemongoc_cursor_new_from_command_reply_with_optsinstead.
- Deprecated CRUD API is removed:
mongoc_collection_saveis removed. Usemongoc_collection_insert_oneormongoc_collection_replace_oneinstead.mongoc_collection_deleteis removed. Usemongoc_collection_delete_oneormongoc_collection_delete_manyinstead.mongoc_delete_flags_tandmongoc_reply_flags_tare removed.mongoc_collection_findis removed. Usemongoc_collection_find_with_optsinstead.mongoc_collection_insert_bulkis removed. Usemongoc_collection_insert_manyinstead.mongoc_collection_create_bulk_operationis removed. Use `mongoc_collection_create_bulk_operation_wi...
mongo-c-driver 1.30.2
Announcing 1.30.2 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Fixes:
- Fix
bson_new_from_bufferbehavior on malformed input. - Fix allocation of large
bson_t.
libmongoc
Fixes:
- Fix C23 build on Windows.
Links:
Thanks to everyone who contributed to this release.
- Jeroen Ooms
- Micah Scott
- Kevin Albertson
mongo-c-driver 1.30.1
Announcing 1.30.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Fixes:
- Fix
BSON_NORETURNmacro for C23 standard
libmongoc
No changes since 1.30.0. Version incremented to match the libbson version.
Links:
Thanks to everyone who contributed to this release.
- Micah Scott
mongo-c-driver 1.30.0
Announcing 1.30.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Improvements:
- Improve performance of BSON-to-JSON serialization for nested documents.
Fixes:
- Truncated output of
bson_as_json_with_optsis changed to no longer split valid UTF-8 sequences. - Changes were made to the generated JSON text in some cases:
- Previously, empty arrays and documents would serialize with either one or two spaces depending on whether it is nested. Empty arrays and documents now consistently serialize with just one space.
- Previously, an array omitted due to the maximum recursion limit would serialize to "{ ... }", as if it were a document. Omitted arrays now serialize to "[ ... ]".
- The maximum recursion limit now applies to legacy codewscope documents. Deeply nested scope documents will now be omitted like any other deeply nested document.
- Fix leak of output parameter on failed call to
bson_append_array_builder_begin.
Deprecated:
- Support for Debian 9 and Debian 10.
libmongoc
New Features:
- Add support for structured logging.
- See
mongoc_client_set_structured_log_optsandmongoc_client_pool_set_structured_log_opts.
- See
- Add option to configure cache lifetime of In-Use Encryption data encryption keys.
- See
mongoc_auto_encryption_opts_set_key_expirationandmongoc_client_encryption_opts_set_key_expiration.
- See
- Support
sortoption for update and replace operations. - Support constructing a
mongoc_bulkwrite_twithout a client.- See
mongoc_bulkwrite_newandmongoc_bulkwrite_set_client.
- See
Improvements:
- Improve performance of
mongoc_server_description_new_copy.
Fixes:
- Additional APM events required by the SDAM specification will now be delivered:
- Servers that have seen
server_openingwill now see aserver_closedprior totopology_closed. - Before
topology_closed, atopology_changedevent will transition toUnknowntopology type.
- Servers that have seen
- Fix reporting insert IDs in
mongoc_bulkwrite_twhen verbose results requested.
Deprecated:
- Support for Debian 9 and Debian 10.
Links:
Thanks to everyone who contributed to this release.
- Kevin Albertson
- Micah Scott
- Jeremy Mikola
- Adrian Dole
- Ezra Chung
- Antony Polukhin
- Jeroen Ooms
- Colby Pike
mongo-c-driver 1.29.2
Announcing 1.29.2 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
No changes since 1.29.1. Version incremented to match the libmongoc version.
libmongoc
Fixes:
- Rename
set_errorfunction to avoid symbol conflicts. - Fix Windows ARM 64 build.
- Fix comparison of uninitialized bytes.
- Fix format specifier on macOS.
Notes:
- Windows ARM 64 is not-yet officially tested or supported. Support is community driven.
Links:
Thanks to everyone who contributed to this release.
- Adrian Dole
- Christian Schmitz
- Antony Polukhin
- Kevin Albertson
mongo-c-driver 1.29.1
Announcing 1.29.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Fixes:
- Fix result of
bson_strerror_ron macOS. - Fix max length string handling
bson_value_copy.
libmongoc
Fixes:
- Assert session is consistent with client in
mongoc_bulkwrite_set_session.
Links:
Thanks to everyone who contributed to this release.
- Jeremy Mikola
- Kevin Albertson
mongo-c-driver 1.29.0
Announcing 1.29.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Deprecated:
bson_string_tand associated functions are deprecated and planned for removal in a future major release.- Compiling with
BSON_MEMCHECKdefined is deprecated. bson_in_range_*andbson_cmp_*functions.bson_atomic_*andbson_thrd_yieldfunctions.bson_as_jsonandbson_array_as_jsonare deprecated due to producing non-portable Legacy Extended JSON. Prefer Canonical Extended JSON or Relaxed Extended JSON for portability. To continue using Legacy Extended JSON, usebson_as_legacy_extended_jsonandbson_array_as_legacy_extended_json.
Fixes:
- Fix Relaxed Extended JSON encoding of dates after year 9999.
Improvements:
- Improve performance of bson_utf8_escape_for_json
libmongoc
Improvements:
- Retry KMS requests on transient errors.
Platform Support:
- Support for Visual Studio 2013 is dropped.
Deprecated:
mongoc_client_commandis deprecated and planned for removal in a future release. Usemongoc_client_command_simpleinstead.mongoc_database_commandis deprecated and planned for removal in a future release. Usemongoc_database_command_simpleinstead.mongoc_collection_commandis deprecated and planned for removal in a future release. Usemongoc_collection_command_simpleinstead.
Notes:
- Raise required version of libmongocrypt to 1.12.0 to support In-Use Encryption (corresponds to the CMake option:
ENABLE_CLIENT_SIDE_ENCRYPTION). - A future minor release will raise the minimum supported MongoDB Server version from 4.0 to 4.2. This is in accordance with MongoDB Software Lifecycle Schedules. Support for MongoDB Server 4.0 will be dropped in a future release!
Links:
Thanks to everyone who contributed to this release.
- Kevin Albertson
- Ezra Chung
- Micah Scott
- Adrian Dole
- Andreas Braun
- Joshua Siegel
mongo-c-driver 1.28.1
Announcing 1.28.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Fixes:
- Fix large string handling in
bson_string_truncate. - Fix possible crash in
bson_value_copy.
libmongoc
Fixes:
- Do not return result in
mongoc_bulkwritereturn_tif there are no known successful writes. - Validate lengths in ill-formed server responses.
- Do not override read preference when using aggregate with
$out/$mergewith unscanned servers. - Remove unexpected warning if
authSourcein TXT record is overriden by URI option. - Fix crash when non-existent CA file configured with OpenSSL.
Links:
Thanks to everyone who contributed to this release.
- Ezra Chung
- Joshua Siegel
- Kevin Albertson
mongo-c-driver 1.28.0
Announcing 1.28.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
New features:
- Add
bson_validate_with_error_and_offset.
Build Configuration:
- Remove automatic ccache detection and usage (CCache.cmake).
- Set
CMAKE_<LANG>_COMPILER_LAUNCHERto build with ccache.
- Set
- Remove
MONGO_USE_CCACHE(no longer applicable; see above).
libmongoc
New features:
- Support In-Use Encryption range queries.
- Include insert ID on result of
mongoc_collection_insert_one. - Add new bulk write API
mongoc_bulkwrite_t. Requires MongoDB 8.0. Reduces round-trips for mixed writes. - Add
serverMonitoringModeURI option.
Improvements:
- Improve performance of OpenSSL connection creation.
- Improve performance when trace logging is configured (
ENABLE_TRACING=ON) but disabled at runtime. - Prefer FIPS compliant functions for SCRAM-SHA-256 key derivation.
- Remove required slash to delimit options in MongoDB URI (e.g.
mongodb://example.com?w=1parses the same asmongodb://example.com/?w=1). - Include topology description in server selection timeout errors.
Notes:
- Bump minimum wire protocol version from 6 (MongoDB 3.6) to 7 (MongoDB 4.0).
- Raise required version of libmongocrypt to 1.11.0 to support In-Use Encryption (corresponds to the CMake option:
ENABLE_CLIENT_SIDE_ENCRYPTION).
Build Configuration:
- Remove automatic ccache detection and usage (CCache.cmake).
- Set
CMAKE_<LANG>_COMPILER_LAUNCHERto build with ccache.
- Set
- Remove
MONGO_USE_CCACHE(no longer applicable; see above).
Changed:
- Test and example targets are excluded from the
ALLtarget.- All test targets can be built using the
mongo_c_driver_teststarget. - All example targets can be built using the
mongo_c_driver_examplestarget.
- All test targets can be built using the
- Use
#!/usr/bin/env bashinstead of#!/bin/shin uninstall script generated byENABLE_UNINSTALL=ON.
Deprecated:
-
Use of
*_hintfunctions is deprecated in favor of more aptly named*_server_idfunctions:mongoc_bulk_operation_set_hintis deprecated formongoc_bulk_operation_set_server_idmongoc_bulk_operation_get_hintis deprecated formongoc_bulk_operation_get_server_idmongoc_cursor_set_hintis deprecated formongoc_cursor_set_server_idmongoc_cursor_get_hintis deprecated formongoc_cursor_get_server_id
-
A future minor release plans to drop support for Visual Studio 2013.
-
ENABLE_SSL=LIBRESSLis deprecated along withmongoc_stream_tls_libressl_new. Support for LibreSSL may be dropped in a future major release. -
ENABLE_SASL=CYRUSon Windows platforms is deprecated. Support forENABLE_SASL=CYRUSon Windows may be dropped in a future major release.- The associated Windows-only option
CYRUS_PLUGIN_PATH_PREFIXis deprecated.
- The associated Windows-only option
Links:
mongo-c-driver 1.27.6
Announcing 1.27.6 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.
libbson
Fixes:
- Fix handling of malformed extended JSON for special BSON types.
- Fix large string handling in
bson_string_newandbson_string_append.
libmongoc
Fixes:
- Fix TSan warning.
- Fix C23 compile.
Improvements:
- Document expected behavior of command errors in a transaction.
Links:
Thanks to everyone who contributed to this release.
- Adrian Dole
- Ezra Chung
- Joshua Siegel
- Kevin Albertson