Skip to content

Releases: mongodb/mongo-c-driver

mongo-c-driver 1.10.0

21 May 13:11
1.10.0
1cb8a16
Compare
Choose a tag to compare

I'm pleased to announce version 1.10.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

libbson

This version adds the following features:

  • libbson and libmongoc are now maintained in the mongo-c-driver repository,
    although they are still built as separate libraries, and libbson can still
    be used without libmongoc.
  • Building libbson and libmongoc now requires CMake on all platforms. The
    Autotools build scripts ("configure" and related scripts) have been deleted.
    See the "installing" page for updated instructions.
  • Additional functions for strings of known length (not necessarily null-
    terminated):
    bson_iter_find_w_len
    bson_iter_init_find_w_len
    bson_append_regex_w_len
    bson_decimal128_from_string_w_len

libmongoc

This version drops support for MongoDB 2.6 and adds the following features and bugfixes:

  • libbson and libmongoc are now maintained in the mongo-c-driver repository,
    although they are still built as separate libraries, and libbson can still
    be used without libmongoc.
  • Building libbson and libmongoc now requires CMake on all platforms. The
    Autotools build scripts ("configure" and related scripts) have been deleted.
    See the "installing" page for updated instructions, including the new
    ENABLE_MONGOC option and changes to the ENABLE_BSON option.
  • IPv6 is now fully supported and conforms to RFC-6555. If a hostname has both
    IPv4 and IPv6 DNS records, the driver tries connecting with IPv6 first. If a
    connection can't be established after 250ms then IPv4 is tried in parallel.
    Whichever succeeds connection first cancels the other. The successful DNS
    result is cached for 10 minutes.
  • If CMake is configured with ENABLE_SSL=AUTO (the default), libmongoc now
    uses native TLS libraries on Mac and Windows, and OpenSSL everywhere else.
    Before, it would search for OpenSSL on all platforms and only use native
    TLS on Mac and Windows as a fallback.
  • The driver now handshakes SSL connections to multiple servers in a replica
    set or sharded cluster in parallel, so long as it uses OpenSSL or Windows
    SChannel. (SSL handshakes with Apple's Secure Transport are still serial.)
    A larger receive buffer with SChannel increases performance over slow
    connections.
  • All functions that accept read concern now prohibit it, if MongoDB is too
    old to support it (MongoDB 3.0).
  • Client sessions are now prohibited with unacknowledged writes.
  • mongoc_collection_find_and_modify_with_opts now prohibits write concern if
    MongoDB is too old to support it (MongoDB 3.0).
  • Other helper functions for commands that write, now prohibit write concern
    if MongoDB is too old to support it (pre-3.4):
    mongoc_client_read_write_command_with_opts
    mongoc_client_write_command_with_opts
    mongoc_collection_read_write_command_with_opts
    mongoc_collection_write_command_with_opts
    mongoc_database_read_write_command_with_opts
    mongoc_database_write_command_with_opts
    mongoc_collection_aggregate with $out
    mongoc_collection_drop_index_with_opts
    mongoc_collection_drop_with_opts
    mongoc_collection_rename_with_opts
    mongoc_database_drop_with_opts
    Write concern behavior is unchanged for regular CRUD functions.
  • Setting a negative writeConcern level of -2 or smaller, via the "opts"
    parameter to functions that accept BSON options, is now prohibited. The
    special "w" values -2 through -4 are only used internally. The deprecated
    "w=-1" is still allowed, as a synonym for "w=0".
  • The Kerberos URI option authMechanismProperties=CANONICALIZE_HOST_NAME:true
    is now implemented with the Windows Kerberos provider, SSPI.
  • This repository now includes GDB and LLDB customizations for pretty-printing
    bson_t structs as JSON while debugging. See the "debugging" page.
  • The internal preprocessor symbol HAVE_STRINGS_H has been renamed
    BSON_HAVE_STRINGS_H. If you maintain a handwritten bson-config.h you must
    rename this symbol.
  • The following helper functions do not work with mongoc_client_session_t,
    they are deprecated in favor of running MongoDB commands directly with a
    function like mongoc_client_read_command_with_opts:
    mongoc_client_get_server_status
    mongoc_collection_stats
    mongoc_collection_validate
  • mongoc_cursor_is_alive is now deprecated for mongoc_cursor_more, which is
    functionally equivalent.

Links:

Thanks to everyone who contributed to this release.

  • A. Jesse Jiryu Davis
  • Kevin Albertson
  • Roberto C. Sánchez
  • Jeremy Mikola
  • Xiangyu Yao
  • Jeroen Ooms
  • Derick Rethans
  • Kaitlin Mahar
  • Pavithra Vetriselvan
  • NotSpooky
  • Iulian Rotaru
  • Katherine Walker
  • Mansuro
  • Petr Písař

mongo-c-driver 1.9.5

30 Apr 18:51
1.9.5
addfad7
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.9.5. This release fixes the following bugs:

  • New change streams API functions were not marked extern "C"
  • mongoc_collection_watch now accepts a pipeline argument as a BSON array, in
    addition to accepting a BSON document with a "pipeline" array field
  • Crashes in several change stream error handling paths
  • Commands could return false with an empty bson_error_t after a replica set
    reconfig
  • Network error messages omitted the command name when using OP_MSG

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Kevin Albertson

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.9.4

09 Apr 19:35
1.9.4
6d6ead7
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.9.4. This release offers
compatibility with Sphinx 1.7.0 and above and fixes two bugs:

  • Ensure a change stream uses the proper session id while iterating
  • Fix a rare crash in pooled mode when a replica set member was disconnected

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Kevin Albertson

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.9.3

28 Feb 22:00
1.9.3
45a9af6
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.9.3. This version fixes a
session-management bug that could cause an authentication error while connected
to MongoDB 3.6+ and iterating a cursor, and it permits the $gleStats modifier
with mongoc_collection_aggregate.

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Jeremy Mikola

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.9.2

12 Jan 03:00
1.9.2
c063949
Compare
Choose a tag to compare

No change since 1.9.1; released to keep pace with libbson's version number.

-- A. Jesse Jiryu Davis

mongo-c-driver 1.9.1

09 Jan 22:30
1.9.1
a6964c8
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.9.1. This release fixes a bug
that caused session ID to be included in authentication and server monitoring
commands. Thanks to Jeremy Mikola for finding and fixing the issue.

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.9.0

21 Dec 02:50
1.9.0
58a471b
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.9.0. This version drops support
for MongoDB 2.4 and adds support for MongoDB 3.6 features:

  • New struct mongoc_change_stream_t to watch a collection for changes.
  • New struct mongoc_client_session_t represents a MongoDB 3.6 session,
    which supports causal consistency: you are guaranteed to read your writes
    and to perform monotonic reads, even when reading from secondaries or in
    a sharded cluster.
  • New functions that accept flexible options as a BSON document. These
    accept a "sessionId" option and any future options. In addition, the
    two new "update" functions accept the "arrayFilters" option that is new
    in MongoDB 3.6:
    mongoc_collection_insert_one
    mongoc_collection_insert_many
    mongoc_collection_update_one
    mongoc_collection_update_many
    mongoc_collection_replace_one
    mongoc_collection_delete_one
    mongoc_collection_delete_many
    mongoc_client_command_with_opts
    mongoc_database_command_with_opts
    mongoc_collection_command_with_opts
    mongoc_client_find_databases_with_opts
    mongoc_client_get_database_names_with_opts
    mongoc_collection_create_bulk_operation_with_opts
    mongoc_collection_find_indexes_with_opts
    mongoc_database_find_collections_with_opts
    mongoc_database_get_collection_names_with_opts
  • New URI option "retryWrites=true" safely and automatically retries certain
    write operations if the server is a MongoDB 3.6 replica set or sharded
    cluster.
  • Support for MongoDB OP_MSG wire protocol.

Additional changes not specific to MongoDB 3.6:

  • Support for mongodb+srv URIs to query DNS for SRV and TXT records that
    configure the connection to MongoDB.
  • Support LibreSSL with CMake build
  • The "minPoolSize" URI option is deprecated: it's confusing and not useful.

Bug fixes:

  • mongoc_bulk_operation_execute did not always initialize "reply".
  • Fix C99 pedantic warnings.

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Hannes Magnusson
  • Jeremy Mikola
  • Kevin Albertson
  • Jeroen Ooms
  • Iulian Rotaru
  • Derick Rethans
  • Graham Whitted
  • Brian Moss
  • Alex Masterov
  • Michael Kuhn
  • Sriharsha Vardhan

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.8.2

16 Nov 22:45
1.8.2
f09af36
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.8.2. This release fixes the
following bugs:

  • Remove option to bundle the Snappy compression library, it caused issues
    for programs linking to libmongoc
  • Fix pkg-config and CMake config file flags for programs that statically
    link to libmongoc when libmongoc is statically linked to zLib
  • The configure flag "--with-zlib=no" was ignored
  • Crash in authentication when username is NULL

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Derick Rethans
  • Hannes Magnusson
  • Jeremy Mikola

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.8.1

11 Oct 23:52
1.8.1
5587318
Compare
Choose a tag to compare

It is my pleasure to announce mongo-c-driver 1.8.1. This release fixes the
following bugs:

  • Remove a syntax error in the configure script that affects some shells.
  • The configure script respects --with-zlib=system and --with-snappy=system.
  • The internal mongoc_server_description_t struct is properly reinitialized
    after a network error.
  • Fix the encoding of this NEWS file.

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Jeremy Mikola

Peace,
-- A. Jesse Jiryu Davis

mongo-c-driver 1.8.0

13 Sep 19:29
1.8.0
2662349
Compare
Choose a tag to compare
  • The zLib and Snappy compression libraries are bundled if not available.
    Wire protocol compression is enabled on Windows.
    • mongoc_collection_find_and_modify_with_opts now respects a "writeConcern"
      field in the "extra" BSON document in its mongoc_find_and_modify_opts_t.
    • The command functions mongoc_client_read_write_command_with_opts,
      mongoc_database_read_write_command_with_opts, and
      mongoc_collection_read_write_command_with_opts now ignore the "read_prefs"
      parameter.
    • mongoc_collection_create_index and mongoc_collection_create_index_with_opts
      are both now deprecated. Use mongoc_database_write_command_with_opts
      instead; a guide to creating an index using that function has been added.
    • Use select, not WSAPoll, on Windows.
    • Always mark a server "Unknown" after a network error (besides a timeout).
    • mongoc_client_pool_t sends platform metadata to the server; before, only a
      single mongoc_client_t did.
    • New stream method mongoc_stream_timed_out.
    • Wire version checks introduced in 1.8.0 will prevent the driver from
      connecting to a future MongoDB server version if its wire protocol is
      incompatible.
    • New CMake option ENABLE_MAINTAINER_FLAGS.

Thanks to everyone who contributed to the development of this release.

  • A. Jesse Jiryu Davis
  • Hannes Magnusson
  • Jeremy Mikola

Peace,
-- A. Jesse Jiryu Davis