Google Cloud C++ Versions Save

C++ Client Libraries for Google Cloud Services

v2.23.0

1 month ago

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

  • fix(bigtable): respect GOOGLE_CLOUD_CPP_OPENTELEMETRY_TRACING (#13748)

Pub/Sub

  • docs(pubsub): add kinesis sample (#13593)

Spanner

  • feat(spanner): add ExcludeTransactionFromChangeStreamsOption (#13898)
  • feat(spanner): add spanner::Value support for TypeCode::FLOAT32 (#13862)
  • feat(spanner): add samples for proto columns (#13759)
  • feat(spanner): add integration tests for proto columns (#13756)
  • feat(spanner): add spanner::Value support for ProtoEnum/ProtoMessage (#13747)
  • feat(spanner): add representations for the Spanner PROTO/ENUM types (#13743)
  • feat(spanner): add sample for instance-admin managed autoscaler (#13740)

Speech

  • fix(speech): enable location specific connections (#13757)

Storage

  • fix(storage): preserve full Status in default creds (#13897)
  • fix(storage): respect GOOGLE_CLOUD_CPP_OPENTELEMETRY_TRACING (#13766)
  • feat(storage): support HNS-enabled buckets (#13753)
  • feat(storage): support soft delete timestamps (#13728)

Common Libraries

  • feat(common): introduce FieldMaskOption (#13936)
  • docs(common): link to system parameters page (#13937)
  • feat(common): QuotaUserOption for gRPC-based libs (#13933)
  • fix(common): clang-cl needs a const_cast<> (#13891)
  • fix(compute): shorten paths for Bazel+MSVC (#13836)
  • feat(common): support injecting custom headers (#13829)

v2.22.0

2 months ago

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

  • feat: promote EnableServerRetriesOption (#13698)
  • feat(bigtable): install mocks library (#13551)

Pub/Sub

  • docs(pubsub): add doxygen comment to deprecate handwritten apis (#13585)

Spanner

  • feat(spanner): add support for max commit delay (#13562)
  • feat: install mocks for spanner, sql, pubsublite (#13548)

Storage

  • docs(GCS+gRPC): add contact info (#13688)
  • feat(storage): support listing folders as prefixes (#13683)
  • feat(storage): support soft-deleted objects (#13644)
  • feat(storage): support Bucket soft-delete metadata (#13623)

Common Libraries

  • feat: cmake option to skip building mock libraries (#13673)
  • feat(generator): support request_id-like fields (#13615)
  • docs(common): advertise OAuth2 library (#13614)

v2.21.0

3 months ago

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

  • feat(bigtable): support bigtable routing cookies (#13502)
  • feat(bigtable): logging for bulk apply throttling (#13488)

Pub/Sub

  • fix(pubsub): install admin mocks (#13537)
  • feat(pubsub): add lease management for unary pull (#13428)

Storage

  • feat(storage): support UniverseDomainOption (#13471)
  • docs(GCS+gRPC): better comments for AsyncConnection (#13424)

Common Libraries

  • feat: support UniverseDomainOption in gRPC IAM stub (#13466)
  • feat: simplify Bazel initialization (#13411)

v2.20.0

4 months ago

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

  • feat(aiplatform): add new service proto file (#13325)

Bigtable

  • fix(bigtable): use FQDN (#13305)

OpenTelemetry

  • feat(otel): capture gRPC response metadata in traces (#13278)

Pub/Sub

  • fix(pubsub): get future value before returning (#13241)
  • fix(pubsub): pass by reference explicitly (#13220)

Common Libraries

  • fix(common): returnable argument to .then() (#13316)
  • feat(common): read-write streaming RPCs metadata (#13228)
  • fix: respect logging format env var in compute, sql (#13368)

v2.19.0

5 months ago

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

  • feat(bigtable): throttling for AsyncBulkApply (#13203)
  • fix(bigtable): async context propagation for tracing (#13156)
  • feat(bigtable): support BulkApply throttling (#13124)

OpenTelemetry

  • feat(otel): add Makefile (#13177)
  • fix(otel): detach context when single-threaded (#13154)
  • fix(otel): reconnect async traces (e.g. LROs) (#13147)

Spanner

  • feat: add PG.OID type (#13127)
  • feat(spanner): control replicas/regions used in non-transactional reads (#13031)

Vertex AI

  • feat(aiplatform): generate new services (#13150)

Common Libraries

  • fix(common): use FQDN for the metadata service (#13139)
  • feat(common): add GrpcCompressionAlgorithmOption (#13108)
  • doc: fix cliffhanger (#13033)

v2.18.0

6 months ago

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

  • fix(compute): RegionSecurityPoliciesClient::PatchSecurityPolicy added update_mask field.

Memorystore for Redis

New CloudRedisClusterClient.

OpenTelemetry

  • doc(otel): add packaging instructions (#13005)
  • fix(otel): end async client spans properly (#12919)
  • fix(otel): support abseil <= 20210324 (#12993)

Spanner

  • feat(spanner): single-RPC, batched commit of mutation groups (#12930)

Common Libraries

  • feat(common): mock for AsyncStreamingReadWriteRpc (#12950)
  • fix(common): missed using CARootsFilePathOption (#12997)
  • fix(generator): do not override default sleeper in streaming-read RPCs (#12920)

Other Changes

  • fix(oauth2): only enable via GOOGLE_CLOUD_CPP_ENABLE (#12911)

When compiling with CMake, the oauth2 used to be automatically enabled if GOOGLE_CLOUD_CPP_REST was manually enabled or enabled by a separate library. That made it impossible to shard a build with separate builds for oauth2, storage and compute.

v2.17.0

7 months ago

Compute Engine

  • fix(compute): build with Bazel and MSVC (#12877)
  • fix(compute): usable in external Bazel projects (#12864)
  • fix(compute): add missing bazelrc file (#12856)

Storage

  • feat(storage): another Bucket CRUD field (#12842)
  • fix(storage): fix tellg() values (#12844)
  • fix(storage): check ReadObject options at runtime (#12841)
  • feat(storage): MatchGlob for ListObjects() (#12840)
  • doc(storage): describe default project search (#12833)

Common Libraries

  • fix(oauth2): do not require id_token in creds (#12867)

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

7 months ago

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

  • feat(oauth2): add quickstart, README, etc. (#12754)

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

  • fix(storage): trace auth when default credentials are assumed (#12672)
  • docs(storage): more on InsertObject vs. WriteObject (#12577)

Common Libraries

  • feat(common): new *Option to configure HTTP proxy (#12766)
  • fix: export headers with top-level Bazel targets (#12762)
  • fix: gRPC auth logging enabled by "auth" (#12702)
  • fix: add implicit routing in GAPICs (#12544)

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.1

8 months ago

Policy Troubleshooter

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

Full Changelog: https://github.com/googleapis/google-cloud-cpp/compare/v2.15.0...v2.15.1

v2.15.0

8 months ago

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][cloud-iot-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

  • fix(pubsub): url encode routing params on publish (#12454)
  • feat(pubsub): increase backoff from 1.3 to 4.0 (#12306)

Spanner

  • feat(spanner): enable leader aware routing by default (#12319)

Storage

  • fix(storage): tracing should decorate retries (#12314)

Common Libraries

  • fix: URL encode explicit routing values (#12493) (#12447)
  • feat(common): add Options::set<>() && overload (#12424)
  • fix(common): gRPC alarms require more locking (#12406)
  • feat(common): retry loops preserve original message (#12368)
  • feat(otel): control tracing with environment variable (#11897)
  • docs(otel): troubleshoot exporter doc (#12345)
  • docs(otel): build quickstart with vcpkg (#12324)
  • feat(common): retry loops signal via error info (#12313)
  • fix(common): handle expired policies in *RetryLoop (#12301)

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:

  • bigquery
  • bigtable
  • dialogflow_es
  • iam
  • logging
  • pubsub
  • speech
  • storage
  • texttospeech
  • trace

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.