SDK Release Notes

      +
      Release notes, brief installation instructions, and download archive for the Couchbase C++ Client.

      Version 1.0 of the C++ SDK implements the 3.6 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

      Installation

      Prerequisites

      Check that you have the dependencies installed:

      • C++ 17 compiler

      • CMake version 3.19 or newer

      Supprted Operating Systems are listed on the compatibility page.

      More details of the installation process are in the full installation guide.

      CPM.cmake is the recommended way to include the library in your project. You need to include the following command in your CMakeLists.txt.

      CPMAddPackage(
        NAME
        couchbase_cxx_client
        GIT_TAG
        1.0.1
        VERSION
        1.0.1
        GITHUB_REPOSITORY
        "couchbase/couchbase-cxx-client"
        OPTIONS
        "COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL ON")

      C++ SDK 1.0 Releases

      We always recommend using the latest version of the SDK — it contains all of the latest security patches and support for new and upcoming features. All patch releases for each dot minor release should be API compatible, and safe to upgrade; any changes to expected behavior are noted in the release notes that follow.

      Version 1.0.1 (22 August 2024)

      This is the first maintenance release of the 1.0 C++ SDK.

      Enhancements

      • CXXCBC-564: Allow to specify all operations (Get, Replace, Delete, Insert, and Query) in pillowfight workload (#640).

      • Improve logging of DNS client (#634).

      • CXXCBC-568: Cancel deferred operations when closing HTTP session manager (#643).

      Fixes

      • CXXCBC-531: Fixed memory leak in range scan implementation (#645, #610).

      • CXXCBC-573: Avoid uninitialized reads in the logger test (#610).

      • CXXCBC-572: Always initialize service_type (#610).

      • CXXCBC-569: Resolved cycle in shared pointers for transaction_context (#641).

      • CXXCBC-550: Fixed use-after-move issue in command handler (#628).

      • Fixed build of Ruby wrapper on Windows (#636).

      • Fixed behaviour when reading is complete before returning HTTP streaming resp (#624).

      Columnar changes

      In this release a new build mode for Columnar has been introduced. The CMake flag -DCOUCHBASE_CXX_CLIENT_COLUMNAR will produce a special version of the library that is optimized for usage with Columnar deployments.

      • Add initial Columnar core implementation (#616).

      • CXXCBC-525: Open cluster connection in background (#621).

      • Use open_in_background when creating test cluster in Columnar mode (#625).

      • CXXCBC-542: Richer error information from Columnar core (#626).

      • Updated columnar log message, enabling dispatch_timeout if in connection string (#627).

      • Add helper method for serializing ctx into columnar error message (#632).

      • Add Columnar query positional params (#635).

      • CXXCBC-543: Added retries for columnar query (#637).

      • CXXCBC-562: Provided HTTP session manager with updated cluster (#638).

      • CXXCBC-556: Added versioned Columnar query endpoint (#639).

      • CXXCBC-557: Added global columnar timeout config (#642).

      Version 1.0.0 (26 June 2024)

      This is the first GA release of the C++ SDK.

      Enhancements

      • CXXCBC-509: Allow to restrict replica set to selected server group. This feature allows to implement network optimization when traffic cost between server groups is higher than in the local group. In this case the application might select preferred server group in the connection options, and later opt-in for local operations during replica reads. Related tickets: CXXCBC-546, CXXCBC-513, (#614, #593, #587, #571, #566).

      • CXXCBC-530: Include 'min' parameter when encoding disjunction FTS queries (#604).

      • CXXCBC-394: Hide tao::json where it is possible. We still have taocpp/json headers in places where default JSON transcoder is being used.

      • CXXCBC-449: Do not expose ASIO in public API.

      • CXXCBC-381: Use std::shared_ptr for transactions_context and attempt_context (#590).

      • CXXCBC-510: Support binary objects in transactions. This changes allows to use transcoders in transactions API (#576).

      • Improvements in Vector Search:

        • Add invalid argument check (#578).

        • CXXCBC-514: Support for base64 encoded vector types ([#575).

        • CXXCBC-516: Return feature_not_available when upserting vector search index to incompatible cluster (#572).

      • CXXCBC-407: Allow to use 0 as a max expiry for new collections (#569).

      • CXXCBC-496: Convert C++ Public API Error handling to use couchbase::error. Related tickets: CXXCBC-492, CXXCBC-498, CXXCBC-499, CXXCBC-500, CXXCBC-508, CXXCBC-526 (#570, #557, #562, #560, #564, #567, #603, #597, #595, #594).

      • Update stability levels for API 3.6 level. Remove deprecated search_query (#602).

      Fixes

      • CXXCBC-517: Add HTTP session retries when SDK fails to resolve hostnames (#589).

      • CXXCBC-445: Return request_canceled on IO error in HTTP session (#568).

      • CXXCBC-511: Prevent use of HTTP session if idle timer has expired (#565).

      • CXXCBC-523: Clean up dump_configuration config output (#577).

      • CXXCBC-531: Fix deadlock in cluster destructor (public API) (#608).

      • CXXCBC-534: Fix callbacks to avoid bad_function_call exception (#606).

      • CXXCBC-518: Handle alternate addresses when locating preferred_node (#574).

      Build and Tests Fixes

      • Add cmake task to generate tarball (#596).

      • Do not refer to core headers in public API (#599).

      • Cleanup attempt_context implementation (#586).

      • Do not use default parameters for virtual functions in transactions (#588).

      • Do not fetch config if no sessions in the bucket (#573).

      • Improve test stability (#563, #613).

      Older Versions

      Release Notes for the developer preview releases before the 1.0.0 release can be found on GitHub.