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.3
        VERSION
        1.0.3
        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.3 (22 October 2024)

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

      Downloads

      Platform

      Architecture

      File

      Checksums

      Any

      couchbase-cxx-client-1.0.3.sha256.txt

      Source Archive

      Any

      couchbase-cxx-client-1.0.3.tar.gz

      Amazon Linux 2023

      x86_64

      couchbase-cxx-client-1.0.3-1.amzn2023.x86_64.tar

      Amazon Linux 2023

      aarch64

      couchbase-cxx-client-1.0.3-1.amzn2023.aarch64.tar

      Enterprise Linux 9

      x86_64

      couchbase-cxx-client-1.0.3-1.el9.x86_64.tar

      Enterprise Linux 9

      aarch64

      couchbase-cxx-client-1.0.3-1.el9.aarch64.tar

      Enterprise Linux 8

      x86_64

      couchbase-cxx-client-1.0.3-1.el8.x86_64.tar

      Enterprise Linux 8

      aarch64

      couchbase-cxx-client-1.0.3-1.el8.aarch64.tar

      Fixes

      Features

      • Allow to query current log level (#672).

      • CXXCBC-582: Added cluster labels & system tag in spans (#682).

      • CXXCBC-582: Added cluster labels, keyspace & outcome in metrics (#677).

      Columnar changes

      • CXXCBC-598: Propagate bootstrap errors to HTTP operations (#666).

      • CXXCBC-602: Report first non-retriable code/message in query error (#667).

      • CXXCBC-604: Apply raw options last (#669).

      • CXXCBC-616: Report retry information when receiving a timeout from the HTTP component (#681).

      • CXXCBC-600: Reduced origin::to_json output for Columnar builds (#678).

      Build and Test Infrastructure

      • CXXCBC-303: Fixed RPM for AmazonLinux (#663).

      • CXXCBC-303: Fixed RPM for RHEL 8 (#664).

      • Use timestamp from the tag for reproducible tarballs (#665).

      • Updated list of RPM-based platforms (#676).

      Version 1.0.2 (23 September 2024)

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

      Downloads

      Platform

      Architecture

      File

      Checksums

      Any

      couchbase-cxx-client-1.0.2.sha256.txt

      Source Archive

      Any

      couchbase-cxx-client-1.0.2.tar.gz

      Amazon Linux 2023

      x86_64

      couchbase-cxx-client-1.0.2-1.amzn2023.x86_64.tar

      Amazon Linux 2023

      aarch64

      couchbase-cxx-client-1.0.2-1.amzn2023.aarch64.tar

      Enterprise Linux 9

      x86_64

      couchbase-cxx-client-1.0.2-1.el9.x86_64.tar

      Enterprise Linux 9

      aarch64

      couchbase-cxx-client-1.0.2-1.el9.aarch64.tar

      Enterprise Linux 8

      x86_64

      couchbase-cxx-client-1.0.2-1.el8.x86_64.tar

      Enterprise Linux 8

      aarch64

      couchbase-cxx-client-1.0.2-1.el8.aarch64.tar

      Fixes

      • CXXCBC-577: Reduced duplicated code in http_component (#657).

      • CXXCBC-593: Configuration profile are now applied as the last step — taking priority over all other defaults and options (#655).

      • CXXCBC-552: Cleaned up network selection options (, by deprecating behavior_options#network() in favor to network_options#preferred_network() #651).

      • CXXCBC-576: When cluster.close() is called, all in-progress HTTP operations should now be cancelled (#648).

      • Updated code samples in API reference (#653).

      Columnar changes

      • CXXCBC-577: Added Columnar database management operations.

      • CXXCBC-588: Updated timeout sent to server on each Columnar query retry (#654).

      • CXXCBC-580: SDK now reports last error when timing out on Columnar query retries (#650).

      Build and Test Infrastructure

      • CXXCBC-303: Updated build scripts to produce RPM packages (#660).

      • CXXCBC-597: SDK now use static library for ASIO; updated it to 1.31.0 (#658).

      • CXXCBC-596: No longer include tao_json_serializer.hxx by default (#656).

      • Include <string> in string_hex.h (#652).

      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.