Releases: googleapis/google-cloud-cpp
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)
v1.27.0 Release
Storage
- fix(storage): missing implementation for constructor (#6439)
- feat(storage): minimal stub for IAM credentials service (#6425)
- feat: support errors in DynamicAccessTokenCredentials (#6325)
- feat(storage): use the unified authentication client (#6323)
- feat(storage): map unified to REST credentials (#6301)
- refactor(storage): use g::c::Options in RawClients (#6282)
- refactor(storage): common code for client unit tests (#6256)
- doc(storage): wrong arguments for quickstart program (#6249)
- fix(storage): deflake IAM integration test (#6234)
- fix(storage): disable self-signed JWT authentication (#6230)
- refactor(storage): use g::c::Options for GrpcClient (#6209)
- refactor(storage): use g::c::Options in CurlClient (#6203)
- refactor(storage): compute default options in a single function (#6200)
- refactor(storage): use g::c::Options in ClientOptions (#6183)
Spanner
- fix(spanner): propagate request_options in ReadPartition serialization (#6319)
Common libraries
- feat(common): credentials for service account impersonation (#6429)
- feat(common): gRPC support for service account impersonation (#6401)
- feat(common): support asynchronous RPCs in GrpcAuthenticationStrategy (#6391)
- feat: a cache for access tokens retrieved using gRPC (#6381)
- feat: minimal stub for service account impersonation (#6348)
- feat: support errors in DynamicAccessTokenCredentials (#6325)
- feat(common): support unified credentials in gRPC (#6304)
- feat(common): bootstrap Unified Authentication Client (#6299)
- refactor!: remove gcpcxx.pb suffix from generated files (#6286)
- feat(iam): an example for GenerateAccessToken (#6188)
Misc.
BREAKING CHANGES:
- In #6243 we stopped compiling the code in
generator/
by default in CMake
builds. In most cases this should just be a performance win as this code is
not used by client libraries. However, if anyone was relying on the
generator/
being compiled, it can be re-enabled with
-DGOOGLE_CLOUD_CPP_ENABLE_GENERATOR=ON
- In #6286, we removed the .gcpcxx.pb suffix from filenames emitted from the C++
microgenerator. Any usages of the bigquery, iamcredentials, or logging
experimental libraries will require updating of include paths in user code.
v1.26.1 Release
Storage
- fix(storage): disable self-signed JWT authentication (#6238)
v1.26.0 Release
BigQuery
NOTE This release includes an experimental BigQuery Storage Read 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(bigquery): add quickstart (#6116)
- feature(bigquery): add success case integration tests (#6102)
- feature(bigquery): storage library generation (#5989)
Bigtable:
BREAKING CHANGES:
bigtable::AdminClient
,bigtable::DataClient
, and
bigtable::InstanceAdminClient
each gained a new, pure virtual
BackgroundThreadsFactory()
member function, requiring anyone who derives
from those classes to implement that function. This would typically only
affect users who create mock clients for testing purposes.
OTHER CHANGES:
- feat(common): experimental logging configuration (#6049)
- feat(bigtable): Bind CompletionQueue with Table (#6012)
- feat: bind
CompletionQueue
withTableAdmin
(#6004) - feat: bind
CompletionQueue
withInstanceAdmin
(#5967) - feat(bigtable): enable keepalive pings by default (#5969)
Pub/Sub
- feat(pubsub): schemas are no longer experimental (#6115)
- fix(pubsub): deadlocks for cancel during session startup (#6055)
- feat(common): experimental logging configuration (#6049)
- doc(pubsub): fix region tags for two examples (#5944)
Storage
- doc(storage): always use signing account in examples (#6149)
- feat(storage): self-signed JWTs for service accounts (#6096)
- doc(storage): better description for ObjectWriteStream (#6075)
- cleanup: deprecate some IAM types (#6069)
- fix(storage): move disabling consts (#6064)
- fix(storage): use after move problems (#6066)
- feat(common): experimental logging configuration (#6049)
- doc(storage): describe how to use optional parameters (#5983)
- fix(storage): correctly set customTime on inserts (#5980)
- fix(storage): do not update upload session ids (#5979)
- feat(storage): implement storage::GrpcClient::TestBucketIamPermissions (#5957)
- feat(storage): implement storage::GrpcClient::DeleteResumableUpload (#5941)
Spanner
- feature(spanner): request priority (#6103)
- feature(spanner): update CMEK samples (#6120)
- feature(spanner): customer-managed encryption (#6087)
- feat(common): experimental logging configuration (#6049)
- feat(spanner): connection factories now prefer
Options
(#6046) - feat(common): make Options public (#6042)
- doc(spanner): fix expected option lists (#6029)
Common libraries
v1.25.0 Release
Bigtable:
-
We have marked the asynchronous versions of the administrative functions as
deprecated. These functions were experimental and we do not think they add
value to our customers. Removing them would simplify the code and free
development time for further features and cleanups. More information in
#5923. -
The legacy IAM functions were marked as deprecated via doxygen comments.
Now they should generate warnings at the call site, depending on your
compiler settings. See #5929 for more information. -
feat(bigtable): add CMEK attributes to admin APIs (#5921)
-
feat(bigtable): limit default connection pool size (#5881)
-
doc: workarounds for Bazel and path length problems (#5869)
-
doc(bigtable): add configure_connection_pool sample (#5839)
Pub/Sub:
- Implemented support for "schemas". This feature allows you to define the
schema of the messages accepted by aTopic
. The schemas can be defined using
AVRO or Protocol Buffers. This is a public preview feature of Cloud Pub/Sub,
the APIs are found in the::google::cloud::pubsub_experimental
namespace.
Spanner:
- feat(spanner): Point-In-Time Recovery (PITR) (#5906)
This is a major new feature in Spanner, supporting backups and restores at
a given timestamp. - refactor(spanner): spanner::Timestamp/protobuf::Timestamp conversions… (#5876)
- feat(spanner): statistics returned for a committed transaction (#5809)
Storage:
-
The legacy IAM functions were marked as deprecated via doxygen comments.
Now they should generate warnings at the call site, depending on your
compiler settings. See #5929 for more information. -
doc(storage): Update UBLA documentation to reflect its current status (#5870)
It has been GA for a long time, but was still described as not in our
comments. -
fix(storage): remove unneeded dependency (#5798)
The backwards compatibility target and package (storage_client
) required
the googleapis protos.
v1.24.0 Release
NOTE:
We are clarifying our approach to backwards compatibility beyond the C++ API.
See the README.md on GitHub for details
Bazel
- Starting with this release the legacy targets, such as
//google/cloud/pubsub:pubsub_client
are deprecated and generate warnings
recommending a replacement (such as//:pubsub
). Note that you may have to
prefix the target with the external package name you gave this library, e.g.,
@github_com_google_cloud_cpp//:pubsub
. (#5746)
Bigtable
- feat(bigtable): restore from backups in other instance (#5754)
- feat(bigtable): better control over channel refresh (#5753)
Spanner
No user-facing changes.
Storage
BREAKING CHANGES:
- UniformBucketLevelAccess was known as BucketPolicyOnly during the beta. For
compatibility the C++ Cloud Storage library supported both, however
BucketPolicyOnly is now completely removed. (#5720)
Other Changes:
- feat(storage): Support includeTrailingDelimiter in Client::ListObjects (#5713)
Common Libraries
BREAKING CHANGES:
- refactor!: removed old bigquery code (#5722)
v1.23.0 Release
Common Libraries
- fix: crashes during client shutdown (#5701)
Bigtable
- Removed OpenCensus example. OpenCensus has merged
with OpenTracing into OpenTelemetry. The C++
development seems to have stalled, and we not longer believe it will ever
be mature enough to recommend for thegoogle-cloud-cpp
libraries.
v1.22.0 Release
Bigtable
- feat(bigtable): enforce id limits in admin emulator (#5679)
- feat(bigtable): create logging layer for Cloud Bigtable DataClient (#5654)
- feat(bigtable): create logging layer for Cloud Bigtable InstanceAdminClient (#5653)
- feat(bigtable): create logging layer for Cloud Bigtable (#5556)
- feat: implement Bigtable connection refresh (#5550)
- feat: Implement backup level IAM policy (#5585)
Pub/Sub
- feat(pubsub): add equality to Publisher (#5608)
Storage
- fix(storage): incorrect CURL handle manipulation (#5651)
- feat(storage): propagate custom header with resumable upload PUT requests (#5632)
- fix: only build gRPC testing utilities if needed (#5594)
Spanner
- cleanup: rename spanner::internal to spanner_internal (#5620)
- fix: get the code to compile with MSVC 2017 (#5574)