Releases: googleapis/google-cloud-cpp
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)
Common Libraries
v1.21.0 Release
BREAKING CHANGES:
- Some "Range" types used in the Storage, Pub/Sub and Spanner APIs lost a constructor that was never intended to be part of their public APIs. Users who were not directly constructing these ranges will not be affected. Also some performance improvements were made to their iterator implementations that could break callers who were relying on unspecified behavior that is not required by the input range concept.
The affected types are:google/cloud/storage/list_buckets_reader.h
using ListBucketsReader = google::cloud::internal::PaginationRange
google/cloud/storage/list_hmac_keys_reader.h
using ListHmacKeysReader = google::cloud::internal::PaginationRange
google/cloud/storage/list_objects_and_prefixes_reader.h
using ListObjectsAndPrefixesReader = google::cloud::internal::PaginationRange
google/cloud/storage/list_objects_reader.h
using ListObjectsReader = google::cloud::internal::PaginationRange
google/cloud/pubsub/subscription_admin_connection.h
using ListSubscriptionsRange = google::cloud::internal::PaginationRange
using ListSnapshotsRange = google::cloud::internal::PaginationRange
google/cloud/pubsub/topic_admin_connection.h
using ListTopicsRange = google::cloud::internal::PaginationRange
using ListTopicSubscriptionsRange = google::cloud::internal::PaginationRange
using ListTopicSnapshotsRange = google::cloud::internal::PaginationRange
google/cloud/spanner/database_admin_connection.h
using ListDatabaseRange = google::cloud::internal::PaginationRange
using ListBackupOperationsRange = google::cloud::internal::PaginationRange
using ListDatabaseOperationsRange = google::cloud::internal::PaginationRange
using ListBackupsRange = google::cloud::internal::PaginationRange
google/cloud/spanner/instance_admin_connection.h
using ListInstancesRange = google::cloud::internal::PaginationRange
using ListInstanceConfigsRange = google::cloud::internal::PaginationRange
Bigtable
- fix(bigtable): missing functions to change policies (#5565)
- feat(bigtable): create logging layer for Cloud Bigtable (#5515)
- docs: document Bigtable thread safety (#5394)
Pub/Sub
- feat(pubsub): by default Subscriber::Subscribe retries forever (#5552)
- fix(pubsub): deadlock during streaming pull shutdown (#5547)
- fix(pubsub): deadlock during fire & forget shutdown (#5541)
- refactor!: PaginationRange is now an alias to StreamRange (#5538)
- doc(pubsub): declare the library GA (#5390)
- doc(pubsub): how to run throughput benchmark (#5500)
- feat(pubsub): separate subscribers in benchmark (#5499)
- feat(pubsub): separate publishers in benchmark (#5496)
- feat(pubsub): minor optimization in publisher (#5495)
- fix(pubsub): reduce data copying in publish (#5484)
- feat(pubsub): more efficient callback dispatch (#5458)
- feat(pubsub): batch acks and nacks in streams (#5464)
- feat(pubsub): increase default buffer sizes (#5449)
- feat(pubsub): pace publisher in throughtput benchmark (#5447)
- feat(pubsub): improve lease management performance (#5454)
- feat(pubsub): more details in throughput benchmark (#5451)
- feat(pubsub): import throughput benchmark reports (#5450)
- feat(pubsub): show ack throughput in benchmark (#5439)
- feat(pubsub): handle AsyncPull responses in batches (#5441)
- feat(pubsub): round robin subscriber channels (#5423)
- feat(pubsub): more throughput benchmark options (#5419)
- fix(pubsub): keep corked after ResumePublish (#5415)
- fix(pubsub): sometimes published oversized batches (#5409)
- feat(pubsub): round robin publisher connections (#5401)
- feat(pubsub): reduce default channel count (#5402)
Spanner
- feat(spanner): Point-In-Time Recovery (lite) throttled DB update (#5562)
- refactor!: PaginationRange is now an alias to StreamRange (#5538)
Storage
- refactor!: change gcs to use common PaginationRange (#5545)
- fix(storage): use channel options for credentials (#5524)
- fix: validate service account credentials contain a usable key (#5404)
Common Libraries
v1.20.0 Release
Bigtable
No user-facing changes.
Pub/Sub
BREAKING CHANGES:
While the Pub/Sub library is not GA, and breaking changes are to be expected, we
are close enough to a GA release that we think highlighting them is important.
-
Simplify the concurrency control configuration in
pubsub::SubscriberOptions
.
Applications only need to set the maximum number of messages that will be
scheduled in parallel. -
Remove
pubsub::AckHandler::ack_id()
accessor. We believe application
developers should have no need for this field. -
Rename
pubsub::SubscriptionOptions
topubsub::SubscriberOptions
as these
are bound to a specific subscriber object. -
Change the
pubsub::Subscriber
API. ASubscriber
is now bound to a specific
Cloud Pub/Sub subscription, with a fixed set ofSuscriptionOptions
, just
like apubsub::Publisher
is bound to a specific topic and a set of
PublisherOptions
. In addition to making publishers and subscribers more
symmetrical, this makes the library more consistent with the Cloud Pub/Sub
library for other languages. Finally, note that we are planning to rename
SubscriptionOptions
toSubscriberOptions
in a future PR too. -
Remove option to disable retries in
Publisher::Publish
. This is redundant as
the application can set a "no retries" retry policy. This is more consistent
with other Cloud Pub/Sub libraries. We include an example showing how to
configure a "no retries" retry policy. -
Fix inconsistent naming for
PublisherOptions
attributes controlling the
maximum number of messages per batch and the maximum number of bytes per
batch. -
Rename the
{Topic,Snapshot,Subscription}MutationBuilder
classes, removing
Mutation
from their names. This makes the C++ library more familiar for
Cloud Pub/Sub developers coming from other languages. -
Simplify the message flow control configuration. Now that the library uses
streaming pulls, the low water marks are not used. The application developer
simply sets limits for the number of messages (and/or bytes) outstanding.
These limits are propagated to the service, and the service will stop
streaming if too many messages (or bytes) are outstanding.
Spanner
No user-facing changes.
Storage
BREAKING CHANGES:
- Our public headers no longer include
nlohmann/json.hpp
. Please update your
code to directly include this header if you need it. We believe it is not a
good practice to depend on indirectly included headers, but do feel we should
warn our customers of this change.
OTHER CHANGES:
- Unexpected curl errors will now be retried (#5312)
- docs: add error handling example from
client->ReadObject()
(#5274) - feat(storage): Create an example for
Client::DeleteResumableUpload()
- doc: prefer UBLA references over bucket-policy-only
Common Libraries
v1.19.0 Release
Storage
-
fix(storage): consistent computation of XML vs. JSON (#5095)
The interaction ofClientOptions::set_endpoint()
and the
CLOUD_STORAGE_TESTBENCH_ENDPOINT
environment variable was inconsistent
across endpoints. For JSON endpointsset_endpoint()
overrode the
CLOUD_STORAGE_TESTBENCH_ENDPOINT
value, while for XML endpoints it
was the opposite.In other libraries the environment variable always wins, so we are changing
the behavior here. This behavior was never documented, and it was buggy,
therefore it is not a breaking change. Nonetheless, we think the bug (and
the fix) is surprising enough to highlight in the CHANGELOG. -
fix: enable
codecvt
(UTF-8 support for signed URLs) in MSVC (#5126) -
fix(storage): avoid stalls with small reads (#5104)
-
feat(storage): disable XML via environment variable (#5100)
-
fix(storage): use correct host header (#5085)
Spanner
- fix: retry gRPC operations if the connection is unexpectedly terminated (#5087)
- doc(spanner): use custom retry example in the Doxygen docs (#5164)
Pub/Sub
⚠️ This library is under development and subject to breaking
changes without notice.
- feat(pubsub): wait for callback return and handler (#5161)
- In addition, @remyabel contributed a number of examples.