Announcing libbson and libmongoc 1.5.0

25 views
Skip to first unread message

A. Jesse Jiryu Davis

unread,
Nov 27, 2016, 4:55:52 PM11/27/16
to mongodb-...@googlegroups.com, mongod...@googlegroups.com

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

libbson

New features and bug fixes:

  • New BSON Type, Decimal128 (bson_decimal128_t) along with the following new functions and helpers:
    • bson_decimal128_to_string()
    • bson_decimal128_from_string()
    • bson_iter_decimal128()
    • bson_iter_overwrite_decimal128()
    • BSON_ITER_HOLDS_DECIMAL128()
    • bson_append_decimal128()
    • BSON_APPEND_DECIMAL128()
    • BCON_DECIMAL128() See the documentations for further details.
  • bson_validate and bson_iter_next now validate that BSON boolean values are 0 or 1. Before, any non-zero value was considered true.
  • bson_append_code_with_scope now preserves the "code with scope" type if scope is an empty, non-NULL BSON document.
  • BSON "code" and "code with scope" types are properly translated to JSON of the form '{"$code": "...", "$scope": {...}}'.
  • bson_json_reader functions now always validate UTF-8.
  • JSON parsing now preserves integer width.
  • bson_strtoll now matches stroll: it detects range errors, and when parsing octal it stops at non-octal digits and returns what it parsed instead of setting errno.
  • New flag BSON_VALIDATE_EMPTY_KEYS causes bson_validate to fail if a document contains zero-length field names.
  • The configure option "--enable-hardening" had had no effect. It is removed in favor of system-wide compiler configuration.

libmongoc

New features and bug fixes:

  • MongoDB 3.4 Support
    • New URI and read preference option, "maxStalenessSeconds"
    • Set MongoDB client handshake data with mongoc_client_set_appname or mongoc_client_pool_set_appname.
    • writeConcern and readConcern enhancements.
    • Collation allows users to specify language-specific rules for string comparison when sorting documents. See the code examples for mongoc_client_read_command_with_opts, mongoc_collection_count_with_opts, mongoc_collection_find_with_opts, and mongoc_index_opt_t, as well as the "Setting Collation Order" section of the "Bulk Write Operations" guide.
  • mongoc_collection_count_with_opts uses the collection's read preference if none is passed in
  • Improved TLS support
    • Fixed LibreSSL (libssl) support
    • Added LibreSSL (libtls) support
    • Fixed Secure Channel build on VS 2010
    • OpenSSL now supports SNI (all others already do)
  • Additional features for Application Performance Monitoring:
    • mongoc_topology_description_has_writable_server
    • mongoc_topology_description_has_readable_server
    • Notifications when a server or topology description changes, and when a monitoring heartbeat begins and succeeds or fails.
    • mongoc_client_set_apm_callbacks can be used repeatedly to change or clear the list of monitoring callbacks.
  • New functions accept flexible options as a BSON document:
    • mongoc_collection_find_with_opts
    • mongoc_client_read_command_with_opts
    • mongoc_client_write_command_with_opts
    • mongoc_client_read_write_command_with_opts
    • mongoc_database_read_command_with_opts
    • mongoc_database_write_command_with_opts
    • mongoc_database_read_write_command_with_opts
    • mongoc_collection_read_command_with_opts
    • mongoc_collection_write_command_with_opts
    • mongoc_collection_read_write_command_with_opts
    • mongoc_gridfs_find_with_opts
    • mongoc_gridfs_find_one_with_opts
    • mongoc_bulk_operation_remove_one_with_opts
    • mongoc_bulk_operation_remove_many_with_opts
    • mongoc_bulk_operation_replace_one_with_opts
    • mongoc_bulk_operation_update_one_with_opts
    • mongoc_bulk_operation_update_many_with_opts
  • mongoc_collection_find is now deprecated in favor of mongoc_collection_find_with_opts.
  • New helper function to include read concern in one of the above function's options parameter: mongoc_read_concern_append.
  • mongoc_client_command no longer applies the client's read preference and read concern by default. Same change for mongoc_database_command and mongoc_collection_command.
  • mongoc_collection_count_with_opts now applies the collection's read preference if no read preference is provided
  • mongoc_collection_create_index and mongoc_collection_drop_index now apply the collection's write concern.
  • mongoc_collection_create_index_with_opts now applies the collection's write concern if none is specified in "opts"
  • connectTimeoutMS timer now begins after DNS resolution, and resets for each interface attempted (e.g., if the driver first tries IPv6, then IPv4).
  • New error code MONGOC_ERROR_DUPLICATE_KEY.
  • mongoc_collection_find no longer treats the "filter" key specially in queries - querying for a document with a key named "filter" is the same now as any other key.
  • The server description parameter to the following functions is "const":
    • mongoc_server_description_host
    • mongoc_server_description_id
    • mongoc_server_description_ismaster
    • mongoc_server_description_round_trip_time
    • mongoc_server_description_type
  • Exported symbols are no longer declared in seperate export files. This could break ABI with applications using clang, which previously exported symbols from the internal private ABI.
  • mongoc no longer crashes when multi roundtrip bulk operation fails.
  • Added support for the new readConcernLevel "linearizable".
  • Clients now check for misformatted "readPreferenceTags" in URI.
  • New CMake option ENABLE_TRACING allows debug output, which before had only been available with "configure --enable-tracing".
  • Bugfix: "PossiblePrimary"-type replicas could be selected for reads
  • Bugfixes: The random number generator used to select servers is now properly seeded, and secondary queries are now properly distributed according to localThresholdMS, not just to the lowest-latency secondary. The latency estimate is reset after a connection error.
  • Fix crashes in mongoc_topology_invalidate_server and mongoc_client_kill_cursor.
  • mongoc_collection_insert, mongoc_collection_update, mongoc_collection_remove consistently use domain MONGOC_ERROR_BSON, code MONGOC_ERROR_BSON_INVALID if passed oversized BSON, and MONGOC_ERROR_COLLECTION for other errors. mongoc_bulk_operation_execute continues to use MONGOC_ERROR_COMMAND for all errors.
  • If mongoc_client_pool_t fails to start its scanner thread in the background, it logs and aborts instead of silently continuing, then failing to connect.
  • The driver now updates its view of the whole topology with information from each new connection handshake.
  • Improved error reporting when the driver fails to reach the server, and correctly distinguish "connection error" and "connection timeout".

Deprecations:

  • mongoc_collection_find is deprecated for mongoc_collection_find_with_opts.

Removed configure flags:

  • --enable-experimental has been removed. All previously experimental features are now always on.
  • The configure option "--enable-hardening" had had no effect. It is removed in favor of system-wide compiler configuration.

Links:

Thanks to everyone who contributed to this release.

  • A. Jesse Jiryu Davis
  • Hannes Magnusson
  • Fiona Rowan
  • Ian Boros
  • Remi Collet
  • Brian McCarthy
  • Jeroen Ooms
  • J. Rassi
  • Christoph Schwarz
  • Alexey Vorobeyev
  • Brian Samek

Peace,
-- A. Jesse Jiryu Davis

Reply all
Reply to author
Forward
0 new messages