google-cloud-cpp

Changelog

NOTE: Future Breaking Changes lists anticipated breaking changes in the upcoming 3.x release. This release is scheduled for 2024-12 or 2025-01.

v2.32.0 - TBD

v2.31.0 - 2024-11

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Pub/Sub

Storage

Common Libraries

Google APIs interface definitions

v2.30.0 - 2024-10

Updated Libraries

AI Platform API

KMS

OpenTelemetry

Pub/Sub

Spanner

Storage

Common Libraries

Google APIs interface definitions

v2.29.0 - 2024-09

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Compute

Spanner

Common Libraries

Google APIs interface definitions

v2.28.0 - 2024-08

OpenTelemetry

Storage

Common Libraries

v2.27.0 - 2024-08

BREAKING TESTING CHANGES

If you don’t mock Long Running Operations (LRO) in your tests, then these changes will not affect you.

With the promotion from Experimental to GA of the new methods to support starting Long Running Operations (LRO) synchronously and awaiting their completion separately, the use of ExperimentalTag is no longer required. The overload set for LRO methods has changed and may require matchers to disambiguate invocations of EXPECT_CALL (https://google.github.io/googletest/gmock_cook_book.html#SelectOverload).

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

The following experimental libraries are now available:

OpenTelemetry

Bazel

The --io_opentelemetry_cpp//api:with_abseil flag was marked as deprecated in OpenTelemetry v1.16.0. It may be removed in future versions.

In previous versions of opentelemetry-cpp, this flag was required for compatibility with Abseil. It is no longer necessary, as opentelemetry-cpp is compiled with Abseil by default.

We have stopped using the flag to validate Bazel build configurations with OpenTelemetry tracing enabled.

If you are building google-cloud-cpp with opentelemetry-cpp < v1.16.0, you will need to supply the flag for compatibility with Abseil. The following can be added to your .bazelrc file.

build --@io_opentelemetry_cpp//api:with_abseil

Spanner

Storage

Common Libraries

v2.26.0 - 2024-07

BREAKING TESTING CHANGES

If you don’t mock Long Running Operations (LRO) in your tests, then these changes will not affect you.

With the addition of new methods to support starting Long Running Operations (LRO) synchronously and awaiting their completion separately, the overload set for the preexisting LRO methods have been expanded. Uses of EXPECT_CALL that do not have matchers for the arguments will be ambiguous. To quickly remedy this change instances of EXPECT_CALL(*mock, Method) to EXPECT_CALL(*mock, Method(::testing::_)).

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Updated Libraries

Bigtable

Pub/Sub

Spanner

Storage

StorageControl

Common Libraries

Google APIs interface definitions

v2.25.0 - 2024-06

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Updated Libraries

Pub/Sub

Spanner

Security Center

Storage

Common Libraries

Google APIs interface definitions

v2.24.0 - 2024-05

No longer testing with MSVC 2019

We have stopped testing with MSVC 2019. Microsoft stopped mainstream support for MSVC 2019 in 2024-04. We continue to test with MSVC 2022. We recommend that you update to this version. Note that, in accordance with Google’s Foundational C++ support policy, other Google libraries have stopped (or shortly will stop) testing with MSVC 2019 too.

Updated Libraries

Datastore

Pub/Sub

Spanner

Storage

Storage Control

Google APIs interface definitions

v2.23.0 - 2024-04

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Updated Libraries

Bigtable

Pub/Sub

Spanner

Speech

Storage

Common Libraries

v2.22.0 - 2024-03

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Pub/Sub

Spanner

Storage

Common Libraries

v2.21.0 - 2024-02

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Pub/Sub

Storage

Common Libraries

v2.20.0 - 2024-01

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

AI Platform/Vertex AI

Bigtable

OpenTelemetry

Pub/Sub

Common Libraries

v2.19.0 - 2023-12

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

OpenTelemetry

Spanner

Vertex AI

Common Libraries

v2.18.0 - 2023-11

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Compute Engine

Memorystore for Redis

New CloudRedisClusterClient.

OpenTelemetry

Spanner

Common Libraries

Other Changes

v2.17.0 - 2023-10

Compute Engine

Storage

Common Libraries

Other Changes

We have stopped testing with GCC 7.5.0 on openSUSE/Leap: this distro uses GCC 7.5.0 by default. This specific version of GCC crashes when compiling some of the files generated by Protobuf 24.x. In other distros we test with GCC 7.3, without problems. And we also test with newer versions of GCC without problems. The exact files that cause the compiler to crash seem to change with minor changes in Protobuf or the input .proto files, making it difficult to maintain some kind of exclusion list.

We have stopped testing with GCC 7.5.0 on openSUSE/Leap, and recommend you use GCC >= 8 to compile google-cloud-cpp. If you must compile with GCC 7.5.0, consider only enabling the libraries you will need.

v2.16.0 - 2023-10

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Discovery Engine

New *Client for conversational search.

OAuth2

OpenTelemetry

We instrumented the Google Cloud C++ libraries for distributed tracing using OpenTelemetry. All client libraries are instrumented in some capacity.

Features to enable the collection and export of these traces are now GA. See the quickstart within the library to learn more about these tools.

Policy Troubleshooter

Remove PoliciesClient. This client was placed in the wrong library. The correct location is google/cloud/iam/v2.

Storage

Common Libraries

Known issues

Compiling gRPC with Bazel and Clang >= 16 requires --features=-layering_check in your Bazel command-line. For more details, see grpc#34482.

v2.15.0 - 2023-09

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Cloud IoT

The Cloud IoT Core service has been shutdown. We removed the corresponding C++ client library as it is no longer usable.

BeyondCorp API

Parts of the BeyondCorp API are restricted to only existing customers and will be decommissioned. No C++ customers are affected, so we are removing the unusable components from the C++ libraries. More information in the BeyondCorp announcement.

Natural Language AI

We expanded the library to include the v2 version of the API.

Notebooks

We expanded the library to include the v2 version of the API.

Pub/Sub

Spanner

Storage

Common Libraries

Other Changes

Bazel Testing: from v2.15.0 we will only test with Bazel >= 6.0.0. We do not consider this a breaking change, as Bazel 5.x has been in maintenance mode for more than 6 months.

CMake Proto Libraries: We only compile service-specific protos if the corresponding client library is enabled, via -DGOOGLE_CLOUD_CPP_ENABLE=....

This change reduces build times for customers who use CMake but who are not using all of the client libraries listed below.

We considered it a bug that customers building with CMake were forced to compile large proto libraries that they did not need. It was certainly confusing.

Any change in behavior, including fixing bugs, can be considered “breaking”. By policy we don’t consider bug fixes to be breaking changes. We applied that policy in this case.

The impacted libraries are:

If you are dependent on any of these proto libraries and you are not compiling the corresponding client library, you will need to update your build scripts.

For example, if you depend on google_cloud_cpp_speech_protos (e.g., if you have been using this library to make calls to Cloud Speech using raw gRPC), add -DGOOGLE_CLOUD_CPP_ENABLE=...,speech,... to your CMake configure command. If you build with vcpkg, include speech in your install command.

Note that google_cloud_cpp_storage_protos are associated with the experimental-storage_grpc feature, not the storage feature.

v2.14.0 - 2023-08

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Channel Services

The library has been expanded to include the Reporting API.

Cloud Build

Cloud Functions

The library has been expanded to include the 2nd gen API.

Cloud Monitoring

The library has been expanded to include the Snooze API.

Cloud Run

The library has been expanded to include the Job Executions API.

Compute Engine OS Config

The library has been expanded to include the Zonal OS Config API.

Data Catalog

Dataproc

The library has been expanded to include the Node Groups API.

Logging

The library has been expanded to include the Log-based Metrics API and the Log Router API.

Pub/Sub

Retail

The library has been expanded to include new services.

Resource Manager

The library has been expanded to include the Tags API.

Spanner

Speech

The library has been expanded to include the Model Adaptation API.

Storage

Common Libraries

v2.13.0 - 2023-07

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Batch

Spanner

Common Libraries

v2.12.0 - 2023-06

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Cloud Debugger

The Cloud Debugger service (aka Stackdriver Debugger API) has been shutdown. The corresponding client library has been removed.

BigQuery

This library has been expanded to include the BigLake API (#11882)

Pub/Sub

Common Libraries

v2.11.0 - 2023-06

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Cloud Asset

The library has been re-enabled on Windows. See #11714 for details.

Spanner

Storage

Storage Transfer Service

The library has been re-enabled on macOS. See #8785 for details.

Common Libraries

v2.10.0 - 2023-05

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

The following experimental libraries are now available:

Bigquery

Service Control

The library has been expanded to include the v2 service.

Spanner

Storage

Common Libraries

Other Changes

Bazel Testing: after v2.10.0 we will only test with Bazel >= 5.4.0. We do not consider this a breaking change, as Bazel 4.x has been in maintenance mode for several months.

v2.9.0 - 2023-04

Cloud Build

The library has been expanded to include the Cloud Build repositories (2nd gen) API. Note that the client is tagged as experimental, because the service is still in preview.

Cloud Trace

The library has been expanded to include the v1 service.

IAM

Spanner

Storage

Common Libraries

Testing

We have stopped testing with MSVC 2017. Microsoft stopped mainstream support for MSVC 2017 in 2022-04. We continue to test with MSVC 2022 and MSVC 2019. We recommend that you update to one of these versions to use more recent versions of the google-cloud-cpp libraries. Note that, in accordance with Google’s Foundational C++ support policy, the other Google libraries have stopped (or shortly will stop) testing with MSVC 2017.

v2.8.0 - 2023-03

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Data Catalog

KMS

The library has been expanded to include the KMS Inventory API.

Pub/Sub

TPU

The library has been expanded to include the TPU v2 API.

Common Libraries

We have introduced versioned clients for many services. The version is that of the GCP service. While this naming convention is more verbose, it allows us to support clients for multiple versions of a GCP service from within the same library (e.g. speech_v1::SpeechClient and speech_v2::SpeechClient). See #10170 for more details.

v2.7.0 - 2023-02

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Pub/Sub

Common Libraries

v2.6.0 - 2023-01

BigQuery

The library has been expanded to include the following services:

IAM

The library has been expanded to include the IAM v2 API. This API includes support for IAM Deny policies.

Pub/Sub

Speech

Storage

Text-to-Speech

Trace

Common Libraries

v2.5.0 - 2022-12

NOTE

If you use any of these APIs, you must drop the ExperimentalTag in your code, accordingly.

New Libraries

We are happy to announce the following GA library. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Bigtable

Logging

Pub/Sub

Spanner

Speech

Storage

Common Libraries

v2.4.0 - 2022-11

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

In addition, these existing libraries are now GA:

BigQuery

Bigtable

IAM

Pub/Sub

Spanner

Storage

Common Libraries

v2.3.0 - 2022-10

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

BigQuery

The library has been expanded to include Analytics Hub, an API that facilitates data sharing within and across organizations. (#9882)

Spanner

Storage

Common Libraries

v2.2.0 - 2022-09

New Libraries

We are introducing new client libraries for GCP services. While we do not anticipate any API changes to these libraries before declaring them GA, we are releasing them early in case they elicit some feedback that requires changes.

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Expand to see the full list of new GA libraries...
- [Bare Metal Solution](/google-cloud-cpp/google/cloud/baremetalsolution/) - [Beyond Corp](/google-cloud-cpp/google/cloud/beyondcorp/) - [Optimization AI](/google-cloud-cpp/google/cloud/optimization/) - [Cloud Run](/google-cloud-cpp/google/cloud/run/) - [Video Services](/google-cloud-cpp/google/cloud/video/)

Bigtable

Dataproc

Spanner

Storage

Common Libraries

v2.1.0 - 2022-08

New Libraries

We are introducing new client libraries for GCP services. While we do not anticipate any API changes to these libraries before declaring them GA, we are releasing them early in case they elicit some feedback that requires changes.

Assured Workloads

Bigtable

Cloud Asset

Pub/Sub

Spanner

Stackdriver Debugger

Storage

Common Libraries

v2.0.0 - 2022-07

BREAKING CHANGES

As previously announced, google-cloud-cpp now requires C++ >= 14. This is motivated by similar changes in our dependencies, and because C++ 14 has been the default C++ version in all the compilers we support for several years.

We think this change is large enough that deserves a major version bump to signal the new requirements.

If you are already using C++ >= 14 you need to make no changes. If you are using C++11: please consider updating as soon as possible. To ease your transition to C++ >= 14 we will, if requested, backport critical fixes to v1.42.0 until 2023-07-01. After 2023-07-01 we will drop all support to v1.42.0 and earlier versions.

Debian 9 (Stretch) is EOL

Debian 9 (Stretch) reached EOL on 2022-06-30. Therefore, we have stopped testing or supporting this distribution. This was the last distribution we supported that required GCC < 7.3, and/or CMake < 3.10. Starting with this release we require CMake >= 3.10, and only test with GCC >= 7.3.

OTHER CHANGES

Bigtable

We introduced a new constructor for Table which accepts a DataConnection instead of a DataClient. The DataConnection is a new interface that more closely matches the client surface of Table. Read more about *Connection classes in our Architecture Design document.

What are the benefits of DataConnection?

The new API greatly simplifies mocking. Every Table::Foo(..) call has an associated DataConnection::Foo(...) call. This allows you to set expectations on the exact values returned by the client call. See Mocking the Cloud Bigtable C++ Client for a complete example on how to mock the behavior of Table with bigtable_mocks::MockDataConnection.

The new DataConnection API offers more consistency across our libraries. It also enables the use of some common library features, such as our UnifiedCredentialsOption. Also, any new features will be added to the DataConnection API first.

Do I need to update my code?

No. If the benefits are not appealing enough, you do not need to update your code. All code that currently uses DataClient will continue to function as before. This includes uses of testing::MockDataClient.

However, if you are using testing::MockDataClient to mock the behavior of Table in your tests:

  1. Be aware that we have announced our intention to remove classes derived from DataClient on or around 2023-05. Your tests will break then.
  2. Please consider using bigtable_mocks::MockDataConnection. It will greatly simplify your tests.

How do I update existing DataClient code?

See Migrating from DataClient to DataConnection.

Pub/Sub

Common Libraries

New Libraries

We are introducing a new client library. While we do not anticipate any API changes to this library before declaring it GA, we are releasing it early in case it elicits some feedback that requires changes.