SDK Release Notes
Release notes, brief installation instructions, and download archive for the Couchbase C++ Client.
Version 1.0 of the C++ SDK implements the 3.6 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.
Installation
Prerequisites
Check that you have the dependencies installed:
-
C++ 17 compiler
-
CMake version 3.19 or newer
Supprted Operating Systems are listed on the compatibility page.
More details of the installation process are in the full installation guide.
CPM.cmake is the recommended way to include the library in your project.
You need to include the following command in your CMakeLists.txt
.
CPMAddPackage(
NAME
couchbase_cxx_client
GIT_TAG
1.0.4
VERSION
1.0.4
GITHUB_REPOSITORY
"couchbase/couchbase-cxx-client"
OPTIONS
"COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL ON")
C++ SDK 1.0 Releases
We always recommend using the latest version of the SDK — it contains all of the latest security patches and support for new and upcoming features. All patch releases for each dot minor release should be API compatible, and safe to upgrade; any changes to expected behavior are noted in the release notes that follow.
Version 1.0.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 20.04 (Jammy) |
x86_64 |
|
Ubuntu 20.04 (Jammy) |
aarch64 |
|
Ubuntu 22.04 (Noble) |
x86_64 |
|
Ubuntu 22.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_all
to follow the RFC (#687). -
CXXCBC-615: Exposed
insert_raw
andreplace_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
-
CXXCBC-609: Exposed
parent_span
in 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_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 |
|
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.hxx
by 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_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
fortransactions_context
andattempt_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).
Older Versions
Release Notes for the developer preview releases before the 1.0.0 release can be found on GitHub.