Skip to content

Releases: googleapis/google-cloud-cpp

v1.27.0 Release

03 May 23:27
893beb1
Compare
Choose a tag to compare

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

14 Apr 18:48
b484fae
Compare
Choose a tag to compare

Storage

  • fix(storage): disable self-signed JWT authentication (#6238)

v1.26.0 Release

01 Apr 16:51
6bc6b50
Compare
Choose a tag to compare

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 with TableAdmin (#6004)
  • feat: bind CompletionQueue with InstanceAdmin (#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

  • feat(common): experimental logging configuration (#6049)
  • feat(common): log the last N entries (#6048)
  • feat(common): make google::cloud::Options public (#6042)

v1.25.0 Release

01 Mar 17:14
fcbbc05
Compare
Choose a tag to compare

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 a Topic. 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

02 Feb 03:04
aa01568
Compare
Choose a tag to compare

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

15 Jan 06:50
230cd07
Compare
Choose a tag to compare

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 the google-cloud-cpp libraries.

v1.22.0 Release

07 Jan 21:05
c8e7d91
Compare
Choose a tag to compare

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

  • fix: only build gRPC testing utilities if needed (#5594)
  • feat: Implement backup level IAM policy (#5585)
  • fix: get the code to compile with MSVC 2017 (#5574)
  • cleanup: remove custom C++ version variable (#5674)

v1.21.0 Release

01 Dec 21:54
e96b6f8
Compare
Choose a tag to compare

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

  • feat: add value_type to StatusOr (#5535)
  • feat: introduce a generic StreamRange (#5532)
  • refactor(common): move CompletionQueue mock (#5463)
  • feat: a faster CompletionQueue::RunAsync (#5406)

v1.20.0 Release

03 Nov 16:20
88d7735
Compare
Choose a tag to compare

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 to pubsub::SubscriberOptions as these
    are bound to a specific subscriber object.

  • Change the pubsub::Subscriber API. A Subscriber is now bound to a specific
    Cloud Pub/Sub subscription, with a fixed set of SuscriptionOptions, just
    like a pubsub::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 to SubscriberOptions 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

  • Fixed occasional crash on background thread shutdown (#5324)
  • GCP_LOG now serializes its output to std::clog (#5179)

v1.19.0 Release

01 Oct 15:25
d10f8bf
Compare
Choose a tag to compare

Storage

  • fix(storage): consistent computation of XML vs. JSON (#5095)
    The interaction of ClientOptions::set_endpoint() and the
    CLOUD_STORAGE_TESTBENCH_ENDPOINT environment variable was inconsistent
    across endpoints. For JSON endpoints set_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.