Skip to content

Releases: googleapis/google-cloud-cpp

v1.39.0

04 Apr 21:02
29e5af8

Choose a tag to compare

BREAKING CHANGES

  • Starting with this release Linux and Windows builds based on CMake
    no longer set CMAKE_CXX_STANDARD to 11. We rely on the compiler's
    default C++ language standard. Note that all the compilers we support default
    to C++14.

    • On macOS the default is C++98, as google-cloud-cpp requires C++ >= 11, we continue
      to set CMAKE_CXX_STANDARD on that platform.
    • This only changes the default C++ version, we continue to test and support C++11.
    • For more details, see #6767.
  • The following deprecated, legacy IAM classes have been removed:
    google::cloud::IamPolicy, google::cloud::IamBinding,
    google::cloud::IamBindings. They were designed before
    IAM conditions. They did not work with IAM policies
    that include IAM conditions. See #5929 for more details.

  • cleanup!: restrict testing_util build visibility (#8584)
  • cleanup!: change bazel visibility to private for {tests,quickstarts,examples,samples,benchmarks} (#8578)

Other Changes

  • fix: treat kDeadlineExceeded as permanent error in all services (#8525)

Bigtable

BREAKING CHANGES

  • InstanceAdmin::GetIamPolicy and InstanceAdmin::SetIamPolicy have been
    retired. If you are affected by this removal, please use
    InstanceAdmin::GetNativeIamPolicy and InstanceAdmin::SetNativeIamPolicy
    instead. See #5929 for more details.

KMS

The library has been expanded to include the following services (#8530):

Pub/Sub

  • fix(pubsub): increase grpc.max_metadata_size limit (#8626)

Spanner

  • feat(spanner): add remaining PostgreSQL samples (#8627)
  • feat(spanner): add initial PostgreSQL samples (#8617)
  • feat(spanner): integration tests for Database.database_dialect (#8589)
  • feat(spanner): integration tests and sample for CopyBackup() (#8574)
  • fix(spanner): correct handling of PartialResultSet.resume_token (#8521)
  • fix(spanner): capture the ReadRequest by value in the reader factory (#8515)

Storage

BREAKING CHANGES

  • Client::GetBucketIamPolicy and Client::SetBucketIamPolicy have been
    retired. If you are affected by this removal, please use
    Client::GetNativeBucketIamPolicy and Client::SetNativeBucketIamPolicy
    instead. See #5929 for more details.
  • cleanup(common)!: remove legacy IAM classes (#8667)
  • cleanup(storage)!: remove deprecated IAM functions (#8664)
  • cleanup!: change storage bazel visibility to private by default (#8583)

Other Changes

  • doc(storage): add custom-dual regions example (#8595)
  • fix(storage): ParallelUploadFile() and WithObjectMetadata (#8629)
  • fix(storage): return an error on short writes (#8562)
  • fix(storage): use correct offset and size types (#8538)

Common Libraries

Other Changes

  • feat(common): g::c::future support for coroutines (#8532)

v1.38.0

03 Mar 19:23
643fa04

Choose a tag to compare

Service Management API

  • The DisableService() and EnableService() RPCs are now retired. These RPCs
    were deprecated and non-functional at the time this client library was
    generated. We do not expect this will actually break any existing code.
    Nevertheless, we apologize for any confusion.

Pub/Sub Lite

BREAKING CHANGES

  • We mistakenly declared GA for this library. Though the current public APIs are
    stable, the library is incomplete. We are still working on the APIs to publish
    and receive messages. We apologize for any confusion or inconvenience this
    caused.

Common Libraries

  • fix(pubsublite)!: revert GA declaration (#8497)
  • fix: no experimental- prefix for GA targets (#8496)
  • fix(container): missing CMake dependency (#8492)

v1.37.0

01 Mar 18:11
334e481

Choose a tag to compare

New GA Libraries

We are happy to announce that the following GA libraries. We expect these
libraries to have a stable API, to offer the full functionality of the
GA version of service they wrap, and to be ready for production use.

Expand to see the full list of new GA libraries...

BREAKING CHANGES

  • As previously announced, we are removing certain legacy CMake targets and
    Bazel rules in this release.
    • Bazel Users: applications should use the targets at the top-level
      directory, e.g. //:bigtable, or //:pubsub. Targets in each directory
      (e.g. //google/cloud/bigtable:bigtable_client) are now retired or marked
      private.
    • CMake Users: applications should use the
      google-cloud-cpp::* targets (e.g. google-cloud-cpp::pubsub).
      • All exported targets without a google-cloud-cpp:: prefix are retired.
        These include, but are not limited to:
        • Any target starting with googleapis-c++::
        • Any exported targets without a prefix, including:
          google_cloud_cpp_common, google_cloud_cpp_grpc_utils,
          bigtable_client, bigtable_protos, firestore_client,
          pubsub_client, storage_client, spanner_client.
        • Some target aliases, including bigtable::client, bigtable::protos
    • pkg-config users: applications should use the modules starting with
      google_cloud_cpp. All other modules are now retired.
    • Direct users of -l${library} flags: we do not recommend that
      applications uses -l flags directly, please use pkg-config and/or
      the target names under CMake or Bazel. We make this recommendation because
      we do not know of any mechanism to provide backwards compatibility for such
      flags.
    • More details about the rationale for these changes in #5726.

BigQuery

The library has been expanded to include the following services:

Bigtable

BREAKING CHANGE: The bigtable::AdminClient interface has changed
significantly. Any code that extends this class or calls its experimental public
APIs (reset(), Channel()) will be broken. For the most part, this should
only affect customers who mock this class in their tests. Code that calls
bigtable::MakeAdminClient() or bigtable::CreateDefaultAdminClient() will
continue to work as before.

This change will allow us to deliver new features more quickly by reducing the
maintenance costs of ...

Read more

v1.36.0

02 Feb 02:34
7d738e0

Choose a tag to compare

New Libraries

We are introducing client libraries for many (>50) 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.

Expand to see the full list of new libraries...

BigQuery

  • feat(generator): merge connection options into client options (#8158)
  • feat(generator): connection respects per call policies (#8013)
  • fix: add mock library aliases (#7844)

Bigtable

BREAKING CHANGE: The bigtable::InstanceAdminClient interface has changed
significantly. Any code that extends this class or calls its experimental public
APIs (reset(), Channel()) will be broken. For the most part, this should
only affect customers who mock this class in their tests. Code that calls
bigtable::MakeInstanceAdminClient() or
bigtable::CreateDefaultInstanceAdminClient() will continue to work as before.

This change will allow us to deliver new features more quickly by reducing the
maintenance costs of the library. It also provides a better mocking interface
for bigtable::InstanceAdmin. We apologize if you are inconvenienced by this
change.

Expand here to see the transition guide for this change...
If only your tests are broken, please use `bigtable_admin_mocks::MockBigtableInstanceAdminConnection` in place of `bigtable::testing::MockInstanceAdminClient`. The new mock should be more intuitive because of the differences described below:
MockBigtableInstanceAdminConnection MockInstanceAdminClient
Mocks result of entire retry loop Mocks result of one call in a retry loop
Returns familiar google::cloud:: types Returns grpc:: types

If more than your tests are broken, please use
bigtable_admin::BigtableInstanceAdminClient in favor of
bigtable::InstanceAdmin, and bigtable_admin::BigtableInstanceAdminConnection
in favor of bigtable::InstanceAdminClient. These classes will incorporate the
newest features of both the [Cloud Bigtable Admin API] and the C++ client
library. For more information on these new classes, see our
[Architecture Design] document.

Again, we apologize for making this breaking change, but we believe it is in the
best long-term interest of our customers.

OTHER CHANGES:

  • fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
  • feat(bigtable): cheap Admin creation with different resource name (#8194)
  • feat(bigtable): cheap Table creation with different resource name ([#8172](...
Read more

v1.35.0

04 Jan 20:32
0021db9

Choose a tag to compare

New GA Libraries

The following libraries are now considered stable and complete:

BigQuery

  • feat(generator): add options support to generated clients (#7683)

Bigtable

  • feat(bigtable): generate admin APIs (#7700)

IAM

  • feat(generator): add options support to generated clients (#7683)

Pub/Sub

  • fix(pubsub): Change AsyncReadWriteStreamAuth to be usable with unique_ptr (#7692)

Spanner

  • fix(spanner): switch order of ListBackupOperations() filter conjuncts (#7746)
  • feat(spanner): add per-operation options to Commit() and Rollback() (#7714)
  • feat(spanner): spanner::Client construction from Options (#7706)
  • feat(generator): add options support to generated clients (#7683)

Storage

  • feat(GCS+gRPC): implement parser for BucketMetadata components (#7766)
  • feat(GCS+gRPC): implement BucketBilling parser (#7765)
  • feat(GCS+gRPC): implement BucketAccessControl parser (#7763)
  • feat(storage): capture metadata info in downloads (#7694)
  • fix: missing dependency for WIN32 (#7718)
  • fix(storage): more strict parsing for HttpResponse (#7702)

Common Libraries

  • Backoff policies are now cloned from their initial state, instead of their
    current state. Any accumulated delay will be reset to its initial value in the
    clone. The previous behavior was a bug, and thus it has been fixed. (#7696)
  • fix: extremely rare race conditions in retry loop (#7789)
  • feat(common): include the request/response type name in the RPC log (#7782)
  • fix(common): revamp the async polling loop (#7762)
  • fix: missing dependency for WIN32 (#7718)
  • doc(common): add a note about AsyncGrpcOperation and OptionsSpan (#7682)
  • feat(common): add support for call-tree-specific options (#7669)

v1.34.1 Release

07 Dec 17:16
24faf05

Choose a tag to compare

Storage

  • fix(storage): more strict parsing for HttpResponse (#7707)

v1.34.0 Release

01 Dec 18:08
31d387e

Choose a tag to compare

BigQuery IAM

Generally we improved the quality of the generated documentation, including:

  • feat(generator): document details about *Client (#7673)
  • feat(generator): link each method input and output types (#7665)

Bigtable

  • feat(bigtableadmin): add multi-cluster routing for specific clusters (#7636)

Spanner

  • feat(generator): document details about *Client (#7673)
  • feat(generator): link each method input and output types (#7665)
  • fix(spanner): GetSingularRow accepts by value (#7589)
  • fix(spanner): avoid use-after-move bugs (#7588)
  • docs(spanner): no doxygen for admin_internal (#7552)

Storage

  • feat(storage): better debugging for session rewinds (#7662)
  • feat(storage): separate option for download timeouts (#7655)
  • feat: GCS parse "error info" from JSON when available (#7654)
  • doc(storage): describe connection pool (#7637)
  • feat(storage): storage::Client is a value type (#7634)
  • feat(storage): default payload format for CreateNotification (#7633)
  • feat(generator): more stable googleapis proto links (#7606)
  • feat(GCS+gRPC): endpoint overrides with secure credentials (#7572)
  • feat(GCS+gRPC): synthetic object metadata links (#7563)
  • fix(GCS+gRPC): correct format Object ids (#7559)

Common Libraries

  • feat: expose and log ErrorInfo if present (#7640)
  • feat(common): add tracing for the LRO polling loop (#7615)
  • feat(common): add internal-only payload support to Status (#7603)

New Libraries

We are introducing client libraries for Cloud Tasks, Secret Manager,
and Pub/Sub Lite. These libraries are still under development.

v1.33.0

01 Nov 19:42
7bcb5f7

Choose a tag to compare

⚠️ In this release we have stopped testing with Ubuntu:16.04 as this distribution is no longer supported by Google Cloud. We will gladly consider, but do not commit to accepting, patches to fix build problems on the platform.

⚠️ Our Doxygen documentation (e.g. Storage docs) was incorrectly showing the versioned inline namespace name for our symbols (it was v1), implicitly suggesting that users should spell this inline namespace in their own code. This has been corrected. Our Doxygen documentation no longer shows the versioned inline namespace name; instead, it shows users how to correctly spell our symbol names without referencing the versioned inline namespace.

BigQuery

  • feat: create relocatable pkg-config files (#7481)

Bigtable

  • doc: remove inline namespace from doxygen (#7461)
  • fix(bigtable): retry internal errors known to be transient (#7395)

Firestore

BREAKING CHANGE: The experimental Firestore support library that used to
live in this repo at google/cloud/firestore has been removed in favor of the
canonical library at https://firebase.google.com/docs/reference/cpp. For more
info see #7443.

  • cleanup(firestore)!: removes the experimental firestore library (#7468)

IAM

  • feat: create relocatable pkg-config files (#7481)
  • fix(generator): add doxygen return comment for StreamRanges (#7419)

Pub/Sub

Spanner

  • feat: create relocatable pkg-config files (#7481)
  • doc: remove inline namespace from doxygen (#7461)
  • fix(generator): add doxygen return comment for StreamRanges (#7419)

Storage

  • fix(storage): respect ContentType in Client::UploadFile (#7521)
  • doc: remove inline namespace from doxygen (#7461)
  • fix(storage): prevent crashes on double Close() (#7390)
  • feat(storage): add bucket attributes for RPO (#7384)
  • doc(storage): 'unspecified' value for PAP is deprecated (#7377)
  • doc(storage): label ClientOptions as deprecated (#7511)

Common Libraries

  • fix(common): fewer crashes with dynamic loading (#7512)
  • feat: create relocatable pkg-config files (#7481)
  • fix(common): resume sending "v" in "gccl" component of API header (#7473)
  • doc: remove inline namespace from doxygen (#7461)
  • feat(common): adds begin/end inline namespace macros (#7456)
  • feat(common): GUAC for async read-write streams (#7442)

v1.32.1

06 Oct 17:56
f2f41d1

Choose a tag to compare

v1.32.1 Release

Pub/Sub

  • fix(pubsub): respect non-default values in pubsub::ConnectionOptions (#7406)

v1.32.0

01 Oct 16:49
58ea920

Choose a tag to compare

v1.32.0 Release

Bigtable

  • docs(bigtable): add documentation for no channel refreshes (#7373)

IAM

  • feat(generator): generate a SetIamPolicy() overload with an OCC loop (#7276)
  • doc(iam): use SetIamPolicy() read-modify-write loop in sample (#7288)

Pub/Sub

  • feat(pubsub): use google::cloud::Options to configure the library.
    pubsub::PublisherOptions, pubsub::SubscriberOptions, and related
    functions are deprecated. We have not set a date to remove them, but if
    we ever do we plan to give you one year's notice.
  • fix(pubsub): avoid deadlocks in publish flow control (#7313)
  • fix(pubsub): dont std::move PublisherOptions that we are still using (#7270)

Storage

BREAKING CHANGES:

  • We have removed the code generated from storage/v1 protos. These protos were
    not GA themselves, and the underlying service will be disabled in the near
    future. Furthermore, the library that used them (the GCS+gRPC plugin) is
    clearly labeled experimental. Regardless, we apologize if this causes you
    inconvenience or additional work.

OTHER CHANGES:

  • fix(storage): eliminate dangling function references (#7366)
  • doc: add gRPC steps to storage quickstart (#7358)
  • fix(storage): restore deprecation warnings on MSVC (#7325)
  • fix(storage): build with MSVC+x86 (#7323)
  • feat(GCS+gRPC): reduce data copying in downloads (#7303)
  • feat(GCS+gRPC): support timeouts for all requests (#7299)
  • feat(storage): support timeouts for all requests (#7295)
  • feat(storage): use generic parameters when resuming uploads (#7292)
  • feat(GCS+gRPC): implement standard parameters (#7272)
  • fix(storage): use CA info options in credentials (#7261)
  • doc(storage): handle kNotFound in example (#7252)

Spanner

  • feat(generator): generate a SetIamPolicy() overload with an OCC loop (#7276)
  • feat(spanner): add factory functions for instance/database/backup (#7321)
  • doc(spanner): convert Spanner samples to use the generated admin APIs (#7311)
  • feat(spanner): add generated admin APIs (#7285)

Common Libraries

  • fix: substitute build metadata (git commit) in bazel builds (#7378)
  • feat(common): add ability to supply a user-run CQ to gRPC options (#7354)