Releases: googleapis/google-cloud-cpp
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::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
⚠️ 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
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
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::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 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)
Common Libraries
v1.31.1
v1.31.0
v1.31.0 Release
BigQuery
- feat(generator): add default tracing components and options (#7219)
Bigtable
- feat(bigtable): add Make(Data,Admin,InstanceAdmin)Client methods that take Options (#7226)
IAM
- feat(generator): add default tracing components and options (#7219)
Pub/Sub
- feat(pubsub): support Topic retention duration (#7196)
Storage
- fix: release CurlRequest handles on error (#7244)
- feat(storage): add additional examples (#7224)
- feat(storage): aggregate upload benchmark (#7190)
- fix(GCS+gRPC): quickstart build with Bazel+Windows (#7147)
- fix(storage): release handles for oauth2 refresh (#7136)
- fix(GCS+gRPC): return status on stream closure (#7128)
- feat(storage): make benchmark more robust on stalls (#7113)
- feat(GCS+gRPC): timeout downloads in benchmark (#7112)
- feat(GCS+gRPC): initial support for download timeouts (#7108)
Spanner
- feat(spanner): support for JSON as a column type (#7212)
- feat(spanner): tagging support (#7154)
- feat(spanner): send session-refresh request at low priority (#7140)
- fix(spanner): fix Client::OverlayQueryOptions() to merge correctly (#7118)
Common Libraries
BREAKING CHANGES:
google::cloud::StatusOr<T>
had an accessor that returned an lvalue
reference to non-constStatus
, this allowed callers to modify the contained
Status
and break invariants of theStatusOr
class. This function was
removed. If your code previously relied onsor.status() = new_status
you
should change it tosor = new_status
. (#7150)
OTHER CHANGES:
v1.30.1
v1.30.0
v1.30.0 Release
New GA Libraries
- BigQuery Storage -- The BigQuery Storage library is now GA.
- IAM -- The IAM library is now GA.
Bigtable:
BREAKING CHANGES:
- As previously announced, we removed the experimental
Async*
functions inTable
that took aCompletionQueue&
parameter. Users that need to update their code should use the identically named functions which do not require aCompletionQueue&
. If users require a customCompletionQueue
, one can be supplied to theDataClient
used to construct theTable
, viaClientOptions::DisableBackgroundThreads(CompletionQueue const&)
. See #2567 for more details.
OTHER CHANGES:
- We changed the
MutationBatcher
's default setting for max mutations per batch from 100k to 1k. The new value achieves better throughput and avoids errors from exhausting the server. (#7095)
Storage:
BREAKING CHANGES:
- We changed how the library uses
google::cloud::internal::ObjectReadSource
. If your tests mock how the library uses this class you may need to update your tests. We updated the mocking examples to guide you in changing any tests.
OTHER CHANGES:
- feat(storage): discard handles after an error (#7088)
- feat(storage): release download handles sooner (#7085)
- feat(storage): support setting HTTP version (#7077)
- fix(storage): cleanup interrupted downloads (#7064)
- fix(storage): avoid crashes after move (#7045)
- feat(GCS+gRPC): upload checksums with last chunk (#7031)
- fix(storage): use hash values in InsertObject() (#7025)
- feat(storage): capture peer address for REST (#6994)
- feat(GCS+gRPC): option to configure plugin (#6991)
- feat(GCS+gRPC): checksums on ObjectInsert (#6967)
- fix(GCS+gRPC): no hashes in Object resource (#6963)
Common Libraries:
- feat(common): always clog GCP_LOG(FATAL) messages (#7087)
- feat(common): make GCP_LOG(FATAL) terminate execution (#7058)
Other:
We have removed the super/
directory: google-cloud-cpp
remains usable in a super build for a larger project, but we do not believe these files add enough value for the additional complexity. If you prefer to build all the dependencies from source using CMake, we recommend you use a package manager, such as vcpkg.
We have dropped support for Clang < 6.0: to support the latest Google Cloud services we need a version of Protobuf that can compile all the .proto
files in https://github.com/googleapis/googleapis. At this time this requires Protobuf >= 3.15, and these versions of Protobuf do not support older versions of the Clang compiler.
v1.29.0 Release
Bigtable:
BREAKING CHANGES:
- Experimental functions matching
Async*
inbigtable::TableAdmin
and
bigtable::InstanceAdmin
have been removed from the public API. See
#5923 for more details.
Other changes:
- feat(bigtable): add Backup IAM Policy snippets (#6847)
- doc(bigtable): revamp examples README (#6839)
- docs: fix connection pool size for samples (#6834)
- cleanup(doc): add IAM examples to Bigtable gRPC doc, fix typos (#6838)
- cleanup(bigtable)!: remove admin async methods from public API (#6711)
Pub/Sub:
- fix: cast to
std::string
which works with string and Cord (#6850) - doc(pubsub): an example for publisher flow control (#6784)
- feat(pubsub): flow control for Publisher (#6678)
- feat(pubsub): use unary RPCs for Ack/Nack (#6674)
- feat(pubsub): direct Ack/Nack through SubscriberStub (#6666)
Storage:
- fix(storage): allow overwrites in parallel uploads (#6908)
- feat(GCS+gRPC): capture streaming RPCs metadata (#6902)
- fix(storage): use correct header for XML pre-conditions (#6903)
- fix(storage): use JSON for reads with pre-conditions (#6900)
- fix(storage): treat 304 errors as
kFailedPrecondition
(#6897) - feat(storage): micro-optimization for downloads (#6892)
- fix(GCS+gRPC): avoid duplicate headers in downloads (#6891)
- feat(storage): implement "public access prevention" (#6755)
- fix(GCS+gRPC): resumable uploads can resume (#6881)
- feat(storage): share client in throughput benchmark (#6882)
- feat(storage): make auto-finalization optional (#6874)
- fix(storage): alternative endpoints and Host header (#6864)
- fix(storage): crashes with tracing enabled (#6870)
Spanner:
- feature(spanner): low-cost instances (#6895)
- refactor(spanner): Use background threads for admin LROs (#6853, #6835)
- feature(spanner): add optimizer_statistics_package to QueryOptions (#6727)
- fix(spanner): pick up tracing-option defaults in SetBasicDefaults() (#6691)
Common Libraries:
v1.28.0 Release
Bigtable
- feat(bigtable): Add asynchronous method for sampling row keys (#6561). Users
that extendbigtable::DataClient
and wish to use the new method will need to
overridePrepareAsyncSampleRowKeys()
. - fix(bigtable):
bigtable::Table::AsyncBulkApply()
now respects the Retry and
Backoff policies (#6510)
IAM
NOTE This release includes an experimental IAM client library. This
library is NOT GA and is likely to have breaking changes in the coming
months. Feel free to take a look, file issues, ask questions, and even
experiment with it, but do not ship production code using it yet.
- feature(iam): generate iam admin code (#6430)
Pub/Sub
- fix(pubsub): save refresh timer for cancellation (#6662)
- feat(pubsub): add ability to set the ack deadline extension (#6620)
Spanner
- feat(spanner): use multiple channels instead of multiple client for the
multiple rows cpu benchmark (#6659) - fix(spanner): do not warn about SessionPoolClockOption (#6619)
Storage
- feat(storage): recommend
g::c::Options
(#6640) - feat(storage): support multiple channels in GCS+gRPC (#6593)
- feat(storage): round-robin stub for GCS+gRPC (#6584)
- fix(storage): compile GCS+gRPC with Windows+x86 (#6556)
- feat(storage): install rules for GCS+gRPC plugin (#6527)
- fix(storage): compile with GCC 11 in C++17 mode (#6501)
- feat: Support unified credentials (
google::cloud::Credentials
) to initialize
both the REST and gRPC plugins with the same classes. (#6518)(#6531)(#6617)(#6488)(#6441)
Common Libraries
- feat: Add support for "unified" credentials, which allow applications to
Configure the REST and gRPC-based libraries using the same credential classes
Support complex credential types, such as service account impersonation
With this release, only thestorage
library supports unified credentials.
(#6617)(#6614)(#6531)(#6518) - feat: an example using identity tokens with gRPC (#6583)
- feat: example using identity tokens (#6569)