Skip to content

Releases: googleapis/google-cloud-cpp

v1.30.0

03 Aug 13:40
35d6136
Compare
Choose a tag to compare

v1.30.0 Release

New GA Libraries

Bigtable:

BREAKING CHANGES:

  • As previously announced, we removed the experimental Async* functions in Table that took a CompletionQueue& parameter. Users that need to update their code should use the identically named functions which do not require a CompletionQueue&. If users require a custom CompletionQueue, one can be supplied to the DataClient used to construct the Table, via ClientOptions::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

01 Jul 18:01
970c2fe
Compare
Choose a tag to compare

Bigtable:

BREAKING CHANGES:

  • Experimental functions matching Async* in bigtable::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

02 Jun 17:39
855ff01
Compare
Choose a tag to compare

Bigtable

  • feat(bigtable): Add asynchronous method for sampling row keys (#6561). Users
    that extend bigtable::DataClient and wish to use the new method will need to
    override PrepareAsyncSampleRowKeys().
  • 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 the storage 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

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)