Releases: googleapis/google-cloud-cpp
v1.39.0
BREAKING CHANGES
-
Starting with this release Linux and Windows builds based on CMake
no longer setCMAKE_CXX_STANDARDto11. 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-cpprequires C++ >= 11, we continue
to setCMAKE_CXX_STANDARDon that platform. - This only changes the default C++ version, we continue to test and support C++11.
- For more details, see #6767.
- On macOS the default is C++98, as
-
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
kDeadlineExceededas permanent error in all services (#8525)
Bigtable
BREAKING CHANGES
InstanceAdmin::GetIamPolicyandInstanceAdmin::SetIamPolicyhave been
retired. If you are affected by this removal, please use
InstanceAdmin::GetNativeIamPolicyandInstanceAdmin::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::GetBucketIamPolicyandClient::SetBucketIamPolicyhave been
retired. If you are affected by this removal, please use
Client::GetNativeBucketIamPolicyandClient::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()andWithObjectMetadata(#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::futuresupport for coroutines (#8532)
v1.38.0
Service Management API
- The
DisableService()andEnableService()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
v1.37.0
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...
- Access Approval
- Access Context Manager
- Anthos GKE API
- API Gateway
- App Engine Admin API
- Artifact Registry
- Assured Workloads
- AutoML
- Binary Authorization
- Certificate Authority Service
- Channel Services
- Cloud Asset Inventory
- Cloud Billing
- Cloud Build
- Cloud Composer
- Cloud Data Loss Prevention (DLP)
- Cloud Debugger
- Cloud Functions
- Cloud Intrusion Detection System (IDS)
- Cloud IoT
- Cloud Key Management Service (KMS)
- Cloud Scheduler
- Cloud Shell
- Cloud TPU
- Cloud Trace
- Cloud Translation
- Cloud Vision
- Compute Engine OS Config
- Compute Engine OS Login
- Connectivity Tests
- Container Analysis
- Database Migration Service (DMS)
- Eventarc
- Filestore
- Game Servers
- Google Kubernetes Engine (GKE)
- Identity-Aware Proxy (IAP)
- Memorystore for Memcached
- Memorystore for Redis
- Migrate for Compute Engine
- Organization Policy Service
- Policy Troubleshooter
- Recommender
- Resource Manager
- Retail
- Security Command Center
- Serverless VPC Access
- Service Control
- Service Directory
- Service Management
- Service Usage
- Storage Transfer Service
- Talent Solution
- Text-to-Speech
- Vertex AI Workbench
- Video Intelligence API
- Web Risk
- Web Security Scanner
- Workflows
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
- Any target starting with
- All exported targets without a
- 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-lflags directly, please usepkg-configand/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.
- Bazel Users: applications should use the targets at the top-level
BigQuery
The library has been expanded to include the following services:
- BigQuery ML
- BigQuery Connection API
- BigQuery Data Transfer Service
- BigQuery Reservations
- BigQuery Storage Write API
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 ...
v1.36.0
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...
- Access Approval
- Access Context Manager
- Anthos GKE API
- API Gateway
- App Engine Admin API
- Artifact Registry
- Assured Workloads
- AutoML
- Binary Authorization
- Certificate Authority Service
- Channel Services
- Cloud Asset Inventory
- Cloud Billing
- Cloud Build
- Cloud Composer
- Cloud Data Loss Prevention (DLP)
- Cloud Debugger
- Cloud Functions
- Cloud Intrusion Detection System (IDS)
- Cloud IoT
- Cloud Key Management Service (KMS)
- Cloud Scheduler
- Cloud Shell
- Cloud TPU
- Cloud Trace
- Cloud Translation
- Cloud Vision
- Compute Engine OS Config
- Compute Engine OS Login
- Connectivity Tests
- Container Analysis
- Database Migration Service (DMS)
- Eventarc
- Filestore
- Game Servers
- Google Kubernetes Engine (GKE)
- Identity-Aware Proxy (IAP)
- Memorystore for Memcached
- Memorystore for Redis
- Migrate for Compute Engine
- Organization Policy Service
- Policy Troubleshooter
- Recommender
- Resource Manager
- Retail
- Security Command Center
- Serverless VPC Access
- Service Control
- Service Directory
- Service Management
- Service Usage
- Storage Transfer Service
- Talent Solution
- Text-to-Speech
- Vertex AI Workbench
- Video Intelligence API
- Web Risk
- Web Security Scanner
- Workflows
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:
v1.35.0
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
v1.34.0 Release
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::Clientis 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
⚠️ 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 wasv1), 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
- feat: create relocatable pkg-config files (#7481)
- doc: remove inline namespace from doxygen (#7461)
- feat(pubsub): implement GUAC (#7449) (#7440) (#7436) (#7432) (#7428)
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
ClientOptionsas 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
v1.32.0
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::Optionsto 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/v1protos. 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 labeledexperimental. 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)