SDK Release Notes
Release notes, brief installation instructions, and download archive for the Couchbase C++ Client.
Version 1.4 of the C++ SDK implements the 3.9 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.4.0
VERSION
1.4.0
GITHUB_REPOSITORY
"couchbase/couchbase-cxx-client"
OPTIONS
"COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL ON")
C++ SDK 1.4 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.4.0 (13 August 2026)
This is the first GA release of the 1.4 C++ SDK.
|
Not binary compatible with 1.3.x
|
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.24 |
x86_64 |
|
Alpine Linux 3.24 |
aarch64 |
|
Alpine Linux 3.23 |
x86_64 |
|
Alpine Linux 3.23 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
New Features
-
CXXCBC-886: Cloud Native Gateway Support (
couchbase2://) — A connection string with thecouchbase2://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 withoutCOUCHBASE_CXX_CLIENT_BUILD_COUCHBASE2reportserrc::common::feature_not_availablefromcluster::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 in1.4.0. -
CXXCBC-102, CXXCBC-485, CXXCBC-910: Streaming Query and Analytics Results — Added
cluster::query_stream()andcluster::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 throughnext()(callback andstd::futureoverloads), 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 throughcluster_options.query_rowandanalytics_rowdecode individual rows,signature()is available before the stream is drained,meta_data()resolves once it is, andcancel()abandons a partially consumed stream. Streaming failures carry an error context and a newerrc::streaming_json_lexercategory. Prepared statements (adhocset to false) fall back to the buffered path and replay their rows through the same handle. The API is volatile in1.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-assignednodeUUIDon 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()anderror::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, andcollection::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 usingcollection::node_ids(). -
CXXCBC-845: wait_until_ready on the Public API —
cluster::wait_until_ready()andbucket::wait_until_ready()actively ping the cluster services until they respond or the timeout elapses, in callback andstd::futureflavours. Readiness is configured throughwait_until_ready_options(desired_state,service_types):cluster_state::onlinerequires every reachable endpoint of every requested service to be responsive,cluster_state::degradedrequires 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
mmapat 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::regexUsage in Error Handling — Errors built from server response text now usestd::string::find()and a newutils::contains_string()helper with optional ASCII-only case folding. The remainingstd::regexobjects arestatic 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_timeoutis honored for durable mutations, andpinganddiagnosticsreporterrc::common::feature_not_availablerather 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_peerpreviously 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_sessionhandler dispatch on a re-entrantstop(), acluster/bucketshared_ptrcycle leaked by parked deferred operations, anmcbp_commandleak on replica reads atio_contextteardown, 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 astd::futurecaller withbroken_promiseor hung; enqueues into a closed bucket are now rejected and parked operations are completed withcluster_closed. Observability members are stopped in place rather than moved out ofclose(), so a null dereference no longer followsnotify_fork(fork_event::child). The*_any_replicafan-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
getrequesting more than 16 paths no longer fails when one of the paths is missing,lookup_in_all_replicascaptures subdocument paths correctly and reports total failure properly,lookup_infirst-error tracking and thesubdoc_invalid_xattr_ordererror mapping were corrected, a codec branch no longer rejects valid packets because a collection-id check was a standaloneifrather than anelse if, and anunknown_collectionresponse now re-resolves the collection id on thequeue_requestpath. -
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_createandbucket_updateno 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-transcodercontent_as<Document>()overload; passing a transcoder explicitly still enforces its flag handling.get_multiread-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 incorrectstd::moveon aconst Document¶meter 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-boundsdiagnostic inclient_request::generate_payload.
Deprecations
-
CXXCBC-925: Columnar Build Mode —
COUCHBASE_CXX_CLIENT_COLUMNARgates a prototype build mode scheduled for removal in1.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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.23 |
x86_64 |
|
Alpine Linux 3.23 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
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-assignednodeUUID; 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 (astd::hashspecialization is provided), so it can be used directly as a key in application-side maps. -
CXXCBC-821: Node Attribution for KV Operations —
node_idis now propagated through the entire key-value operation path.couchbase::resultgains anode_id()accessor andcouchbase::errorgains anode_id()accessor, so callers can attribute every result and error to the serving cluster node. Replica reads expose a per-entrynode_idon the results ofget_all_replicas()andlookup_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 astd::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 samenode_idthe SDK reports on KV results and errors, so the result is directly comparable to the keys of an application’sunordered_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_idAPI and modelled on NetflixHystrixandResilience4j. It demonstrates a per-node registry keyed oncouchbase::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 usingcollection::node_ids().
Improvements
-
CXXCBC-828: Reduced std::regex Usage in Error Handling — Replaced inline
std::regexconstruction withstd::string::find()when building errors from server response text in collection and scope management operations. Where case-insensitive matching is still required, thestd::regexobjects are nowstatic constso 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 nostd::localedependency, and replaced the remainingstd::regex_searchcalls with it.
Bug Fixes
-
CXXCBC-785: Projected Get with > 16 Paths — A projected
getrequesting 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’son_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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.23 |
x86_64 |
|
Alpine Linux 3.23 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
Fixes and Enhancements
-
CXXCBC-774: Fixed incorrect use of
std::moveonconst Document&— Changedupsert(),insert(), andreplace()signatures to takeDocumentby value. This correctly supports move semantics for rvalues while maintaining backward compatibility for lvalues. -
CXXCBC-775: Integrated the
system_metricslibrary and added a newcbc sysinfocommand to thecbctool. 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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.23 |
x86_64 |
|
Alpine Linux 3.23 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
New Features
-
CXXCBC-691: OpenTelemetry Support — Added initial
OpenTelemetrysupport 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=ONat 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_connectionsoption 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
--replicaflag tocbc-gettool to fetch documents from replica nodes. -
CXXCBC-754: cbc-config Tool — Added new
cbc-configtool to dump cluster configuration tostdoutfor 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_founderrors during bootstrap would trigger unnecessary DNS-SRV record refresh loops. -
CXXCBC-767: Implemented
AuthStalehandling 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_authenticatornot 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_authenticatoris marked as@uncommittedand 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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.23 |
x86_64 |
|
Alpine Linux 3.23 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
Fixes and Enhancements
-
CXXCBC-768: Prevent DNS-SRV refresh loop on
bucket_not_foundbootstrap 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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.23 |
x86_64 |
|
Alpine Linux 3.23 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 10 |
x86_64 |
|
Enterprise Linux 10 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 13 (Trixie) |
x86_64 |
|
Debian 13 (Trixie) |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
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-removeandcbc-upserttools (#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_indextotransaction_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_orderoption. -
CXXCBC-711: Promoted
scope_search_index_managerto 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
FeatureNotAvailabletransactions operation failure forget_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_existsfrom transactions insert (#771). -
CXXCBC-700: Updated
wan_developmentprofile for public API (#774). -
CXXCBC-704: Added handling
document_unretrievablefromget_multiindividual fetch (#782, #785). -
CXXCBC-709: Fixed
exists()in transactionsget_multiresult (#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_developmentprofile 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-returnerror (#803). -
Fixed gcc
maybe-uninitializedwarning withstd::nullopt(#816). -
Github Actions:
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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
|
Alpine Linux 3.21 |
x86_64 |
|
Alpine Linux 3.21 |
aarch64 |
|
Alpine Linux 3.22 |
x86_64 |
|
Alpine Linux 3.22 |
aarch64 |
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_orderoption (#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
indexDefsforsearch_index_get_all(801). The client will no longer return an error if/whenindexDefsare empty/null — instead returning an empty list of index definitions. -
CXXCBC-709: Fixed a bug in the getter that was always returning
falseforexists()in transactionsget_multiresult (#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.
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
New Features
-
CXXCBC-672: Added
add_named_parameterandadd_positional_parameterto 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_vbucketstobucket_settings(#746). -
CXXCBC-605: Added custom log callback functionality (#743).
-
CXXCBC-665: The SDK will now always return partial results for
*_all_replicaoperations if someget_replicarequests 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_argumenterror 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_mutationitem when capturing it incommit_doclambdas (#767). -
CXXCBC-683: Transactions replace now uses CAS from given
TransactionsGetResultwhen 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_resultin staged mutations, reducing memory use (#757). -
CXXCBC-649: Implemented
ExtReplaceBodyWithXattr(#752).
Build and Tests Fixes
-
CXXCBC-671: Updated
snappyto supportCMake4.0(#744). -
CXXCBC-666: Fixed
pkg-configfile —couchbase_cxx_client.pchave to use absolute path forlibdir. (#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.
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
Fixes
-
CXXCBC-666: Fixed
pkg-configfile 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
CMake4.0(#745).
Version 1.0.6 (12 March 2025)
This is a maintenance release of the 1.0 C++ SDK.
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
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.
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
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
fmtlibforspdlog(#705). -
Updated
spdlogto1.15.0(#709).
Version 1.0.4 (22 November 2024)
This is a maintenance release of the 1.0 C++ SDK.
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
|
Debian 12 (Bookworm) |
x86_64 |
|
Debian 12 (Bookworm) |
aarch64 |
|
Ubuntu 22.04 (Jammy) |
x86_64 |
|
Ubuntu 22.04 (Jammy) |
aarch64 |
|
Ubuntu 24.04 (Noble) |
x86_64 |
|
Ubuntu 24.04 (Noble) |
aarch64 |
|
Alpine Linux 3.19 |
x86_64 |
|
Alpine Linux 3.19 |
aarch64 |
|
Alpine Linux 3.20 |
x86_64 |
|
Alpine Linux 3.20 |
aarch64 |
Fixes
-
CXXCBC-620: Updated core
analytics_link_get_allto follow the RFC (#687). -
CXXCBC-615: Exposed
insert_rawandreplace_rawin core transactions attempt context (#686). -
CXXCBC-622: Updated
OpenTelemetrymetrics 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
-
CXXCBC-609: Exposed
parent_spanin Public API options (#690).
Version 1.0.3 (22 October 2024)
This is a maintenance release of the 1.0 C++ SDK.
Downloads
Platform |
Architecture |
File |
Checksums |
Any |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
Fixes
-
CXXCBC-599: Updated allowed connection string options (#668).
-
CXXCBC-311: SDKs must encode URIs (#674).
-
CXXCBC-606: Fixed detection of dysfunctional node (#673).
-
CXXCBC-574: Fixed memory leak when open fails in public API (#649).
-
CXXCBC-614: Fixed memory leak in
observe_poll(#679). -
Added missing template parameters to fix compiler warnings (#671).
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_jsonoutput 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 |
|
Source Archive |
Any |
|
Amazon Linux 2023 |
x86_64 |
|
Amazon Linux 2023 |
aarch64 |
|
Enterprise Linux 9 |
x86_64 |
|
Enterprise Linux 9 |
aarch64 |
|
Enterprise Linux 8 |
x86_64 |
|
Enterprise Linux 8 |
aarch64 |
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 tonetwork_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.hxxby default (#656). -
Include
<string>instring_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_backgroundwhen creating test cluster in Columnar mode (#625). -
CXXCBC-542: Richer error information from Columnar core (#626).
-
Updated columnar log message, enabling
dispatch_timeoutif in connection string (#627). -
Add helper method for serializing
ctxinto 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::jsonwhere 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_ptrfortransactions_contextandattempt_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_availablewhen 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_canceledon IO error in HTTP session (#568). -
CXXCBC-511: Prevent use of HTTP session if idle timer has expired (#565).
-
CXXCBC-523: Clean up
dump_configurationconfig output (#577). -
CXXCBC-531: Fix deadlock in cluster destructor (public API) (#608).
-
CXXCBC-534: Fix callbacks to avoid
bad_function_callexception (#606). -
CXXCBC-518: Handle alternate addresses when locating
preferred_node(#574).
Older Versions
Release Notes for the developer preview releases before the 1.0.0 release can be found on GitHub.