A high-performance MongoDB driver for C

Overview

mongo-c-driver

About

mongo-c-driver is a project that includes two libraries:

  • libmongoc, a client library written in C for MongoDB.
  • libbson, a library providing useful routines related to building, parsing, and iterating BSON documents.

If libmongoc is not needed, it is possible to build and install only libbson.

Documentation / Support / Feedback

The documentation is available at http://mongoc.org/. For issues with, questions about, or feedback for libmongoc, please look into our support channels. Please do not email any of the libmongoc developers directly with issues or questions - you're more likely to get an answer on the MongoDB Community Forums.

Bugs / Feature Requests

Think you’ve found a bug? Want to see a new feature in libmongoc? Please open a case in our issue management tool, JIRA:

Bug reports in JIRA for all driver projects (i.e. CDRIVER, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are public.

How To Ask For Help

If you are having difficulty building the driver after reading the below instructions, please post on the MongoDB Community Forums to ask for help. Please include in your post all of the following information:

  • The version of the driver you are trying to build (branch or tag).
    • Examples: r1.17 (branch), 1.9.5 (tag)
  • Host OS, version, and architecture.
    • Examples: Windows 10 64-bit x86, Ubuntu 16.04 64-bit x86, macOS 10.13
  • C Compiler and version.
    • Examples: GCC 7.3.0, Visual Studio Community 2017, clang 3.9, XCode 9.3
  • The output of any cmake, make, or other commands executed during the build.
  • The text of the error you encountered.

Failure to include the relevant information will delay a useful response. Here is a made-up example of a help request that provides the relevant information:

Hello, I'm trying to build the C driver with Kerberos support, from mongo-c-driver-1.9.5.tar.gz. I'm on Ubuntu 16.04, 64-bit Intel, with gcc 5.4.0. I run CMake like:

$ cmake .
-- The C compiler identification is ;GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works

... SNIPPED OUTPUT, but when you ask for help, include full output without any omissions ...

-- Searching for libsasl2
--   Not found (specify -DCMAKE_LIBRARY_PATH=/path/to/sasl/lib for SASL support)
CMake Error at CMakeLists.txt:10 (_message):
    SASL not found

Can you tell me what I need to install? Thanks!

Security Vulnerabilities

If you’ve identified a security vulnerability in a driver or any other MongoDB project, please report it according to the instructions here.

Installation

Detailed installation instructions are in the manual: http://mongoc.org/libmongoc/current/installing.html

Issues
  • export library verson in the API

    export library verson in the API

    The available macro are evaluated at buildtime Could be interesting to get runtime values.

    So (for ex, in phpinfo, for pecl/mongodb) we can report

    libmongoc header version 1.2.0-beta
    libmongoc library version 1.2.0
    

    P.S. mostly copied/pasted from "bson-version.c"

    opened by remicollet 17
  • WIP Add support for native SecureTransport on OS X

    WIP Add support for native SecureTransport on OS X

    First attempt at adding support for SecureTransport on OS X, to offer a configure option beyond OpenSSL.

    Thanks @jeromelebel for the original implementation! I actually have some questions for you. On my machine I am not able to make our tests pass using SecureTransport. We fail whenever we try to extract the subject of a test certificate. So, neither SecCertificateCopySubjectSummary, SecCertificateCopyLongDescription, or SecCertificateCopyCommonName can succeed in getting information out. SecCertificateCopyCommonName in particular fails with an error code of -25257, "Unknown format in import". Did you run into this issue with your branch? Were you able to successfully run the test suite?

    opened by samantharitter 15
  • Conditionally compile SSL and SASL

    Conditionally compile SSL and SASL

    This allows building *.[ch] even when libssl and/or libsasl are not available.

    This helps get the library to build for iOS, and similarly would help for build the library under any third-party build system.

    Sort of an aside: on Mac OS libssl is deprecated. iOS has never shipped with it. On Mac OS the headers are in /usr/include but aren't available when building an iOS project.

    Ideally, someday, libmongoc would support both libssl and Common Crypto, Apple's implementation.

    opened by paulmelnikow 15
  • Windows: fixes for implicit declaration of functions

    Windows: fixes for implicit declaration of functions

    This fixes two compiler warnings on mingw-w64:

    mongoc/mongoc-socket.c: In function 'mongoc_socket_close':
    mongoc/mongoc-socket.c:774:4: warning: implicit declaration of function 'getpid' [-Wimplicit-function-declaration]
        owned = (sock->pid == (int) getpid ());
        ^
    

    This PR switched to _getpid() on Windows (which is already used elsewhere in the code).

    mongoc/mongoc-util.c -o mongoc/mongoc-util.o
    mongoc/mongoc-util.c: In function '_mongoc_rand_simple':
    mongoc/mongoc-util.c:33:4: warning: implicit declaration of function 'rand_s' [-Wimplicit-function-declaration]
        err = rand_s (&ret);
        ^
    

    The windows documentation says:

    The rand_s function requires that constant _CRT_RAND_S be defined prior to the inclusion statement for the function to be declared.

    I confirmed that this fixes the compiler warning.

    opened by jeroen 14
  • hp-ux port

    hp-ux port

    Hello!

    Following patch allows the mongo-c driver to work on HP-UX 11.31 ia64 platform. Note: to work, with this patch, we need a patch to libbson, that PR-ed just now (https://github.com/mongodb/libbson/pull/179).

    To compile on HPUX we need:

    • gcc-4.8.5
    • pass -D_REENTRANT -D_INCLUDE_HPUX_SOURCE to CFLAGS
    • pass -mlp64 to CFLAGS and LDFLAGS for 64bit version

    configure opts: --enable-shm-counters=no -sinse it not ported yet

    opened by malexzx 11
  • CDRIVER-1639 seeds rand for use in selecting servers

    CDRIVER-1639 seeds rand for use in selecting servers

    As per https://jira.mongodb.org/browse/CDRIVER-1639:

    The call to rand() used when selecting a server is unseeded (https://github.com/mongodb/mongo-c-driver/blob/a4bcfffa9c7ffa2e541a3351ec26cfad417cbdcf/src/mongoc/mongoc-topology-description.c#L693)

    This tends to manifest itself as uneven balancing between nodes in a cluster.

    As a specific example: when libmongoc is used as part of, say, the php-driver:

    1. A sudden increase in traffic creates new children (e.g. Apache workers)
    2. The new workers create new connections to mongo using the php-driver, and therefore libmongoc
    3. All workers initially choose the same server from the cluster as the first value from rand() is always the same
    4. One mongo node takes the vast majority of the queries - possibly causing it to become overloaded while other nodes in the cluster receive little traffic
    opened by tomnomnom 11
  • CDRIVER-4234 Detect arc4random_buf using cmake

    CDRIVER-4234 Detect arc4random_buf using cmake

    Detect the availability of arc4random_buf when running cmake rather than using a hardcoded list of platforms on which it is available. Fixes build failure on Mac OS X 10.6 where it is not available.

    Also now make arc4random_buf the first choice to use if it is available. Previously, if rand_r was not available, the older rand would be used even if arc4random_buf was available.

    opened by ryandesign 8
  • Upgrade Ubuntu tasks Evergreen

    Upgrade Ubuntu tasks Evergreen

    CDRIVER-3912 CDRIVER-3946

    Runs OCSP tests against Ubuntu 20.04. Exports LD_LIBRARY_PATH accurately for each OCSP test to help with linking libraries.

    Upgrades existing Ubuntu 16.04 tasks to use Ubuntu 18.04.

    opened by benjirewis 8
  • CDRIVER-2416 update Debian packaging for libbson repo merge

    CDRIVER-2416 update Debian packaging for libbson repo merge

    This change merges the libmongoc and libbson Debian packaging so that binary packages of both can be produced from the newly combined repository. Please wait to merge this PR until after the 1.10.0 release.

    opened by rcsanchez97 8
  • B-0 fixed bugs in GridFSFile related to seeking and flushing current page

    B-0 fixed bugs in GridFSFile related to seeking and flushing current page

    Fixed bug when seeking into a page has been deleted, and the page is not available in cursor. Signs used to compare if page is available were reversed in the comparison. Also fixed problem flushing page when positioned one byte after the end of the page

    opened by jsbattig 8
  • add helper function to get gridfs files_id from mongoc_gridfs_file_t.

    add helper function to get gridfs files_id from mongoc_gridfs_file_t.

    i have warp one library for luajit to using mongo-c-driver luajit-mongo. i try to get the files_id, from struct "mongoc_gridfs_file_t". but, it always return "00...00". so i want to add this helper function, to get the file's object_id when save file.

    opened by lloydzhou 8
  • Fuzzing Utilities, and bson2json+json2bson tools

    Fuzzing Utilities, and bson2json+json2bson tools

    This adds some basic fuzzing build utilities, and defines bson2json and json2bson command-line tools. This was useful in diagnosing and debugging CDRIVER-4383 and CDRIVER-3380. It replaces the prior fuzzing target file, which itself wasn't being built by any CMake code.

    opened by vector-of-bool 0
  • A Basic Earthly Project

    A Basic Earthly Project

    This provides an Earthfile, a "common" extensible Earthly sub-project, and a few supporting shell scripts. This is terribly inefficient in ways that Earthly could (and should) be used, but it (for the most part) encodes the important Evergreen tasks similar to how they would run in CI. This allows one to build and test the project on a variety of different Linux environments right on your own desktop without pushing, committing, patch-submitting, and/or waiting on the build queue.

    Earthly could also be executed as an Evergreen task, which has the benefits of isolating the build from the host, allowing any build host with docker (or podman) to build any of the Earthly variants. This means that state on the host has no effects on the results of the build, and means we can get significantly improve host pool utilization by distributing the tasks to any capable worker rather than waiting on one that matches the desired build environment. This changeset adds a few variants and tasks to the config.yml that will successfully execute in Evergreen, but these tasks are more proof-of-concept and could be improved and encoded in the task generation scripts. In this current iteration, these changes are intended more for a local developer's use than for use in CI.

    Refer: https://earthly.dev/

    opened by vector-of-bool 0
  • BSON-as-JSON indented output

    BSON-as-JSON indented output

    This changeset adds options to bson_as_json that supports prettier-formatted output. Helpful when debugging differences between large documents side-by-side. These options are only exposed in the private API at the moment. It works like:

    • level_indent - If NULL, all behaves as previously. If not-null, this string is inserted at the beginning of the line N times for a line at depth N.
    • initial_indent - This is inserted before the opening brace.
    • subsequent_indent - This is inserted before the level_indents at the beginning of every line (except for the first line).

    (This was useful while debugging csfle oddities.)

    opened by vector-of-bool 0
Releases(1.22.1)
  • 1.22.1(Aug 2, 2022)

    Announcing 1.22.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    No changes since 1.22.0. Version incremented to match the libmongoc version.

    libmongoc

    Bug fixes:

    • Fix documentation build when using Sphinx 5.0 or newer

    • Update patch release of libmongocrypt to 1.5.2: Fix a potential data corruption bug in RewrapManyDataKey when rotating encrypted data encryption keys backed by GCP or Azure key services.

      The following conditions will trigger this bug:

      A GCP-backed or Azure-backed data encryption key being rewrapped requires fetching an access token for decryption of the data encryption key.

      The result of this bug is that the key material for all data encryption keys being rewrapped is replaced by new randomly generated material, destroying the original key material.

      To mitigate potential data corruption, upgrade to this version or higher before using RewrapManyDataKey to rotate Azure-backed or GCP-backed data encryption keys. A backup of the key vault collection should always be taken before key rotation.

    Other:

    • Update to Fedora 37 for RPM builds
    • Dependency build of libmongocrypt re-uses the libbson of the depending libmongoc

    Links:

    Thanks to everyone who contributed to this release.

    • Ezra Chung
    • Roberto C. Sánchez
    • Kevin Albertson
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.22.1.tar.gz(7.10 MB)
  • 1.22.0(Jun 29, 2022)

    Announcing 1.22.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Bug fixes:

    • Fix BSON_ASSERT triggered by invalid JavaScript/JSON.

    libmongoc

    Bug fixes:

    • Do not auto decrypt before emitting CommandSucceeded events.

    Improvements:

    • Use OP_MSG if a server API version is requested.

    Features:

    • Add server connectionId to command monitoring events.
    • Add support for the comment field to all helpers.
    • Support mongo_shared shared library.
    • Support pre-point-in-time change stream events.
    • Support Queryable Encryption.
    • Support 'let' option for multiple CRUD commands.
    • Add Key Management API functions.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Jeremy Mikola
    • Colby Pike
    • Ezra Chung
    • Roberto C. Sánchez
    • Jake Molnar
    • Jesse Williamson
    • Remi Collet
    • MonkeybreadSoftware
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.22.0.tar.gz(7.35 MB)
  • 1.21.2(Jun 7, 2022)

    Announcing 1.21.2 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Announcing libbson 1.21.2.

    No changes since 1.21.1; release to keep pace with libmongoc's version.

    libmongoc

    Bug Fixes:

    • Address vulnerability in bundled zlib by updating to 1.1.12.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Colby Pike
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.21.2.tar.gz(7.27 MB)
  • 1.22.0-beta0(Jun 6, 2022)

    Announcing 1.22.0-beta0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Bug fixes:

    • Fix BSON_ASSERT triggered by invalid JavaScript/JSON.

    libmongoc

    Bug fixes:

    • Do not auto decrypt before emitting CommandSucceeded events.

    Improvements:

    • Use OP_MSG if a server API version is requested.

    Features:

    • Add server connectionId to command monitoring events.
    • Add support for the comment field to all helpers.
    • Support mongo_shared shared library.
    • Support pre-point-in-time change stream events.
    • Support Queryable Encryption.
    • Support 'let' option for multiple CRUD commands.
    • Add Key Management API functions.

    Notes:

    • The 5.0-compat release (1.18.0) accidentally broke estimatedDocumentCount on views by changing its implementation to use aggregate and a $collStats stage instead of the count command.
    • The new release is fixing estimatedDocumentCount on views by reverting back to using count in its implementation.
    • Due to an oversight, the count command was omitted from the Stable API in server versions 5.0.0 - 5.0.8 and 5.1.0 - 5.3.1, so users of the Stable API with estimatedDocumentCount are recommended to upgrade their MongoDB clusters to 5.0.9 or 5.3.2 (if on Atlas) or set apiStrict: false when constructing their MongoClients.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Jeremy Mikola
    • Colby Pike
    • Ezra Chung
    • Roberto C. Sánchez
    • Jake Molnar
    • Jesse Williamson
    • Remi Collet
    • MonkeybreadSoftware
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.22.0-beta0.tar.gz(7.35 MB)
  • 1.21.1(Mar 1, 2022)

    Announcing 1.21.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Announcing libbson 1.21.1

    No changes since 1.21.0; release to keep pace with libmongoc's version.

    libmongoc

    Bug Fixes:

    • Use static decls for OpenSSL 1.1 polyfills
    • Prevent possible crash in _mongoc_cursor_fetch_stream

    Links:

    Thanks to everyone who contributed to this release.

    • Jeremy Mikola
    • Remi Collet
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.21.1.tar.gz(6.79 MB)
  • 1.21.0(Feb 1, 2022)

    Announcing 1.21.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Bug Fixes:

    • Addressed VS 2013 build failures due to missing C99 features.

    Improvements:

    • Addressed -Wstrict-prototype warnings in bson-atomic.h.
    • Addressed incompatible pointer warnings in bson-atomic.h on GCC 4.8.5.

    libmongoc

    Bug Fixes:

    • Addressed VS 2013 build failures due to missing C99 features.

    Features:

    • Support conditional $merge and $out aggregation on secondaries.
    • Bump minimum wire protocol version from 3 (MongoDB 3.0) to 6 (MongoDB 3.6).
    • Bump maximum wire protocol version from ~14 (MongoDB 5.1)~ 13 (MongoDB 5.0) to 15 (MongoDB 5.2).

    Improvements:

    • Update algorithm used for generation of OID values to reduce collisions.

    Links:

    Thanks to everyone who contributed to this release.

    • Ezra Chung
    • Colby Pike
    • Kevin Albertson
    • Roberto C. Sánchez
    • David CARLIER
    • Jeremy Mikola
    • Pau Espin Pedrol
    • Ryan Schmidt
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.21.0.tar.gz(7.06 MB)
  • 1.20.1(Jan 5, 2022)

    Announcing 1.20.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Bug fixes:

    • Fix implicit declarations causing build failures on macOS.

    libmongoc

    Bug fixes:

    • Fix bug where first hello command on a single-threaded client may not include full handshake.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Ryan Schmidt
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.20.1.tar.gz(7.01 MB)
  • 1.20.0(Nov 17, 2021)

    Announcing 1.20.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Features:

    • Improve atomics API.

    libmongoc

    Features:

    • Improve multi-threaded performance of client pool.
    • Support KMIP as a provider for Client-Side Field Level Encryption (CSFLE).

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Ezra Chung
    • Colby Pike
    • Jesse Williamson
    • Jeremy Mikola
    • Kaitlin Mahar
    • Roberto C. Sánchez
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.20.0.tar.gz(7.01 MB)
  • 1.19.2(Nov 3, 2021)

    Announcing 1.19.2 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    Announcing libbson 1.19.2.

    No changes since 1.19.1; release to keep pace with libmongoc's version.

    libmongoc

    Announcing libmongoc 1.19.2.

    Bug fixes:

    • Fix assert on invalid URI options in client pools connected to load balanced clusters when a topology closed callback is registered.

    Links:

    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.19.2.tar.gz(6.95 MB)
  • 1.19.1(Oct 5, 2021)

    Announcing 1.19.1 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.19.1.

    Bug fixes:

    • Fix string handling in BSON keys and regular expressions.

    libmongoc

    It is my pleasure to announce libmongoc 1.19.1.

    Bug fixes:

    • Permit NULL platform argument in mongoc_handshake_data_append.
    • Fix wire version check in server selection when maxStalenessSeconds is specified in read preferences.
    • Fix assert on invalid URI options in client pools connected to load balanced clusters.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Ezra Chung
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.19.1.tar.gz(6.95 MB)
  • 1.19.0(Aug 16, 2021)

    Announcing 1.19.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.19.0.

    No changes since 1.18.0; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.19.0 release. This release adds full support for MongoDB 5.0 servers and MongoDB Atlas Serverless Instances.

    Features:

    • Add full support to connect to MongoDB Atlas Serverless Instances.
    • Add support for snapshot reads on a session with mongoc_session_opts_set_snapshot.
    • Support the new URI option loadBalanced to connect to a MongoDB cluster behind a TCP load balancer.

    Bug fixes:

    • Fix the uploadDate set on newly created GridFS files in the mongoc_gridfs_bucket_t API.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Jeremy Mikola
    • Benjamin Rewis
    • Andreas Braun
    • Colby Pike
    • Ezra Chung
    • Roberto C. Sánchez
    • Jesse Williamson
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.19.0.tar.gz(6.95 MB)
  • 1.18.0(Jul 13, 2021)

    Announcing 1.18.0 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.18.0.

    Features:

    • Add BSON to JSON encoder that limits encoded string length.
    • Support parsing $uuid into a binary UUID.
    • Relax validation for insert and replace documents to support fields containing dots and dollars.

    Improvements:

    • Add trailing space after base64 JSON field for consistency.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.18.0 release. This release adds partial support for MongoDB 5.0 servers.

    Features:

    • Introduces support to select an API version when connecting to a MongoDB instance.
    • Supports Azure and Google Cloud Platform as Key Management Service (KMS) providers in Client-Side Field Level Encryption (CSFLE).
    • Support "let" option in aggregate command.
    • Support time series collections.
    • Relax validation for insert and replace documents to support fields containing dots and dollars.
    • Expose the reason operations fail document validation.

    Bug fixes:

    • Forward opts from mongoc_gridfs_bucket_find to underlying find operation.
    • Fixes a possible hang when a limited size client pool is waiting for a client to become available in mongoc_client_pool_pop.

    Improvements

    • Deprecate API containing deprecated terminology.
    • Use "hello" command for monitoring servers.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Roberto C. Sánchez
    • Andreas Braun
    • Clyde Bazile
    • Benjamin Rewis
    • Jeremy Mikola
    • Andrew Witten
    • Samantha Ritter
    • Fermín Galán Márquez
    • David Carlier
    • Colby Pike
    • Josh Weinstein
    • Pierre Mickael Gonzalo
    • Richard Donkin
    • David Korczynski
    • Tim Gates
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.18.0.tar.gz(6.91 MB)
  • 1.17.7(Jul 6, 2021)

    Announcing 1.17.7 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.17.7.

    No changes since 1.17.6; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.7.

    • Print correct error message when DNS resolution fails
    • Mix time to avoid duplicate RAND_bytes for the same PIDs

    Links:

    Thanks to everyone who contributed to this release.

    • Andreas Braun
    • Jeremy Mikola
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.7.tar.gz(6.76 MB)
  • 1.18.0-alpha2(Jun 3, 2021)

    Announcing 1.18.0-alpha2 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.18.0-alpha2.

    This is an unstable prerelease and is unsuitable for production applications.

    Bug fixes:

    • Add trailing space after "base64" field name in extended JSON

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.18.0-alpha2.

    This is an unstable prerelease and is unsuitable for production applications.

    Improvements:

    • Update API version support for latest 5.0-rc0 MongoDB server release.
    • Increase default timeout to mongocryptd for CSFLE.
    • Remove deprecated terminology in code and documentation.

    Links:

    Thanks to everyone who contributed to this release.

    • Andreas Braun
    • Benjamin Rewis
    • Jeremy Mikola
    • Kevin Albertson
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.18.0-alpha2.tar.gz(6.90 MB)
  • 1.17.6(Jun 2, 2021)

    Announcing 1.17.6 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.17.6.

    No changes since 1.17.5; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.6.

    Bug fixes:

    • Fix possible crash when speculative authentication fails with network error.

    Links:

    Thanks to everyone who contributed to this release.

    • Andreas Braun
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.6.tar.gz(6.76 MB)
  • 1.18.0-alpha(Apr 8, 2021)

    Announcing 1.18.0-alpha of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.18.0-alpha.

    This is an unstable prerelease and is unsuitable for production applications.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.18.0-alpha.

    This is an unstable prerelease and is unsuitable for production applications.

    Features:

    • Introduces support to select an API version when connecting to a MongoDB instance.
    • Supports Azure and Google Cloud Platform as Key Management Service (KMS) providers in Client-Side Field Level Encryption (CSFLE)

    Bug fixes:

    • Fixes a possible hang when a limited size client pool is waiting for a client to become available in mongoc_client_pool_pop.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Roberto C. Sánchez
    • Clyde Bazile
    • Andreas Braun
    • Andrew Witten
    • Samantha Ritter
    • Benjamin Rewis
    • Fermín Galán Márquez
    • David Carlier
    • Josh Weinstein
    • Pierre Mickael Gonzalo
    • Richard Donkin
    • Tim Gates
    • David Korczynski
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.18.0-alpha.tar.gz(6.89 MB)
  • 1.17.5(Apr 8, 2021)

    Announcing 1.17.5 of libbson and libmongoc, the libraries constituting the MongoDB C Driver.

    libbson

    It is my pleasure to announce libbson 1.17.5.

    Bug fixes:

    • Remove unnecessary dependency of libm for static libbson on macOS

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.5.

    Improvements:

    • Fix documentation regarding when to call mongoc_log_set_handler

    Links:

    Thanks to everyone who contributed to this release.

    • Clyde Bazile
    • Fermín Galán Márquez
    • Kevin Albertson
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.5.tar.gz(6.76 MB)
  • 1.17.4(Feb 2, 2021)

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

    libbson

    It is my pleasure to announce libbson 1.17.4.

    No changes since 1.17.3; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.4.

    Bug fixes:

    • Fix crash on macOS on client pool shutdown.
    • Fix spacing in extended JSON output for numberLong.
    • Clear error in mongoc_collection_find_and_modify_with_opts on a successful retry.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Samantha Ritter
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.4.tar.gz(6.76 MB)
  • 1.17.3(Dec 1, 2020)

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

    libbson

    No changes since 1.17.2; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.3.

    Bug fixes:

    • Do not send session ID on GSSAPI auth commands.
    • Fix build against zlib when zlib is installed in non-standard location.
    • Fix build when source directory path contains a space.
    • Fix a platform-specific bug causing mongoc_client_pool_pop to block indefinitely if all clients are checked out.
    • Fix a possible buffer overflow with hostnames resolving to IPv6 addresses on OpenSSL.

    Links:

    Thanks to everyone who contributed to this release.

    • Roberto C. Sánchez
    • Kevin Albertson
    • Andrew Witten
    • gonzalo
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.3.tar.gz(6.76 MB)
  • 1.17.2(Nov 3, 2020)

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

    libbson

    No changes since 1.17.1; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.2.

    Bug fixes:

    • Stop the SRV polling thread when an SRV URI is used to connect to a deployment other than a sharded cluster.

    Links:

    Thanks to everyone who contributed to this release.

    • Roberto C. Sánchez
    • Kevin Albertson
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.2.tar.gz(6.75 MB)
  • 1.17.1(Oct 6, 2020)

  • 1.17.0(Jul 30, 2020)

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

    libbson

    It is my pleasure to announce libbson 1.17.0.

    Features:

    • Add the cmake option ENABLE_PIC to build static libraries with position independent code.

    Bug fixes:

    • Fix possible int32 overflow when comparing and constructing large bson_t's.
    • Fix pedantic compiler warnings.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.0 release. This release adds support for MongoDB 4.4 servers.

    Features:

    • Support streamable server monitoring to reduce recovery time when the server topology changes.
    • Support the MONGODB-AWS authentication mechanism.
    • Support Online Certificate Status Protocol (OCSP).
    • Support configuring hedged reads in read preferences.
    • Reduce the number of round trips necessary for SCRAM and X509 authentication.
    • Monitor servers in parallel when using a mongoc_client_pool_t instead of doing serial scans.
    • Support the "hint" option in operations using the update, replace, delete, and findAndModify commands.
    • Improve behavior for retryable writes.
    • Improve resuming behavior of change streams on server errors.
    • Remove restriction of 255 character collection namespaces.

    Bug fixes:

    • Fix criteria for resumable errors in change streams.
    • Fix rare crashes when server is invalidated during authentication.
    • Reject client session for mongoc_collection_estimated_document_count.
    • Fix behavior of a SecondaryPreferred read preference for exhaust cursor operations against a sharded cluster. Prior to the fix, a nonzero maxStalenessSeconds would not trigger sending the read preference.
    • Fix SRV polling. Prior to the fix, SRV polling did not properly apply newly discovered results.
    • Fix checks for existing GridFS indexes to handle indexes created by the MongoDB shell.
    • Fix possible use of invalidated streams during an unordered OP_QUERY bulk write, and when ending many pooled sessions at client destruction.
    • Fix a crash when setting the crl_file TLS option for Secure Channel.
    • Avoid emitting duplicate ServerChanged events when no change is observed during monitoring.
    • Properly handle large SASL messages instead of erroring.

    Notes:

    • Deprecated "lib" prefixed artifacts are no longer produced when building on Windows.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Roberto C. Sánchez
    • Andrew Witten
    • Andreas Braun
    • Clyde Bazile
    • Josh Weinstein
    • Richard Donkin
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.0.tar.gz(6.76 MB)
  • 1.17.0-rc0(Jul 14, 2020)

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

    libbson

    It is my pleasure to announce libbson 1.17.0 rc0.

    No changes since 1.17.0 beta2; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.0 rc0 release. This release adds support for MongoDB 4.4 servers.

    Features:

    • Support streamable server monitoring to reduce recovery time when the server topology changes.
    • Support tlsDisableCertificateRevocationCheck when built with Secure Channel.

    Bug fixes:

    • Fix criteria for resumable errors in change streams.
    • Fix rare crashes when server is invalidated during authentication.
    • Improve behavior when reaching out to OCSP responders for certificate revocation checking.
    • Reject client session for mongoc_collection_estimated_document_count.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Andrew Witten
    • Roberto C. Sánchez
    • Clyde Bazile
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.0-rc0.tar.gz(6.76 MB)
  • 1.17.0-beta2(Jun 9, 2020)

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

    libbson

    It is my pleasure to announce libbson 1.17.0 beta2.

    Features:

    • Fix pedantic compiler warnings.
    • Improve assertion error messages.

    Bug fixes:

    • Fix possible int32 overflow when comparing and constructing large bson_t's.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.0 beta2 release.

    Features:

    • Support Online Certificate Status Protocol (OCSP) response caching.
    • Support configuring hedged reads in read preferences.
    • Reduce the number of round trips necessary for SCRAM and X509 authentication.
    • Monitor servers in parallel when using a mongoc_client_pool_t instead of doing serial scans.
    • Support OCSP on older versions of OpenSSL (1.0.1+).

    Bug fixes:

    • Fix behavior of a SecondaryPreferred read preference for exhaust cursor operations against a sharded cluster. Prior to the fix, a nonzero maxStalenessSeconds would not trigger sending the read preference.
    • Fix SRV polling. Prior to the fix, SRV polling did not properly apply newly discovered results.
    • Fix checks for existing GridFS indexes to handle indexes created by the MongoDB shell.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Roberto C. Sánchez
    • Andreas Braun
    • Clyde Bazile
    • Josh Weinstein
    • Richard Donkin
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.0-beta2.tar.gz(6.74 MB)
  • 1.17.0-beta(Apr 10, 2020)

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

    libbson

    It is my pleasure to announce libbson 1.17.0 beta.

    Features:

    • Add the cmake option ENABLE_PIC to build static libraries with position independent code.

    Notes:

    • Deprecated "lib" prefixed artifacts are no longer produced when building on Windows.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.17.0 beta release.

    Features:

    • Support the MONGODB-AWS authentication mechanism.
    • Support the Online Certificate Status Protocol (OCSP) for OpenSSL 1.1.0+, Secure Transport, and Secure Channel.
    • Support the "hint" option in operations using the update, replace, delete, and findAndModify commands.
    • Improve behavior for retryable writes.
    • Improve resuming behavior of change streams on server errors.
    • Remove an extra round trip for SCRAM authentication.
    • Remove restriction of 255 character collection namespaces.

    Bug fixes:

    • Fix possible use of invalidated streams during an unordered OP_QUERY bulk write, and when ending many pooled sessions at client destruction.
    • Fix a crash when setting the crl_file TLS option for Secure Channel.
    • Avoid emitting duplicate ServerChanged events when no change is observed during monitoring.
    • Properly handle large SASL messages instead of erroring.

    Notes:

    • Deprecated "lib" prefixed artifacts are no longer produced when building on Windows.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Roberto C. Sánchez
    • Andreas Braun
    • Clyde Bazile
    • Jeremy Mikola
    • Sara Golemon
    • Jeroen Ooms
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.17.0-beta.tar.gz(6.68 MB)
  • 1.16.2(Feb 25, 2020)

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

    libbson

    No change since 1.16.1; released to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.16.2.

    Bug fixes:

    • Fix compilation with LibreSSL when configuring with -DENABLE_SSL=AUTO

    Links:

    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.16.2.tar.gz(6.56 MB)
  • 1.16.1(Feb 4, 2020)

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

    libbson

    It is my pleasure to announce libbson 1.16.1.

    Features:

    • Add bson_isspace, a safer isspace alternative.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.16.1.

    Bug fixes:

    • Fix listed library dependency on mongoc_static target when building with libmongocrypt.
    • Replace a call of free to bson_free.
    • Vendor Sphinx basic theme and correctly list static files for docs.
    • Fix a compilation warning introduced in 1.16.0.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.16.1.tar.gz(6.56 MB)
  • 1.16.0(Jan 17, 2020)

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

    libbson

    It is my pleasure to announce libbson 1.16.0.

    Bug fixes:

    • Fix crash if an empty BSON binary value is copied and then appended.
    • Fix out-of-bounds read when parsing JSON.
    • Fix out-of-bounds read when parsing base64.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.16.0.

    Features:

    • Support Client-side Field Level Encryption.
    • Support ability to pass an index hint to update operations.
    • Add cmake export targets.

    Bug fixes:

    • Fix a bug with Windows SSPI failing to authenticate with GSSAPI when using pooled clients for certain operations.
    • Fix behavior for bulk writes that retry to keep track of the successful server.
    • Remove hard limit of 1024 characters for SRV response.
    • Fix racy crash when using client pool against a sharded cluster if a server is invalidated shortly before a new socket is opened against it.
    • Remove unnecessary library dependencies causing overlinking.
    • Ensure server proof has been validated during SCRAM conversation.

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Jeremy Mikola
    • Clyde Bazile
    • Andreas Braun
    • Roberto C. Sánchez
    • Samantha Ritter
    • Isabel Atkinson
    • Kaitlin Mahar
    • Diego Barrios Romero
    • Sara Golemon
    • Vasil Velichkov
    • EGuesnet
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.16.0.tar.gz(6.73 MB)
  • 1.15.3(Dec 16, 2019)

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

    libbson

    It is my pleasure to announce libbson 1.15.3.

    No changes since 1.15.2; release to keep pace with libmongoc's version.

    libmongoc

    It is my pleasure to announce the MongoDB C Driver 1.15.3.

    Bug fixes: * Fix a hang on macOS when connecting to a server over TLS * Add zstd as a dependency when libmongoc static library is compiled with zstd support * Fix compilation on AIX 6.1

    Links:

    Thanks to everyone who contributed to this release.

    • Kevin Albertson
    • Samantha Ritter
    • EGuesnet
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.15.3.tar.gz(6.36 MB)
  • 1.15.2(Nov 6, 2019)

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

    libbson

    No changes since 1.15.1; release to keep pace with libmongoc's version.

    libmongoc

    Bug fixes:

    • Prevent mongoc_transaction_opts_set_max_commit_time_ms from applying to subsequent transactions that should be using the default.
    • Do not report the initial error if a retry for a change stream function (mongoc_collection_watch, mongoc_database_watch, or mongoc_client_watch) succeeds

    Links:

    Thanks to everyone who contributed to this release.

    • Andreas Braun
    • Clyde Bazile
    Source code(tar.gz)
    Source code(zip)
    mongo-c-driver-1.15.2.tar.gz(6.35 MB)
An eventing framework for building high performance and high scalability systems in C.

NOTE: THIS PROJECT HAS BEEN DEPRECATED AND IS NO LONGER ACTIVELY MAINTAINED As of 2019-03-08, this project will no longer be maintained and will be ar

Meta Archive 1.7k Jul 28, 2022
x64 Windows kernel driver mapper, inject unsigned driver using anycall

anymapper x64 Windows kernel driver mapper, inject unsigned driver using anycall This project is WIP. Todo Fix: Can't make API calls from IAT nor func

Kento Oki 68 Jun 22, 2022
Driver leap - Self-sustainable fork of SteamVR driver for Leap Motion controller with updated vendor libraries

Driver Leap Self-sustainable fork of SteamVR driver for Leap Motion controller with updated vendor libraries Installation (for users) Install Ultralea

null 46 Jul 28, 2022
Hygieia, a vulnerable driver traces scanner written in C++ as an x64 Windows kernel driver.

Hygieia The Greek goddess of health, her name is the source for the word "hygiene". Hygieia is a windows driver that works similarly to how pagewalkr

Deputation 69 Jul 27, 2022
SinMapper - usermode driver mapper that forcefully loads any signed kernel driver

usermode driver mapper that forcefully loads any signed kernel driver (legit cert) with a big enough section (example: .data, .rdata) to map your driver over. the main focus of this project is to prevent modern anti-cheats (BattlEye, EAC) from finding your driver and having the power to hook anything due to being inside of legit memory (signed legit driver).

null 107 Jul 28, 2022
High performance C++11 signals

High performance C++11 signals See Performance of a C++11 Signal System for the original source code, as well as performance measurements compared to

Lars Pensjö 139 Jul 9, 2022
A C++11 large integer library with effective high performance, simplistic in nature and also clean in the eyes.

BigIntegerCPP BigIntegerCPP is a C++11 port of large integer library used in CryptoLib4Pascal. It allows mostly parsing of numbers as strings in diffe

Telepati 25 Apr 22, 2022
High Performance Streams Based on Coroutine TS ⚡

Conduit ⚡ Lazy High Performance Streams using Coroutine TS Conduit is a utility library for building and transforming, ranges and lazy (infinite) iter

LoopPerfect 141 Apr 29, 2022
high performance C++20 implementation of std::variant

A minimal compile-time overhead, C++20 implementation of std::variant. Fully standard conforming with a couple of documented differences.

null 27 Jul 14, 2022
Convenient, high-performance RGB color and position control for console output

Oof (omnipotent output friend) It's common for C++ programs to write output to the console. But consoles are far more capable than what they are usual

Sebastian Werhausen 746 Aug 5, 2022
PHP Encoder, protect PHP scripts in PHP 8 and PHP 7, High Performance, Compitable with X86_64, MIPS, ARM platform and Ubuntu/Centos/OpenWRT system.

What's FRICC2? FRICC2 is a PHP Script encryption tool. When you are developing a commercial software using PHP, the script can be distributed as encry

Hoowa Sun 31 Jun 30, 2022
Diff Match Patch is a high-performance library in multiple languages that manipulates plain text.

The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text. Diff: Compare two blocks o

Google 5.5k Jul 29, 2022
Flexible, portable, high-performance bit fields C++ library. unsigned a:13 becomes F<13> a;

C-plus-plus-library-bit-fields Flexible, portible, high-performance bit fields C++ library. The bit fields are specified with a dummy structure where

Walt Karas 25 Feb 27, 2022
Real Time, High performance BOT detection and protection

REAL-TIME BOT PROTECTION CHALLENGE IronFox https://innovera.ir IronFox is a real-time and high performance bot protection, that using Nginx as a reve

Khalegh Salehi 3 Jun 5, 2022
Cloud-native high-performance edge/middle/service proxy

Cloud-native high-performance edge/middle/service proxy Envoy is hosted by the Cloud Native Computing Foundation (CNCF). If you are a company that wan

Envoy Proxy - CNCF 20.1k Aug 7, 2022
Emergency alert and tracer for realtime high-performance computing app (work in progress, currently supported env is only Linux x86-64).

HPC Emerg Emergency alert and tracer for realtime high-performance computing app (work in progress, currently supported env is only Linux x86-64). Exa

Ammar Faizi 7 Jan 19, 2022
Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on OpenGL 1.x-4.x supporting Windows, Linux and Mac OS X.

Visualization Library 2.2 Gallery About Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on the in

Michele 299 Jul 25, 2022
A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store

SimDB A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store. SimDB is part of LAVA (Live A

null 442 Jun 25, 2022
Kit: a magical, high performance programming language, designed for game development

Kit: a magical, high performance programming language, designed for game development

Kit Programming Language 990 Jul 21, 2022