SDK Release Notes

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

    Version 1.5 of the C++ SDK implements the 3.10 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.5.1
      VERSION
      1.5.1
      GITHUB_REPOSITORY
      "couchbase/couchbase-cxx-client"
      OPTIONS
      "COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL ON")

    C++ SDK 1.5 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.5.1 (26 October 2026)

    This is the second GA release of the 1.5 C++ SDK.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.5.1.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.5.1.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.5.1-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.5.1-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.5.1-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.5.1-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.5.1-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.5.1-1.bookworm.aarch64.tar

    Ubuntu 26.04 (Resolute)

    x86_64

    couchbase-cxx-client-1.5.1-1.resolute.x86_64.tar

    Ubuntu 26.04 (Resolute)

    aarch64

    couchbase-cxx-client-1.5.1-1.resolute.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

    couchbase-cxx-client-1.5.1-1.noble.x86_64.tar

    Ubuntu 24.04 (Noble)

    aarch64

    couchbase-cxx-client-1.5.1-1.noble.aarch64.tar

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.5.1-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.5.1-1.jammy.aarch64.tar

    Alpine Linux 3.24

    x86_64

    couchbase-cxx-client-1.5.1-r1-x86_64-alpine-3.24.tar

    Alpine Linux 3.24

    aarch64

    couchbase-cxx-client-1.5.1-r1-aarch64-alpine-3.24.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.5.1-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.5.1-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.5.1-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.5.1-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.5.1-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.5.1-r1-aarch64-alpine-3.21.tar

    Bug Fixes

    • CXXCBC-1112: Embedded Mozilla CA Bundle — A build now embeds every certificate of the curl.se CA bundle.

      • Since 2026-10-20, the bundle puts a # Fingerprint (SHA-256): line between each certificate’s name and its PEM block.

      • The build extracted no certificate from that format, and configure still succeeded.

      • The 1.5.0 source archive and packages carry a bundle in this format, so they embed no Mozilla certificate.

      • With no explicit trust certificate, couchbases:// connections, key-value and HTTP alike, then trusted only the system CAs and the Capella root. couchbase2:// connections trusted only the Capella root.

      • With COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE enabled, which is the default, configure now fails on a bundle it cannot embed in full.

    • CXXCBC-1113: Shared Library soname — The soname now carries the major and minor version only, so later 1.5.x releases replace the library in place.

      • The 1.5.1 soname is libcouchbase_cxx_client.so.1.5, and every later 1.5.x release keeps it.

      • On macOS the install name is libcouchbase_cxx_client.1.5.dylib.

      • A minor release changes the soname, because it may change the ABI.

    • CXXCBC-1109: Eventing Function Not Found — Eventing management requests report errc::management::eventing_function_not_found when the server answers ERR_APP_NOT_FOUND.

      • Only ERR_APP_NOT_FOUND_TS mapped to that code. ERR_APP_NOT_FOUND reported invalid_argument on HTTP 400, and internal_server_failure otherwise.

    • Windows Builds — Two compile errors are fixed.

      • MSVC 19.29 (Visual Studio 2019) rejected cluster::query_stream() and cluster::analytics_query_stream() with error C2039.

      • A 32-bit build failed in the WebSocket frame encoder with warning C4293, which the default WARNINGS_AS_ERRORS makes an error. To fill the 64-bit length field, a std::size_t was shifted by 32 to 56 bits, at or beyond its width where it is 32 bits.

    Version 1.5.0 (20 October 2026)

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

    Upgrade to 1.5.1

    The 1.5.0 source archive and packages embed no Mozilla CA certificate (CXXCBC-1112). Without an explicit trust certificate, couchbases:// connections trust only the system CAs and the Capella root, and couchbase2:// connections only the Capella root. Upgrading to 1.5.1, which restores the bundle, is recommended.

    Not binary compatible with 1.4.x

    Applications built against 1.4.x must be recompiled.

    • The library SOVERSION follows the release version, so it changes to 1.5.0.

    • search_options::built gained a scoring member (CXXCBC-911), which changes its layout.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.5.0.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.5.0.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.5.0-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.5.0-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.5.0-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.5.0-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.5.0-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.5.0-1.bookworm.aarch64.tar

    Ubuntu 26.04 (Resolute)

    x86_64

    couchbase-cxx-client-1.5.0-1.resolute.x86_64.tar

    Ubuntu 26.04 (Resolute)

    aarch64

    couchbase-cxx-client-1.5.0-1.resolute.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

    couchbase-cxx-client-1.5.0-1.noble.x86_64.tar

    Ubuntu 24.04 (Noble)

    aarch64

    couchbase-cxx-client-1.5.0-1.noble.aarch64.tar

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.5.0-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.5.0-1.jammy.aarch64.tar

    Alpine Linux 3.24

    x86_64

    couchbase-cxx-client-1.5.0-r1-x86_64-alpine-3.24.tar

    Alpine Linux 3.24

    aarch64

    couchbase-cxx-client-1.5.0-r1-aarch64-alpine-3.24.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.5.0-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.5.0-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.5.0-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.5.0-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.5.0-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.5.0-r1-aarch64-alpine-3.21.tar

    New Features

    • CXXCBC-980: Read a Named Replica — collection::get_replica() reads one specific replica of a document, as defined by SDK-RFC 0053.

      • get_any_replica() returns whichever copy answers first. get_replica() lets the application choose the copy.

      • The copy is selected with get_replica_strategy::from_index(replica_index::first), or second and third. The active copy cannot be selected.

      • The result is a get_replica_result, the same type the other replica reads return.

      • The operation has callback and std::future overloads, and is @committed.

      • Three new errc::key_value codes describe why the chosen copy cannot answer:

        • replica_index_out_of_bounds: the bucket has fewer replicas than the index. It is reported without a network round trip, and retrying cannot help.

        • replica_index_currently_unavailable: the replica is configured but not placed on a node yet. A rebalance resolves it.

        • document_not_found_on_replica: the replica answered but does not hold the document. error::cause() carries document_not_found.

      • get_replica_strategy_from_index_options::wrap(true) reads the next readable replica instead of failing. It still fails if the bucket has no replicas, or if no replica is readable.

    • CXXCBC-911: Hybrid Search Score Fusion — search_options::scoring() controls how the server merges the FTS and vector result sets of a hybrid search into one ranked list.

      • search_scoring_reciprocal_rank_fusion merges the two lists by rank, not by raw score. It is the recommended strategy and works well with the server defaults.

        • rank_constant() sets the rank constant of the Reciprocal Rank Fusion formula.

        • window_size() sets how many results from each list take part in the fusion.

      • search_scoring_relative_score_fusion merges the two lists by normalized score. Its window_size() has the same meaning.

      • search_scoring_none turns scoring off. It also works on servers older than 8.1.

      • Both fusion strategies require Couchbase Server 8.1. The SDK checks the cluster capability, and an older cluster fails the request with errc::common::feature_not_available.

      • Without a hybrid request, the server re-scores the hits but keeps their order.

      • search_options::scoring() is @committed. The two fusion classes are @uncommitted.

      • Calling both scoring() and disable_scoring(true) throws std::invalid_argument, because both set the same request field.

    • CXXCBC-978: Log Redaction — The SDK can tag sensitive values in its logs. A tool such as cblogredaction then strips or hashes them before the logs are shared.

      • Redaction is enabled with log_redaction=true in the connection string. It is off by default.

      • When it is off, log output is unchanged.

      • Values are tagged by category:

        • <ud> user data: document keys and bodies, usernames, query statements.

        • <md> metadata: bucket, scope, collection, design document, view and index names.

        • <sd> system data: hostnames, IP addresses and ports.

      • The SDK only adds tags. It does not remove or hash anything itself.

      • The setting is process-wide and is applied when a cluster opens. No cluster can turn it off again.

      • The dump_configuration option writes untagged cluster configurations to the log. Combining it with log_redaction logs a warning.

      • Warnings about an unrecognised MCBP frame no longer print the frame body, which could hold document data.

    Improvements

    • CXXCBC-1037: Tracing for Streaming Requests — query_stream(), analytics_query_stream() and other streaming HTTP requests now create a dispatch_to_server span.

      • The span is a child of the request’s parent span, as for buffered requests.

      • A tracer previously saw no dispatch span for a streaming request.

    • CXXCBC-1087: Faster Reopen After fork() — notify_fork(fork_event::child) reopens the cluster in the child without waiting for the bootstrap to finish.

      • A child whose seed nodes do not answer is no longer blocked for bootstrap_timeout.

      • Requests issued while the cluster is opening are held, and sent once the bootstrap completes. Each request is still bounded by its own timeout.

      • If the bootstrap fails, the held requests complete with cluster_closed.

      • open_bucket() is the exception. It waits for the bootstrap to end.

    • CXXCBC-920: cbc-pillowfight Document Bodies — --incompressible-body is replaced by a set of options that control generated document bodies.

      • The options are --document-body-fill, --document-body-format, --document-body-size, --document-body-pool-size and --document-body-seed.

      • Every generated document now has its own body. The old option reused one body per thread, so the server compressed the load as repeated data.

      • A random fill compresses 1.00x under lz4 and snappy in 4096-byte blocks. The load can therefore be used to size a dataset.

      • Insert operations in --operation-ratio now insert documents. They previously called replace on new ids and failed with document_not_found.

    • CXXCBC-1055, CXXCBC-1092, CXXCBC-1104, CXXCBC-1107: Build Portability — The library builds on more toolchains:

      • MinGW GCC on Windows, for the asio target.

      • clang on Windows ARM64.

      • libc++ 23, including with _LIBCPP_REMOVE_TRANSITIVE_INCLUDES.

      • GCC 8 on Enterprise Linux 8.

    Security Fixes

    • CXXCBC-1072, CXXCBC-1106: Management Request Encoding — Names and values passed by the application can no longer change the meaning of a management request.

      • User and group upsert requests encoded their fields with a URL encoder that leaves &, = and + unescaped.

      • A password such as Pw123456&roles=admin therefore added a roles field and granted the admin role.

      • These request bodies are now form-encoded. The server decodes exactly the values the caller passed.

      • Names placed into REST paths are now escaped. A #, ? or / in a name could cut the path short or address a different entity.

      • This covers user, group, eventing function, search index, design document, view, bucket, scope and link names.

      • url_encode() no longer stops escaping after a + or an existing %XX sequence.

      • form_encode() and url_encode() write each escaped byte with two hex digits.

    • CXXCBC-981: vBucket Map Bounds Check — Replica reads no longer index past the end of a vBucket map row.

      • After replicas are added to a bucket, the replica count grows before the vBucket map does.

      • Replica reads and durability polling read past the end of the shorter row. The read could route a request to a node that does not hold the vBucket.

      • Rows are now bounds-checked. A missing entry is treated like an unassigned replica.

      • Range scan rejects a map whose rows name no active node.

      • A map with no rows no longer causes a division by zero.

    Bug Fixes

    • CXXCBC-1057: Client Certificate Rotation — A new certificate set with cluster::set_authenticator() is used by the next HTTP request.

      • Pooled HTTP connections were reused with the old certificate until their idle timeout.

      • Open key-value connections keep the certificate they were opened with.

      • Under TLS 1.3, a refused client certificate is now retried until the request times out. TLS 1.2 already behaved this way. If a valid certificate is set in time, the request succeeds.

    • CXXCBC-984, CXXCBC-985, CXXCBC-986, CXXCBC-987, CXXCBC-1022, CXXCBC-1023, CXXCBC-1090, CXXCBC-1093: Request Completion — Several paths no longer drop a key-value request without calling its handler.

      • A request waiting in a retry backoff when the cluster closes now completes with an error. It previously waited for a deadline that never fired.

      • A request whose retry or re-dispatch is refused now completes with an error.

      • A request routed to a node that cannot bootstrap is retried or cancelled. It previously waited for its deadline without being sent.

      • Requests that leave the operation queue, and requests whose collection id lookup cannot start, no longer leak.

      • A key-value request’s timeout now includes the time spent waiting for its bucket to open. Range scan and collection id lookups keep their own deadlines.

      • A durable mutation completes within max(timeout, 1.5 s) of being issued.

      • A range scan of a missing collection fails at once with collection_not_found. It previously timed out after the full scan timeout.

      • ping() no longer completes before every ping request has been sent.

    • CXXCBC-1032, CXXCBC-1034, CXXCBC-1035, CXXCBC-1039, CXXCBC-1046, CXXCBC-1048: HTTP Session Lifecycle — HTTP session shutdown is now serialised and runs once.

      • close() on a busy session no longer causes a use-after-free.

      • A session stopped mid-response no longer throws std::bad_function_call on the IO thread.

      • A reused connection no longer loses part of a streamed body.

      • A streamed result that is dropped or abandoned early releases its connection. It previously held it until a timeout or until the cluster closed.

      • A request deadline that fires just after the response no longer stops the pooled session.

      • cancel() on a completed operation no longer stops a session that another request is using.

      • A session that replaced a failed node is returned to the pool after the request.

      • A row stream with a zero low-water mark no longer stalls.

    • CXXCBC-882, CXXCBC-1049, CXXCBC-1059: Error Mapping — HTTP errors map to more accurate error codes.

      • An unrecognised HTTP 400 now reports errc::common::invalid_argument, as SDK-RFC 0058 requires.

      • This applies to query, analytics, search, eventing and management requests.

      • These requests previously reported internal_server_failure, unsupported_operation, parsing_failure, or even success.

      • A 400 body that lacks an expected field no longer throws inside the SDK.

      • Query error 2120 (E_ADMIN_AUTH) maps to authentication_failure.

      • Dropping a query index that does not exist reports index_not_found, whatever HTTP status the server returns.

    • CXXCBC-1063, CXXCBC-1089, CXXCBC-1091: wait_until_ready — The waits now complete in cases that previously timed out or never completed.

      • bucket::wait_until_ready() waits only for the replicas the data nodes can hold. A one-replica bucket on a single node now reaches online.

      • Over couchbase2://, both waits end once the gRPC channel to the gateway is connected.

      • Over couchbase2://, opening a bucket fails at once with feature_not_available.

      • A wait pending at cluster::close(), or started after it, completes with cluster_closed.

    • CXXCBC-913, CXXCBC-914: fork() Handling — A forked child no longer interferes with the parent’s connections or transactions client record.

      • The child closes the sockets it inherited before it starts its own I/O.

      • The child previously ran the parent’s pending reads, and took responses meant for the parent.

      • Closing the inherited cluster in the child keeps the parent’s entry in the transactions client record.

    • CXXCBC-1011: Big-Endian Hosts — The SDK now connects from big-endian hosts.

      • On a big-endian host, MCBP header fields were sent in the wrong byte order. The server closed the connection during bootstrap.

      • Byte order is now converted for the host. An emulated s390x client connects and completes key-value operations.

      • On every host, a server duration is now read when 16 or more bytes of framing extras precede it.

    • CXXCBC-1052, CXXCBC-1054, CXXCBC-1086: Transactions — Fixes for expiry and for retry waits.

      • On Windows, the ATR expiry was computed in 32 bits and wrapped above about 2.15 s. Lost-attempts cleanup could treat a live attempt as expired.

      • Waits between retries now use a timer and no longer block the IO thread.

      • With a single IO thread, the transaction being waited for can now commit. The waiting write previously failed with a write-write conflict.

      • A query-mode transaction whose rollback finds it expired now raises EXPIRY instead of FAIL.

    • CXXCBC-994: couchbase2 Close — An operation in flight while the cluster closes now completes with cluster_closed. It previously reported temporary_failure, which suggests a retry.

    • CXXCBC-1002: Application Telemetry Units — The latency histograms for HTTP services now report _sum in milliseconds, as SDK-RFC 0084 requires.

      • This affects query, search, analytics, management and eventing.

      • The sum was divided by 1000, so a mean latency computed from it was 1000 times too low.

      • Dashboards and alerts built on the old values need review.

    Removals

    • CXXCBC-782: Columnar Build Mode — The COUCHBASE_CXX_CLIENT_COLUMNAR build option, deprecated in 1.4.0, is removed with the code it enabled.

      • Setting the option now leaves an unused CMake cache entry.

      • Connection string parameters accepted only by a Columnar build are no longer recognised. They include security.trust_only_pem_file, timeout.dispatch_timeout and timeout.query_timeout.

      • The build-info map no longer has a columnar key.

    Deprecations

    • CXXCBC-911: search_options::disable_scoring() — Replaced by search_options::scoring(search_scoring_none{}), which sends the same request.

    C++ SDK 1.4 Releases

    Version 1.4.0 (13 August 2026)

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

    Not binary compatible with 1.3.x

    couchbase::result and couchbase::error gained a node_id_ member (CXXCBC-821). Both are non-pimpl public base classes, so the library SOVERSION is bumped and applications built against 1.3.x headers must be recompiled for 1.4.0.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.4.0.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.4.0.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.4.0-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.4.0-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.4.0-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.4.0-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.4.0-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.4.0-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

    couchbase-cxx-client-1.4.0-1.noble.x86_64.tar

    Ubuntu 24.04 (Noble)

    aarch64

    couchbase-cxx-client-1.4.0-1.noble.aarch64.tar

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.4.0-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.4.0-1.jammy.aarch64.tar

    Alpine Linux 3.24

    x86_64

    couchbase-cxx-client-1.4.0-r1-x86_64-alpine-3.24.tar

    Alpine Linux 3.24

    aarch64

    couchbase-cxx-client-1.4.0-r1-aarch64-alpine-3.24.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.4.0-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.4.0-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.4.0-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.4.0-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.4.0-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.4.0-r1-aarch64-alpine-3.21.tar

    New Features

    • CXXCBC-886: Cloud Native Gateway Support (couchbase2://) — A connection string with the couchbase2:// scheme routes every operation over gRPC to a single Cloud Native Gateway endpoint, instead of opening MCBP and HTTP connections to each cluster node. The public API is unchanged: no type or method is specific to the transport. Key-value, query, analytics, search, views — and bucket, scope, collection, query index, and search index management — are all routed over it, together with the SDK retry strategy, value compression, level-based durability, and the transport-agnostic tracing and metrics recorders. The scheme implies TLS (default port 18098) and accepts exactly one host, since the gateway fronts the whole cluster. Support is a compile-time option and is off by default: a library built without COUCHBASE_CXX_CLIENT_BUILD_COUCHBASE2 reports errc::common::feature_not_available from cluster::connect(). Operations the transport cannot carry — ping, diagnostics, replica reads, subdocument operations, range scan, and poll-based durability — are documented per entity in the API reference and on its dedicated page. The transport is uncommitted in 1.4.0.

    • CXXCBC-102, CXXCBC-485, CXXCBC-910: Streaming Query and Analytics Results — Added cluster::query_stream() and cluster::analytics_query_stream(), which resolve as soon as the response preamble has been parsed and return a lazy result handle. Rows are pulled one at a time through next() (callback and std::future overloads), so a result of any size costs the same bounded amount of memory. The HTTP layer reads on demand with byte back-pressure and an idle timeout, and buffering limits are tunable through cluster_options. query_row and analytics_row decode individual rows, signature() is available before the stream is drained, meta_data() resolves once it is, and cancel() abandons a partially consumed stream. Streaming failures carry an error context and a new errc::streaming_json_lexer category. Prepared statements (adhoc set to false) fall back to the buffered path and replay their rows through the same handle. The API is volatile in 1.4.0.

    • CXXCBC-820, CXXCBC-821, CXXCBC-826: Node Identification API — Introduced couchbase::node_id, a comparable and hashable value type that uniquely identifies a cluster node: the server-assigned nodeUUID on Server 8.0.1+, and a stable hash of hostname and KV port on older releases. It is propagated through the whole key-value path: result::node_id() and error::node_id() attribute every outcome to the serving node, and replica reads expose a per-entry node id. collection::node_id_for() resolves a key to its owning node, and collection::node_ids() enumerates the nodes currently serving key-value traffic; both read the client-side topology with no network round-trip.

    • CXXCBC-822: External Circuit Breaker Example — Added a copy-pasteable per-node circuit breaker built on the node id API and modelled on Netflix Hystrix / Resilience4j. It demonstrates a sliding-window state machine, failure-rate and slow-call-rate tripping, per-node isolation, and a topology sweep that prunes tracker state using collection::node_ids().

    • CXXCBC-845: wait_until_ready on the Public API — cluster::wait_until_ready() and bucket::wait_until_ready() actively ping the cluster services until they respond or the timeout elapses, in callback and std::future flavours. Readiness is configured through wait_until_ready_options (desired_state, service_types): cluster_state::online requires every reachable endpoint of every requested service to be responsive, cluster_state::degraded requires at least one endpoint of every requested service. The bucket variant additionally waits until every vBucket has its active and all replicas assigned, which majority-durable writes require.

    Improvements

    • CXXCBC-75, CXXCBC-849, CXXCBC-850, CXXCBC-851, CXXCBC-854, CXXCBC-855, CXXCBC-856, CXXCBC-857, CXXCBC-858, CXXCBC-859, CXXCBC-860: Reduced Per-Operation Overhead — A pass over the key-value hot path: log arguments are formatted only when a consumer exists, diagnostic and dispatch identifiers are built lazily, metrics value recorders and per-connection telemetry recorders are memoized, dispatch attributes are captured through typed span setters, in-flight handlers are tracked in a ring/slot table, send-path flush posts are coalesced, and response body buffers are recycled to avoid a per-operation mmap at large values. A typical completion handler previously took one to three heap allocations and now takes none. No throughput benchmarks are published for this release; these items are characterized by the allocations, syscalls, and locks removed per operation.

    • CXXCBC-828, CXXCBC-829: Reduced std::regex Usage in Error Handling — Errors built from server response text now use std::string::find() and a new utils::contains_string() helper with optional ASCII-only case folding. The remaining std::regex objects are static const, so they are compiled once.

    • CXXCBC-896, CXXCBC-902, CXXCBC-904, CXXCBC-905, CXXCBC-906, CXXCBC-907: couchbase2 Behavioral Parity — Key-value and non-key-value operations over couchbase2:// are retried through the SDK retry strategy, kv_durable_timeout is honored for durable mutations, and ping and diagnostics report errc::common::feature_not_available rather than failing opaquely. The key-value path requests compressed content and snappy-compresses mutations above a size threshold that shrink by a configured ratio, so large values are not sent raw. Tracers and meters see the same spans and metrics as over MCBP.

    • CXXCBC-587: DNS-SRV Diagnostics — Improved diagnostics for DNS-SRV lookups on GCP and against misconfigured nameservers.

    • CXXCBC-827: Eventing Function Statuses — Added the resuming and unknown function statuses to the Eventing core API.

    • Platform and Packaging — Added Windows ARM64 builds and test runs, and support for the GCC 16 and LLVM 22 toolchains. The package targets were refreshed: Ubuntu 26.04 (Resolute) and Fedora 44 were added, and Fedora 41, Fedora 42, and openSUSE Leap were dropped. Source archives and packages are now reproducible byte-for-byte, redistributable packages build their vendored dependencies from source, the bundled static archive is stripped, Debian packaging supports rootless sbuild, and RPM packaging gained a rootless podman path and gates gRPC-based components by platform.

    Security Fixes

    • CXXCBC-838: TLS Hostname Verification (CWE-297) — Outgoing TLS connections now send SNI and verify the certificate’s SAN/CN against the dialed hostname. verify_peer previously only checked that the certificate chained to a trusted CA, so an on-path attacker could present any CA-issued certificate for any name. Disabling verification (tls_verify=none) logs a prominent warning and is refused for Capella hosts. Behavior change: a TLS connection whose certificate does not match the dialed hostname now fails the handshake where it previously succeeded.

    • CXXCBC-837: mcbp_parser Bounds Check — A key-value response frame claiming a prefix length (framing extras + extras + key) larger than its body length drove the parser past the end of the receive buffer, so a single malformed or corrupted frame could crash the client. The prefix length is now validated against the body length and such frames are rejected.

    • CXXCBC-836: Analytics Identifier Quoting — Bucket, scope, and collection names are quoted and escaped when composing Analytics statements, closing a SQL++ injection vector on names taken from application input.

    Bug Fixes

    • CXXCBC-830, CXXCBC-842, CXXCBC-846, CXXCBC-852, CXXCBC-853, CXXCBC-864, CXXCBC-872, CXXCBC-912, CXXCBC-924: Lifetime and Thread-Safety Fixes — Fixed a use-after-free in mcbp_session handler dispatch on a re-entrant stop(), a cluster/bucket shared_ptr cycle leaked by parked deferred operations, an mcbp_command leak on replica reads at io_context teardown, handler-drop lifetime in asynchronous public API operations, an in-flight bootstrap session left running when a bucket is closed, parked operations never completed on teardown mid-bucket-bootstrap, races in key-value operation routing and finalization, a use-after-free in the forked child that also damaged the parent, and a cluster reference held past close completion. Tearing down a cluster while a bucket was still bootstrapping could leave a std::future caller with broken_promise or hung; enqueues into a closed bucket are now rejected and parked operations are completed with cluster_closed. Observability members are stopped in place rather than moved out of close(), so a null dereference no longer follows notify_fork(fork_event::child). The *_any_replica fan-out no longer shares one cancellation token across sibling commands, which let the first response cancel the others on an IO thread while the caller was still dispatching them.

    • CXXCBC-785, CXXCBC-787, CXXCBC-788, CXXCBC-789, CXXCBC-797, CXXCBC-862: Key-Value Correctness — A projected get requesting more than 16 paths no longer fails when one of the paths is missing, lookup_in_all_replicas captures subdocument paths correctly and reports total failure properly, lookup_in first-error tracking and the subdoc_invalid_xattr_order error mapping were corrected, a codec branch no longer rejects valid packets because a collection-id check was a standalone if rather than an else if, and an unknown_collection response now re-resolves the collection id on the queue_request path.

    • CXXCBC-786, CXXCBC-823, CXXCBC-839, CXXCBC-841, CXXCBC-876: Connection Management — The connection is closed when reauthentication fails with a non-retryable error, instead of being left open with stale credentials. HTTP sessions are removed from the pending and busy maps when they stop or disconnect, and dead idle pooled connections are detected and torn down promptly rather than being handed to the next request. A cluster-level (bucket-less) configuration push could advance a bucket-bound session’s revision floor, so the correct map-carrying configuration was later discarded, causing stale routing and Not-My-VBucket loops during failover and rebalance; configurations are now accepted only when their bucket scope matches the session. bucket_create and bucket_update no longer fail on Couchbase Server 8.1, which rejected the leading & their form-encoded body carried.

    • CXXCBC-774, CXXCBC-847, CXXCBC-863, CXXCBC-865, CXXCBC-868, CXXCBC-873, CXXCBC-874: Transactions — Since ExtBinarySupport, content_as() defaulted to the JSON transcoder and rejected a JSON document stored with non-JSON common flags. The lenient read is restored through a no-transcoder content_as<Document>() overload; passing a transcoder explicitly still enforces its flag handling. get_multi read-skew detection and resolution were fixed, per-document fetch errors are handled and the reads are bounded, atr_entry::has_expired() is hardened against missing timestamps and overflow, query result rows without a usable CAS are rejected, and an incorrect std::move on a const Document& parameter was removed. Lost-attempts cleanup scans up to 16 ATRs concurrently instead of strictly one at a time, so a loaded node no longer leaves expired transactions, and the documents they block, uncleaned for a window.

    • CXXCBC-843: GCC 16 Build — Fixed a -Warray-bounds diagnostic in client_request::generate_payload.

    Deprecations

    • CXXCBC-925: Columnar Build Mode — COUCHBASE_CXX_CLIENT_COLUMNAR gates a prototype build mode scheduled for removal in 1.5.0. Configuring with the option now emits a CMake warning and a compiler diagnostic naming the deprecating and removing versions. Neither can fail a build.

    C++ SDK 1.3 Releases

    Version 1.3.2 (2 June 2026)

    This is the third GA release of the 1.3 C++ SDK.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.3.2.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.3.2.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.3.2-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.3.2-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.3.2-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.3.2-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.3.2-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.3.2-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

    couchbase-cxx-client-1.3.2-1.noble.x86_64.tar

    Ubuntu 24.04 (Noble)

    aarch64

    couchbase-cxx-client-1.3.2-1.noble.aarch64.tar

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.3.2-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.3.2-1.jammy.aarch64.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.3.2-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.3.2-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.3.2-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.3.2-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.3.2-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.3.2-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.3.2-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.3.2-r1-aarch64-alpine-3.20.tar

    New Features

    • CXXCBC-820: Node Identification API — Introduced couchbase::node_id, a value type that uniquely identifies a cluster node. On Server 8.0.1+ the identifier is the server-assigned nodeUUID; on older releases a stable CRC32-based hash is derived from the node’s hostname and KV port. The type is equality-comparable, ordered, and hashable (a std::hash specialization is provided), so it can be used directly as a key in application-side maps.

    • CXXCBC-821: Node Attribution for KV Operations — node_id is now propagated through the entire key-value operation path. couchbase::result gains a node_id() accessor and couchbase::error gains a node_id() accessor, so callers can attribute every result and error to the serving cluster node. Replica reads expose a per-entry node_id on the results of get_all_replicas() and lookup_in_all_replicas(). A new client-side helper, collection::node_id_for(document_id, options), resolves a key to its owning node from the vBucket map with no network round-trip.

    • CXXCBC-826: Enumerate KV-Serving Nodes — Added collection::node_ids(options, handler) (with a std::future-returning overload) to enumerate the cluster nodes that currently serve key-value traffic for a collection’s bucket, drawn from the client-side topology snapshot with no network round-trip. Each entry is the same node_id the SDK reports on KV results and errors, so the result is directly comparable to the keys of an application’s unordered_map<node_id, …​> — exactly what a state machine needs to retire tracking entries when a node leaves the cluster topology. Nodes that do not expose a KV port for the configured transport are filtered out.

    • CXXCBC-822: External Circuit Breaker Example — Added a copy-pastable circuit breaker example built on the node_id API and modelled on Netflix Hystrix and Resilience4j. It demonstrates a per-node registry keyed on couchbase::node_id, a sliding-window state machine (closed/open/half_open/forced_open/disabled), failure-rate and slow-call-rate tripping, per-node isolation, and a topology-sweep that prunes tracker state using collection::node_ids().

    Improvements

    • CXXCBC-828: Reduced std::regex Usage in Error Handling — Replaced inline std::regex construction with std::string::find() when building errors from server response text in collection and scope management operations. Where case-insensitive matching is still required, the std::regex objects are now static const so they are compiled once.

    • CXXCBC-829: contains_string Utility — Added utils::contains_string(input, substr, ignore_case = false), a substring match with optional ASCII-only case folding and no std::locale dependency, and replaced the remaining std::regex_search calls with it.

    Bug Fixes

    • CXXCBC-785: Projected Get with > 16 Paths — A projected get requesting more than 16 paths no longer fails when one of the requested paths does not exist in the document. Missing paths are now skipped rather than aborting the whole projection.

    • CXXCBC-823: HTTP Session Manager Cleanup — Fixed check_in() not removing sessions from the pending/idle session maps when a session is not connected, and updated each session’s on_stop() to remove itself from all session maps. Destruction of removed sessions is deferred until after the manager mutex is released, avoiding holding the lock across session teardown.

    Version 1.3.1 (20 March 2026)

    This is the second GA release of the 1.3 C++ SDK.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.3.1.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.3.1.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.3.1-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.3.1-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.3.1-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.3.1-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.3.1-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.3.1-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

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

    Ubuntu 24.04 (Noble)

    aarch64

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

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.3.1-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.3.1-1.jammy.aarch64.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.3.1-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.3.1-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.3.1-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.3.1-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.3.1-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.3.1-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.3.1-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.3.1-r1-aarch64-alpine-3.20.tar

    Fixes and Enhancements

    • CXXCBC-774: Fixed incorrect use of std::move on const Document& — Changed upsert(), insert(), and replace() signatures to take Document by value. This correctly supports move semantics for rvalues while maintaining backward compatibility for lvalues.

    • CXXCBC-775: Integrated the system_metrics library and added a new cbc sysinfo command to the cbc tool. This is part of the effort to make the C++ SDK self-contained for FIT testing.

    • Mozilla Certificate Parsing — Updated the regex for parsing the header date of Mozilla certificates from curl.se to ensure correct certificate handling and added a warning if the header date is not found.

    Version 1.3.0 (11 March 2026)

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

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.3.0.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.3.0.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.3.0-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.3.0-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.3.0-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.3.0-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.3.0-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.3.0-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

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

    Ubuntu 24.04 (Noble)

    aarch64

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

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.3.0-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.3.0-1.jammy.aarch64.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.3.0-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.3.0-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.3.0-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.3.0-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.3.0-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.3.0-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.3.0-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.3.0-r1-aarch64-alpine-3.20.tar

    New Features

    • CXXCBC-691: OpenTelemetry Support — Added initial OpenTelemetry support with tracing and metrics export via OTLP HTTP. The SDK now exposes spans and metrics following OpenTelemetry conventions. The feature can be enabled with -DCOUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY=ON at build time.

    • CXXCBC-740: JWT Authentication — Added JWT-based authentication support via jwt_authenticator. The authenticator can refresh tokens automatically and supports reauthentication when tokens become stale.

    • CXXCBC-745: Lazy Connections Mode — Added new enable_lazy_connections option that delays opening KV connections until the first operation is executed, reducing initial connection overhead.

    • CXXCBC-739: mTLS Certificate Refresh — Added support for refreshing TLS certificates without restarting the application. Certificates can now be updated via cluster::update_credentials(), and new TLS sessions will use the updated certificates.

    • CXXCBC-751: cbc-get Replica Support — Added --replica flag to cbc-get tool to fetch documents from replica nodes.

    • CXXCBC-754: cbc-config Tool — Added new cbc-config tool to dump cluster configuration to stdout for debugging.

    Improvements

    • CXXCBC-719: Enhanced Tracing — Added top-level spans in the Public API for all KV and HTTP operations, providing better observability into operation lifecycle.

    • CXXCBC-750: Internal Tracer for Wrapper SDKs — Added internal tracer interface (tracer_wrapper::wrapped()) for use by wrapper SDKs that want to integrate with the SDK’s tracing.

    • CXXCBC-742: cbc-query Improvements — Enhanced error reporting with JSON-encoded error context for query failures.

    • CXXCBC-771: Credentials Update Restrictions — cluster::update_credentials() now prevents switching between authenticator types (e.g., password to certificate) to avoid unexpected behavior.

    • CXXCBC-768: DNS-SRV Refresh Fix — Fixed an issue where bucket_not_found errors during bootstrap would trigger unnecessary DNS-SRV record refresh loops.

    • CXXCBC-767: Implemented AuthStale handling and JWT reauthentication support.

    Bug Fixes

    • CXXCBC-769, CXXCBC-770, CXXCBC-756, CXXCBC-761, CXXCBC-755: Various OpenTelemetry integration fixes and improvements.

    • CXXCBC-763: Fixed set_authenticator not applying updated cert/key pairs to new TLS sessions.

    • Fixed build issues on macOS 14 with gcc-15 (missing std::quick_exit).

    • CXXCBC-732: Fixed memory leaks in concurrent fixed queue reporting.

    • CXXCBC-743: Fixed HTTP command handler signature to properly handle decoded response types.

    • CXXCBC-766: Fixed OpenSSL headers priority in BoringSSL builds.

    Deprecations

    • CXXCBC-752: MapReduce Views are now deprecated. Use Query with SQL++ instead.

    • CXXCBC-740: jwt_authenticator is marked as @uncommitted and may change in future releases.

    C++ SDK 1.2 Releases

    Version 1.2.2 (19 February 2026)

    This is a second patch release of the 1.2 C++ SDK.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.2.2.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.2.2.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.2.2-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.2.2-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.2.2-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.2.2-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.2.2-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.2.2-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

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

    Ubuntu 24.04 (Noble)

    aarch64

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

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.2.2-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.2.2-1.jammy.aarch64.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.2.2-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.2.2-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.2.2-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.2.2-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.2.2-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.2.2-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.2.2-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.2.2-r1-aarch64-alpine-3.20.tar

    Fixes and Enhancements

    • CXXCBC-768: Prevent DNS-SRV refresh loop on bucket_not_found bootstrap errors (#897).

    Version 1.2.1 (23 January 2026)

    This is a first patch release of the 1.2 C++ SDK.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.2.1.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.2.1.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.2.1-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.2.1-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.2.1-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.2.1-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.2.1-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.2.1-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

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

    Ubuntu 24.04 (Noble)

    aarch64

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

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.2.1-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.2.1-1.jammy.aarch64.tar

    Alpine Linux 3.23

    x86_64

    couchbase-cxx-client-1.2.1-r1-x86_64-alpine-3.23.tar

    Alpine Linux 3.23

    aarch64

    couchbase-cxx-client-1.2.1-r1-aarch64-alpine-3.23.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.2.1-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.2.1-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.2.1-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.2.1-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.2.1-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.2.1-r1-aarch64-alpine-3.20.tar

    Fixes and Enhancements

    • CXXCBC-766: Make sure BoringSSL headers take priority over system distribution (#889).

    Version 1.2.0 (26 September 2025)

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

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.2.0.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.2.0.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 10

    x86_64

    couchbase-cxx-client-1.2.0-1.el10.x86_64.tar

    Enterprise Linux 10

    aarch64

    couchbase-cxx-client-1.2.0-1.el10.aarch64.tar

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 13 (Trixie)

    x86_64

    couchbase-cxx-client-1.2.0-1.trixie.x86_64.tar

    Debian 13 (Trixie)

    aarch64

    couchbase-cxx-client-1.2.0-1.trixie.aarch64.tar

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.2.0-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.2.0-1.bookworm.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

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

    Ubuntu 24.04 (Noble)

    aarch64

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

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.2.0-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.2.0-1.jammy.aarch64.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.2.0-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.2.0-r1-aarch64-alpine-3.22.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.2.0-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.2.0-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.2.0-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.2.0-r1-aarch64-alpine-3.20.tar

    Alpine Linux 3.19

    x86_64

    couchbase-cxx-client-1.2.0-r1-x86_64-alpine-3.19.tar

    Alpine Linux 3.19

    aarch64

    couchbase-cxx-client-1.2.0-r1-aarch64-alpine-3.19.tar

    New Features

    • CXXCBC-567: Added support for field-level encryption library (#791).

    • CXXCBC-713, CXXCBC-729: Added cbc-keygen, a tool to generate keys for specific vBucket (#799, #833).

    • CXXCBC-656: Added cbc-remove and cbc-upsert tools (#781).

    • CXXCBC-653: Added support "access_deleted" for Replica Reads (#821).

    • CXXCBC-639: Added support of building both static and shared libraries (#707).

    • CXXCBC-698: Added flex_index to transaction_query_options (#773).

    • CXXCBC-675: Added support vector search prefilter (#775).

    • CXXCBC-699: Added support of randomization of bootstrap nodes (#777). By default the SDK would shuffle node list (including list received via DNS-SRV request). To disable this behavior use preserve_bootstrap_nodes_order option.

    • CXXCBC-711: Promoted scope_search_index_manager to committed API (#793).

    • CXXCBC-692: The SDK now prevents connection to Enterprise Analytics cluster (#792, #807, #810). There is a set of specialized SDKs for Enterprise Analytics clusters.

    • CXXCBC-707: Updated network selection heuristic (#809). The logic is improved in certain cloud-specific cases.

    Fixes and Enhancements

    • CXXCBC-715: Fixed Hard Failover Intermittent Crash in HTTP connection manager (#818).

    • CXXCBC-693: Handle empty/null indexDef`s for `search_index_get_all (#800).

    • CXXCBC-726: Added KV scan timeout to cluster options (#830).

    • CXXCBC-721: Added caching of FeatureNotAvailable transactions operation failure for get_replica* operations (#823).

    • CXXCBC-696: Use the external exception field to determine transaction operation error code in Public API (#770).

    • CXXCBC-695: Always return unwrapped doc_exists from transactions insert (#771).

    • CXXCBC-700: Updated wan_development profile for public API (#774).

    • CXXCBC-704: Added handling document_unretrievable from get_multi individual fetch (#782, #785).

    • CXXCBC-709: Fixed exists() in transactions get_multi result (#786).

    • CXXCBC-651: Added preserving cached node labels after generating report in app telemetry meter (#802).

    • CXXCBC-706: Added closing of half-baked cluster object if connection fails (#783).

    Build and Test Infrastructure

    • CXXCBC-733: Fixed build with BoringSSL (#839).

    • Improved stability of update collection max expiry tests (#838).

    • CXXCBC-731: Fixed usage of the wan_development profile in tests when required (#835).

    • CXXCBC-728: Removed handling for eventing handler headers bug (#832).

    • CXXCBC-724: Added eventing tests to handle Morpheus error behavior (#828, #824).

    • CXXCBC-639: Build system adjustments (#825).

    • Added labels to all tests (#820).

    • Added test improvements (memcached buckets & cleanup search index) (#819).

    • Added logging of local TCP ports (#814).

    • Updated llhttp to 9.3.0 and cli11 to 2.5.0 (#811).

    • Updated asio to 1.34.2 (#776).

    • Updated CPM.cmake to 0.42.0 (#794).

    • CXXCBC-712: Fixed build with CPM (#795).

    • Fixed building tests with system OpenSSL on MacOS (#798).

    • CXXCBC-693: Fixed clang-tidy else-after-return error (#803).

    • Fixed gcc maybe-uninitialized warning with std::nullopt (#816).

    • Github Actions:

      • Updated trigger rules (#779), including release branches;

      • Removed windows-2019 runner & added windows-2025 (#790);

      • Updated linters workflow (#808).

    C++ SDK 1.1 Releases

    Version 1.1.1 (18 September 2025)

    This is a second GA release of the 1.1 C++ SDK. It contains features and fixes backported from 1.2.0.

    Downloads

    Platform

    Architecture

    File

    Checksums

    Any

    couchbase-cxx-client-1.1.1.sha256.txt

    Source Archive

    Any

    couchbase-cxx-client-1.1.1.tar.gz

    Amazon Linux 2023

    x86_64

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

    Amazon Linux 2023

    aarch64

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

    Enterprise Linux 9

    x86_64

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

    Enterprise Linux 9

    aarch64

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

    Enterprise Linux 8

    x86_64

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

    Enterprise Linux 8

    aarch64

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

    Debian 12 (Bookworm)

    x86_64

    couchbase-cxx-client-1.1.1-1.bookworm.x86_64.tar

    Debian 12 (Bookworm)

    aarch64

    couchbase-cxx-client-1.1.1-1.bookworm.aarch64.tar

    Ubuntu 22.04 (Jammy)

    x86_64

    couchbase-cxx-client-1.1.1-1.jammy.x86_64.tar

    Ubuntu 22.04 (Jammy)

    aarch64

    couchbase-cxx-client-1.1.1-1.jammy.aarch64.tar

    Ubuntu 24.04 (Noble)

    x86_64

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

    Ubuntu 24.04 (Noble)

    aarch64

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

    Alpine Linux 3.19

    x86_64

    couchbase-cxx-client-1.1.1-r1-x86_64-alpine-3.19.tar

    Alpine Linux 3.19

    aarch64

    couchbase-cxx-client-1.1.1-r1-aarch64-alpine-3.19.tar

    Alpine Linux 3.20

    x86_64

    couchbase-cxx-client-1.1.1-r1-x86_64-alpine-3.20.tar

    Alpine Linux 3.20

    aarch64

    couchbase-cxx-client-1.1.1-r1-aarch64-alpine-3.20.tar

    Alpine Linux 3.21

    x86_64

    couchbase-cxx-client-1.1.1-r1-x86_64-alpine-3.21.tar

    Alpine Linux 3.21

    aarch64

    couchbase-cxx-client-1.1.1-r1-aarch64-alpine-3.21.tar

    Alpine Linux 3.22

    x86_64

    couchbase-cxx-client-1.1.1-r1-x86_64-alpine-3.22.tar

    Alpine Linux 3.22

    aarch64

    couchbase-cxx-client-1.1.1-r1-aarch64-alpine-3.22.tar

    New Features

    • CXXCBC-699: By default the SDK will now shuffle the node list (including lists received via DNS-SRV request). To disable this behavior use the preserve_bootstrap_nodes_order option (#778).

    Fixes and Enhancements

    • CXXCBC-715: An HTTP workload could potentially use an invalid node index to access a node in the config in scenarios to where a node in the cluster has been failed over. This potential intermittent crash during hard failover has now been fixed (#817).

    • CXXCBC-651: Cached node labels are now preserved after generating reports in app telemetry meter (#804).

    • CXXCBC-693: Fixed clang-tidy else-after-return error (#805). Now correctly handle empty/null indexDefs for search_index_get_all (801). The client will no longer return an error if/when indexDefs are empty/null — instead returning an empty list of index definitions.

    • CXXCBC-709: Fixed a bug in the getter that was always returning false for exists() in transactions get_multi result (#787).

    • CXXCBC-696: The client now uses the external exception field to determine transaction operation error code in the Public API (#772).

    • CXXCBC-712: Fixed build issue with CPM (#797)

    Version 1.1.0 (01 June 2025)

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

    New Features

    • CXXCBC-672: Added add_named_parameter and add_positional_parameter to query/analytics options (#762).

    • CXXCBC-684: The SDK now allows the setting of both named and positional parameters for queries — previously named parameters would be cleared if positional parameters were set (#759).

    • CXXCBC-654: Added num_vbuckets to bucket_settings (#746).

    • CXXCBC-605: Added custom log callback functionality (#743).

    • CXXCBC-665: The SDK will now always return partial results for *_all_replica operations if some get_replica requests succeeded (#742).

    • CXXCBC-626: Application Service Telemetry, for future Server releases (#712, #719, #739, #750).

    Fixes and Enhancements

    • CXXCBC-694: Handle case where requestID is missing from query response payload (#768).

    • Added CAS to core append/prepend (#737).

    • CXXCBC-657: For subdoc operations, if no specs are provided then an invalid_argument error is raised instead of crashing on an assert (#727).

    • CXXCBC-661: Reconnect cluster object on fork (#724).

    • CXXCBC-660: Fixed potential race condition in the logger (#722).

    • CXXCBC-646: For performance reasons, the bucket configuration is now stored as shared pointer, and this is copied into the handler instead of the entire configuration (#715, #720).

    Transactions

    • CXXCBC-688: Don’t convert Public API TOF from lambda to Core API’s TOF, rely on internal state (#765).

    • CXXCBC-690: Don’t move staged_mutation item when capturing it in commit_doc lambdas (#767).

    • CXXCBC-683: Transactions replace now uses CAS from given TransactionsGetResult when the document is a staged insert (#763).

    • CXXCBC-682: Transaction replace/insert result now includes post-op content (#756).

    • CXXCBC-645, CXXCBC-689, CXXCBC-687: Implemented get_multi_* APIs for transactions (#761, #764, #766).

    • CXXCBC-681: No longer storing entire transaction_get_result in staged mutations, reducing memory use (#757).

    • CXXCBC-649: Implemented ExtReplaceBodyWithXattr (#752).

    Build and Tests Fixes

    • CXXCBC-671: Updated snappy to support CMake 4.0 (#744).

    • CXXCBC-666: Fixed pkg-config file — couchbase_cxx_client.pc have to use absolute path for libdir. (#735).

    • CXXCBC-673: Updated query integration tests to compare decoded rows (#747).

    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.7 (24 April 2025)

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

    Fixes

    • CXXCBC-666: Fixed pkg-config file to return absolute path for libdir (#736).

    • CXXCBC-667: Core implementation of prepend/append no longer ignores encoded CAS value (#738).

    • CXXCBC-671: Updated snappy to support CMake 4.0 (#745).

    Version 1.0.6 (12 March 2025)

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

    Fixes

    • CXXCBC-633: In a case of timeout, when the total deadline of the DNS-SRV request has been reached, the library will now report a timeout error code, and not the latest abort as it was doing.

    • CXXCBC-646: For performance reasons, the SDK now stores bucket configuration as a shared pointer (#713, #721).

    • CXXCBC-660: Fixed potential race condition in the logger (#723).

    • CXXCBC-661: The child process now reconnects all of its instances on fork — previously, certain exceptions could cause this not to happen (#725).

    Version 1.0.5 (24 January 2025)

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

    Fixes

    • CXXCBC-633: In a case of timeout, when the total deadline of the DNS-SRV request has been reached, the library will now report a timeout error code, and not the latest abort as it was doing.

    • Server group replica reads are now exposed in transaction_context (#704).

    Build and Test Infrastructure

    • Minor improvements (#706).

    • CXXCBC-640: Debug symbols are no longer forced for release builds (#708).

    • CXXCBC-638: Switched SDK to use bundled fmtlib for spdlog (#705).

    • Updated spdlog to 1.15.0 (#709).

    Version 1.0.4 (22 November 2024)

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

    Fixes

    • CXXCBC-620: Updated core analytics_link_get_all to follow the RFC (#687).

    • CXXCBC-615: Exposed insert_raw and replace_raw in core transactions attempt context (#686).

    • CXXCBC-622: Updated OpenTelemetry metrics integration to use GA Metrics API (#688).

    • CXXCBC-627: A preformance degradation was discovered to be caused by work done in the error function, even if the operation had been successful. The internal conversion work is now only carried out in response to error conditions (#693).

    • CXXCBC-624: Fixed user agent ID generation (#692).

    • CXXCBC-611, CXXCBC-612: Updated metric operation names to follow RFC naming (#695).

    • CXXCBC-632: A crash on testing against Analytics nodes under rebalance was caused by the assumption that Analytics would always send meta fields in its response. This has now been fixed, and the behoavior should not recur (#699).

    • URI encoding for user_upsert (#700).

    Features

    Build and Test Infrastructure

    • Updates for YUM/RPM builders (#691).

    • Debian/Ubuntu packaging scripts added (#694).

    • Fixed packaging scripts on MacOS (#698).

    • Added scripts to produce APK files for Alpine Linux (#685).

    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.