Skip to content

Latest commit

 

History

History
1911 lines (1335 loc) · 84 KB

CHANGELOG.md

File metadata and controls

1911 lines (1335 loc) · 84 KB

Changelog

NOTE: Future Breaking Changes lists anticipated breaking changes in the upcoming 3.x release. This release is scheduled for 2024-12 or 2025-01.

v2.34.0 - TBD

v2.33.0 - 2024-12

  • Has been promoted from an experimental library to GA.
  • docs(storage): Update build instructions for gcs+grpc (#14833)
  • fix(gkeconnect): service only supports REST endpoint (#14897)

v2.32.0 - 2024-12

  • feat(spanner): add samples for MR CMEK (#14674)
  • feat(rest): support generateIdToken in impersonation url (#14853)
  • feat(rest): support impersonated ADC (#14815)

v2.31.0 - 2024-11

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • docs(pubsub): Fix region tags for Pub/Sub ingestion from GCS samples (#14773)
  • docs(storage): better suggestion for deprecated API (#14786)
  • feat(oauth2): add support for external account workforce identity (#14800)
  • feat: API key authentication (#14779)
  • feat(mixin): generate mixins for libraries (#14766)

v2.30.0 - 2024-10

Updated Libraries

  • doc(aiplatform): add Vertex AI samples (#14703)
  • AutokeyClient::ListKeyHandles(...) signature has changed to return an iterable type. Our telemetry indicates that there are no C++ applications using this API, and therefore we do not consider this a breaking change. (#14726)
  • feat(otel): release GCM exporter (#14693)
  • feat(mixin): add manual changes for pubsub and generate mixin code (#14756)
  • docs(pubsub): Add ingestion from GCS topic creation sample (#14749)
  • docs(spanner): Add samples for backup schedule feature APIs (#14720)
  • docs(spanner): create a few code snippets as examples for using Spanner Graph using cpp (#14660)
  • The gRPC plugin is now GA. The Using the gRPC plugin guide describes this feature in more detail. When using GCS from Google Compute Engine (GCE) this plugin can enable higher total throughput.
  • feat(storage): Add ability to restore soft deleted objects (#14710)
  • fix(rest): promote buffer curl reads from to member variable (#14732)
  • fix: respect GOOGLE_CLOUD_QUOTA_PROJECT (#14684)

v2.29.0 - 2024-09

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • fix(bigtable): sanitize RowRange proto input (#14651)
  • feat(compute): add missing services instant_snapshots and region_instant_snapshots (#14647)
  • feat(spanner): support instance edition (#14678)
  • fix: do not persist the keys loaded from PKCS#12 on Windows (#14645)
  • fix: no need to link gmock_main in mocks (#14640)
  • fix: quickstarts build with bazel (#14633)

v2.28.0 - 2024-08

  • fix(otel): avoid infinite trace export loop (#14612)
  • fix(rest): prevent libcurl callback from reading bad address (#14615)
  • docs: update mock LRO tips (#14609)

v2.27.0 - 2024-08

  • We now link our mocking libraries against GoogleTest in CMake.

    The mocking libraries require GoogleTest. Not linking GoogleTest was a bug. This bug surfaced in versions of CMake >= 3.30.

    Note that the mocking libraries are built by default. If you want to opt-out of building or installing the mocking libraries, you can supply -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF to your CMake configure command.

    If your build fails because GoogleTest is not found, supply -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF as mentioned above.

  • We have stopped testing on CentOS 7, Debian 10 (Buster), and RockyLinux 8 as these distros are EOL or in some form of "security only" support period. Note that we used CentOS 7 as a proxy for testing RedHat Enterprise Linux 7.

BREAKING TESTING CHANGES

If you don't mock Long Running Operations (LRO) in your tests, then these changes will not affect you.

With the promotion from Experimental to GA of the new methods to support starting Long Running Operations (LRO) synchronously and awaiting their completion separately, the use of ExperimentalTag is no longer required. The overload set for LRO methods has changed and may require matchers to disambiguate invocations of EXPECT_CALL (https://google.github.io/googletest/gmock_cook_book.html#SelectOverload).

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

The following experimental libraries are now available:

  • Cloud BigQuery Control API - This library provides support for the Dataset, Job, Model, Project, Routine, RowAccessPolicy, and Table REST resources.
  • fix(otel): avoid crashes in tracing wrappers for streams (#14477)

Bazel

The --io_opentelemetry_cpp//api:with_abseil flag was marked as deprecated in OpenTelemetry v1.16.0. It may be removed in future versions.

In previous versions of opentelemetry-cpp, this flag was required for compatibility with Abseil. It is no longer necessary, as opentelemetry-cpp is compiled with Abseil by default.

We have stopped using the flag to validate Bazel build configurations with OpenTelemetry tracing enabled.

If you are building google-cloud-cpp with opentelemetry-cpp < v1.16.0, you will need to supply the flag for compatibility with Abseil. The following can be added to your .bazelrc file.

build --@io_opentelemetry_cpp//api:with_abseil
  • feat(spanner): add samples for instance partitions (#14574)
  • fix(storage): reset backoff after partial write (#14473)
  • feat(storage): single span for ReadObject() (#14435)
  • fix(storage): only backoff before resume attempts (#14427)
  • Promoted to GA, functions to start a LRO (longrunning operation) in one function call, and then await the LRO to complete on a separate function.
  • feat(generator): include request in async streaming RPC logs (#14565)
  • fix(common): censor Bearer tokens over HTTP/2 (#14564)
  • fix(common): json_fwd.h is not always available (#14439)
  • fix: workaround missing SHA256 macros in MinGW-w64 (#14437)

v2.26.0 - 2024-07

BREAKING TESTING CHANGES

If you don't mock Long Running Operations (LRO) in your tests, then these changes will not affect you.

With the addition of new methods to support starting Long Running Operations (LRO) synchronously and awaiting their completion separately, the overload set for the preexisting LRO methods have been expanded. Uses of EXPECT_CALL that do not have matchers for the arguments will be ambiguous. To quickly remedy this change instances of EXPECT_CALL(*mock, Method) to EXPECT_CALL(*mock, Method(::testing::_)).

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Updated Libraries

  • Discovery Engine:
    • ControlServiceClient added
    • GroundedGenerationServiceClient added
    • ProjectServiceClient added
    • RankServiceClient added
  • docs(bigtable): include admin options (#14358)
  • docs(pubsub): include admin options (#14359)
  • docs(spanner): include admin options (#14360)
  • feat(storage): support object retention (#14351)
  • feat(storage): buckets with object retention (#14350)
  • samples(storagecontrol): add storagecontrol managed folder samples (#14356)
  • samples(storagecontrol): add storagecontrol folder samples (#14332)
  • New (experimental) functions to start a LRO (longrunning operation) in one function call, and then awaiting for the LRO to complete on a separate function.
  • fix(otel): async read stream tracing (#14393)
  • fix(otel): async write stream tracing (#14394)
  • feat(otel): capture error message in traces (again) (#14389)
  • doc: document Start and Await methods and mocks (#14375)
  • fix(otel): async read write stream tracing (#14379)

v2.25.0 - 2024-06

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Updated Libraries

  • KMS - new AutokeyClient and AutokeyAdminClient
  • docs(pubsub): add optimistic subscribe example (#14272)
  • feat(spanner): add Interval justification (#14123)
  • fix(spanner): correct use of Interval offset in Timestamp addition (#14121)
  • feat(spanner): add Interval/Timestamp/time-zone operations (#14120)
  • feat(securitycenter): re-enable on windows (#14282)
  • feat(storage): Respect custom endpoint for SignedUrl (#14179)
  • fix(bazel): do not reference repo name (#14287)
  • fix(common): support libc++ >= 18.1 (#14151)
  • fix(common): out of range access in handle cleanup (#14134)

v2.24.0 - 2024-05

No longer testing with MSVC 2019

We have stopped testing with MSVC 2019. Microsoft stopped mainstream support for MSVC 2019 in 2024-04. We continue to test with MSVC 2022. We recommend that you update to this version. Note that, in accordance with Google's Foundational C++ support policy, other Google libraries have stopped (or shortly will stop) testing with MSVC 2019 too.

Updated Libraries

  • AI Platform API - new FeatureRegistryServiceClient and GenAiTuningServiceClient
  • Cloud Dataplex API - new DataScanServiceClient and DataTaxonomyServiceClient
  • Cloud SQL Admin API - several new clients:
    • SqlAvailableDatabaseVersionsServiceClient
    • SqlEventsServiceClient
    • SqlIamPoliciesServiceClient
    • SqlInstanceNamesServiceClient
    • SqlRegionsServiceClient
  • Content Warehouse - new PipelineServiceClient
  • Dataproc - new SessionControllerClient and SessionTemplateControllerClient
  • Dialogflow CX API - new GeneratorsClient
  • Discovery Engine - several new clients:
    • DataStoreServiceClient
    • EngineServiceClient
    • RecommendationServiceClient
    • SiteSearchEngineServiceClient
  • Network Connectivity API - new PolicyBasedRoutingServiceClient
  • Retail - new AnalyticsServiceClient
  • feat(datastore): emulator environment variable (#14100)
  • fix(pubsub): correctly trace modacks in the unary pull (#14049)
  • fix(spanner): avoid absl types in public Interval API (#14095)
  • feat(spanner): add a representation for the Spanner INTERVAL (#14059)
  • fix(spanner): delete idle sessions upon SessionPool destruction (#14012)
  • fix(storage): missing include (#14052)
  • docs(storagecontrol): use GetStorageLayout() for quickstart (#14044)
  • docs(storagecontrol): update service title (#14042)

v2.23.0 - 2024-04

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Updated Libraries

  • fix(bigtable): respect GOOGLE_CLOUD_CPP_OPENTELEMETRY_TRACING (#13748)
  • docs(pubsub): add kinesis sample (#13593)
  • feat(spanner): add ExcludeTransactionFromChangeStreamsOption (#13898)
  • feat(spanner): add spanner::Value support for TypeCode::FLOAT32 (#13862)
  • feat(spanner): add samples for proto columns (#13759)
  • feat(spanner): add integration tests for proto columns (#13756)
  • feat(spanner): add spanner::Value support for ProtoEnum/ProtoMessage (#13747)
  • feat(spanner): add representations for the Spanner PROTO/ENUM types (#13743)
  • feat(spanner): add sample for instance-admin managed autoscaler (#13740)
  • fix(speech): enable location specific connections (#13757)
  • fix(storage): preserve full Status in default creds (#13897)
  • fix(storage): respect GOOGLE_CLOUD_CPP_OPENTELEMETRY_TRACING (#13766)
  • feat(storage): support HNS-enabled buckets (#13753)
  • feat(storage): support soft delete timestamps (#13728)
  • feat(common): introduce FieldMaskOption (#13936)
  • docs(common): link to system parameters page (#13937)
  • feat(common): QuotaUserOption for gRPC-based libs (#13933)
  • fix(common): clang-cl needs a const_cast<> (#13891)
  • fix(compute): shorten paths for Bazel+MSVC (#13836)
  • feat(common): support injecting custom headers (#13829)

v2.22.0 - 2024-03

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • feat: promote EnableServerRetriesOption (#13698)
  • feat(bigtable): install mocks library (#13551)
  • docs(pubsub): add doxygen comment to deprecate handwritten apis (#13585)
  • feat(spanner): add support for max commit delay (#13562)
  • feat: install mocks for spanner, sql, pubsublite (#13548)
  • docs(GCS+gRPC): add contact info (#13688)
  • feat(storage): support listing folders as prefixes (#13683)
  • feat(storage): support soft-deleted objects (#13644)
  • feat(storage): support Bucket soft-delete metadata (#13623)
  • feat: cmake option to skip building mock libraries (#13673)
  • feat(generator): support request_id-like fields (#13615)
  • docs(common): advertise OAuth2 library (#13614)

v2.21.0 - 2024-02

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • feat(bigtable): support bigtable routing cookies (#13502)
  • feat(bigtable): logging for bulk apply throttling (#13488)
  • fix(pubsub): install admin mocks (#13537)
  • feat(pubsub): add lease management for unary pull (#13428)
  • feat(storage): support UniverseDomainOption (#13471)
  • docs(GCS+gRPC): better comments for AsyncConnection (#13424)
  • feat: support UniverseDomainOption in gRPC IAM stub (#13466)
  • feat: simplify Bazel initialization (#13411)

v2.20.0 - 2024-01

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • feat(aiplatform): add new service proto file (#13325)
  • fix(bigtable): use FQDN (#13305)
  • feat(otel): capture gRPC response metadata in traces (#13278)
  • fix(pubsub): get future value before returning (#13241)
  • fix(pubsub): pass by reference explicitly (#13220)
  • fix(common): returnable argument to .then() (#13316)
  • feat(common): read-write streaming RPCs metadata (#13228)
  • fix: respect logging format env var in compute, sql (#13368)

v2.19.0 - 2023-12

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • feat(bigtable): throttling for AsyncBulkApply (#13203)
  • fix(bigtable): async context propagation for tracing (#13156)
  • feat(bigtable): support BulkApply throttling (#13124)
  • feat(otel): add Makefile (#13177)
  • fix(otel): detach context when single-threaded (#13154)
  • fix(otel): reconnect async traces (e.g. LROs) (#13147)
  • feat: add PG.OID type (#13127)
  • feat(spanner): control replicas/regions used in non-transactional reads (#13031)
  • feat(aiplatform): generate new services (#13150)
  • fix(common): use FQDN for the metadata service (#13139)
  • feat(common): add GrpcCompressionAlgorithmOption (#13108)
  • doc: fix cliffhanger (#13033)

v2.18.0 - 2023-11

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • fix(compute): RegionSecurityPoliciesClient::PatchSecurityPolicy added update_mask field.

New CloudRedisClusterClient.

  • doc(otel): add packaging instructions (#13005)
  • fix(otel): end async client spans properly (#12919)
  • fix(otel): support abseil <= 20210324 (#12993)
  • feat(spanner): single-RPC, batched commit of mutation groups (#12930)
  • feat(common): mock for AsyncStreamingReadWriteRpc (#12950)
  • fix(common): missed using CARootsFilePathOption (#12997)
  • fix(generator): do not override default sleeper in streaming-read RPCs (#12920)

Other Changes

  • fix(oauth2): only enable via GOOGLE_CLOUD_CPP_ENABLE (#12911) When compiling with CMake, the oauth2 used to be automatically enabled if GOOGLE_CLOUD_CPP_REST was manually enabled or enabled by a separate library. That made it impossible to shard a build with separate builds for oauth2, storage and compute.

v2.17.0 - 2023-10

  • fix(compute): build with Bazel and MSVC (#12877)
  • fix(compute): usable in external Bazel projects (#12864)
  • fix(compute): add missing bazelrc file (#12856)
  • feat(storage): another Bucket CRUD field (#12842)
  • fix(storage): fix tellg() values (#12844)
  • fix(storage): check ReadObject options at runtime (#12841)
  • feat(storage): MatchGlob for ListObjects() (#12840)
  • doc(storage): describe default project search (#12833)
  • fix(oauth2): do not require id_token in creds (#12867)

Other Changes

We have stopped testing with GCC 7.5.0 on openSUSE/Leap: this distro uses GCC 7.5.0 by default. This specific version of GCC crashes when compiling some of the files generated by Protobuf 24.x. In other distros we test with GCC 7.3, without problems. And we also test with newer versions of GCC without problems. The exact files that cause the compiler to crash seem to change with minor changes in Protobuf or the input .proto files, making it difficult to maintain some kind of exclusion list.

We have stopped testing with GCC 7.5.0 on openSUSE/Leap, and recommend you use GCC >= 8 to compile google-cloud-cpp. If you must compile with GCC 7.5.0, consider only enabling the libraries you will need.

v2.16.0 - 2023-10

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

New *Client for conversational search.

  • feat(oauth2): add quickstart, README, etc. (#12754)

We instrumented the Google Cloud C++ libraries for distributed tracing using OpenTelemetry. All client libraries are instrumented in some capacity.

Features to enable the collection and export of these traces are now GA. See the quickstart within the library to learn more about these tools.

Remove PoliciesClient. This client was placed in the wrong library. The correct location is google/cloud/iam/v2.

  • fix(storage): trace auth when default credentials are assumed (#12672)
  • docs(storage): more on InsertObject vs. WriteObject (#12577)
  • feat(common): new *Option to configure HTTP proxy (#12766)
  • fix: export headers with top-level Bazel targets (#12762)
  • fix: gRPC auth logging enabled by "auth" (#12702)
  • fix: add implicit routing in GAPICs (#12544)

Known issues

Compiling gRPC with Bazel and Clang >= 16 requires --features=-layering_check in your Bazel command-line. For more details, see grpc#34482.

v2.15.0 - 2023-09

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Cloud IoT

The Cloud IoT Core service has been shutdown. We removed the corresponding C++ client library as it is no longer usable.

Parts of the BeyondCorp API are restricted to only existing customers and will be decommissioned. No C++ customers are affected, so we are removing the unusable components from the C++ libraries. More information in the BeyondCorp announcement.

We expanded the library to include the v2 version of the API.

We expanded the library to include the v2 version of the API.

  • fix(pubsub): url encode routing params on publish (#12454)
  • feat(pubsub): increase backoff from 1.3 to 4.0 (#12306)
  • feat(spanner): enable leader aware routing by default (#12319)
  • fix(storage): tracing should decorate retries (#12314)
  • fix: URL encode explicit routing values (#12493) (#12447)
  • feat(common): add Options::set<>() && overload (#12424)
  • fix(common): gRPC alarms require more locking (#12406)
  • feat(common): retry loops preserve original message (#12368)
  • feat(otel): control tracing with environment variable (#11897)
  • docs(otel): troubleshoot exporter doc (#12345)
  • docs(otel): build quickstart with vcpkg (#12324)
  • feat(common): retry loops signal via error info (#12313)
  • fix(common): handle expired policies in *RetryLoop (#12301)

Other Changes

Bazel Testing: from v2.15.0 we will only test with Bazel >= 6.0.0. We do not consider this a breaking change, as Bazel 5.x has been in maintenance mode for more than 6 months.

CMake Proto Libraries: We only compile service-specific protos if the corresponding client library is enabled, via -DGOOGLE_CLOUD_CPP_ENABLE=....

This change reduces build times for customers who use CMake but who are not using all of the client libraries listed below.

We considered it a bug that customers building with CMake were forced to compile large proto libraries that they did not need. It was certainly confusing.

Any change in behavior, including fixing bugs, can be considered "breaking". By policy we don't consider bug fixes to be breaking changes. We applied that policy in this case.

The impacted libraries are:

  • bigquery
  • bigtable
  • dialogflow_es
  • iam
  • logging
  • pubsub
  • speech
  • storage
  • texttospeech
  • trace

If you are dependent on any of these proto libraries and you are not compiling the corresponding client library, you will need to update your build scripts.

For example, if you depend on google_cloud_cpp_speech_protos (e.g., if you have been using this library to make calls to Cloud Speech using raw gRPC), add -DGOOGLE_CLOUD_CPP_ENABLE=...,speech,... to your CMake configure command. If you build with vcpkg, include speech in your install command.

Note that google_cloud_cpp_storage_protos are associated with the experimental-storage_grpc feature, not the storage feature.

v2.14.0 - 2023-08

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • docs(bigtable): document DataRetryPolicy (#12040)
  • feat(bigtable): reverse scans (#12022)

The library has been expanded to include the Reporting API.

  • feat(cloudbuild): promote 2nd gen (repositories) API to GA (#12236)

The library has been expanded to include the 2nd gen API.

The library has been expanded to include the Snooze API.

The library has been expanded to include the Job Executions API.

The library has been expanded to include the Zonal OS Config API.

  • feat(datacatalog): promote datalineage to GA (#12271)

The library has been expanded to include the Node Groups API.

The library has been expanded to include the Log-based Metrics API and the Log Router API.

  • docs(pubsub): add cloud storage subscription sample (#12088)
  • docs(pubsub): add unwrapped subscription sample (#12090)
  • docs(pubsub): add a subscriber quickstart (#12053)
  • docs(pubsub): document RetryPolicy interface (#12030)

The library has been expanded to include new services.

The library has been expanded to include the Tags API.

  • feat(spanner): samples for bit-reversed sequence (#12280)
  • doc(spanner): mark obsolete Spanner options classes as deprecated (#12256)
  • doc(spanner): Improve documentation for ActionOnExhaustion (#12238)
  • doc(spanner): add documentation/sample for TransactionRerunPolicy (#12140)
  • feat(spanner): tests and samples for foreign-key delete cascade (#12122)
  • docs(spanner): document RetryPolicy interface (#12037)

The library has been expanded to include the Model Adaptation API.

  • docs(storage): document RetryPolicy interface (#12031)
  • fix(common): add missing library on Windows (#12103)
  • fix(common): avoid run-time conflicts on Windows (#12105)
  • feat(oauth2): new library to create oauth2 tokens (#12064)
  • feat: support split packages (#12049)

v2.13.0 - 2023-07

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • docs: an example to extract Cloud Batch logs (#11935)
  • docs(batch): introduce basic snippets (#11915)
  • doc(spanner): add an example for CommitAtLeastOnce() (#11905)
  • feat(spanner): implement at-least-once Commit (#11899)
  • feat(generator): separate page for retry policy overrides (#11950)
  • fix(common): pagination must support empty pages (#11937)
  • feat(generator): create retry policy samples (#11930)
  • fix(common): use 64-bit API on Windows to get file sizes (#11906)

v2.12.0 - 2023-06

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Cloud Debugger

The Cloud Debugger service (aka Stackdriver Debugger API) has been shutdown. The corresponding client library has been removed.

This library has been expanded to include the BigLake API (#11882)

  • docs: use c.g.com/cpp mocking guide (#11869)
  • docs: link reference docs at c.g.c/cpp/docs/reference (#11799)
  • fix(generator): correct URL for reference docs (#11765)

v2.11.0 - 2023-06

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • docs(bigtable): async Table APIs are stable (#11711)
  • doc(bigtable): deprecate DataClient in doxygen (#11550)

The library has been re-enabled on Windows. See #11714 for details.

  • docs(spanner): some documentation tweaks (#11641)
  • feat(spanner): tests and samples for drop-database protection (#11637)
  • feat(spanner): make ResultSourceInterface public (#11636)
  • fix(storage): consistent project id overrides (#11754)
  • feat(storage): better error messages in signed URLs (#11741)
  • feat(storage): offer mock client without decorators (#11697)
  • feat(storage): lazy allocation for upload buffer (#11633)

The library has been re-enabled on macOS. See #8785 for details.

  • feat: use full jitter exp backoff policy in the generator (#11748)
  • feat: add new constructor for exponential backoff policy (#11650)
  • feat: avoid development dependencies with Bazel (#11724)
  • docs(common): better exception descriptions (#11705)
  • fix(rest): support rewinds in libcurl (#11703, #11709)
  • fix: workaround curl_multi_poll returning an error on EINTR (#11649)
  • docs(common): improve StatusOr<> documentation (#11631)
  • fix: Correct exponential backoff ranges (#11529)
  • fix: patch releases do not change the ABI (#11499)
  • fix(rest): missing user-agent separator (#11473)

v2.10.0 - 2023-05

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

The following experimental libraries are now available:

  • Removed bigquery/v2/model*. There are no plans to implement gRPC endpoints for this service. Therefore the generated code will never be usable and never has been.

The library has been expanded to include the v2 service.

  • fix(spanner): propagate Options through SessionPool callbacks (#11344)
  • fix(storage): cache legacy credentials (#11271)
  • fix(storage): support per-request options (#11445)
  • fix(storage): cache all credential types (#11447)
  • doc: declutter main.dox pages (#11405)
  • doc(common): documentation improvements (#11376)

Other Changes

Bazel Testing: after v2.10.0 we will only test with Bazel >= 5.4.0. We do not consider this a breaking change, as Bazel 4.x has been in maintenance mode for several months.

v2.9.0 - 2023-04

The library has been expanded to include the Cloud Build repositories (2nd gen) API. Note that the client is tagged as experimental, because the service is still in preview.

The library has been expanded to include the v1 service.

  • fix(iam): override idempotency on idempotent POST methods (#11045)
  • feat(spanner): add the final pieces for the RouteToLeaderOption (#11112)
  • feat(spanner): support "data boost" on partitioned queries and reads (#10998)
  • feat(storage): reduce copies in InsertObject() (#11014)
  • feat: consume less entropy for PRNG (#11102)
  • feat(mocks): provide access to call options in client tests (#11050)

Testing

We have stopped testing with MSVC 2017. Microsoft stopped mainstream support for MSVC 2017 in 2022-04. We continue to test with MSVC 2022 and MSVC 2019. We recommend that you update to one of these versions to use more recent versions of the google-cloud-cpp libraries. Note that, in accordance with Google's Foundational C++ support policy, the other Google libraries have stopped (or shortly will stop) testing with MSVC 2017.

v2.8.0 - 2023-03

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • fix(bigtable): retries for CheckConsistency / AsyncWaitForConsistency (#10955)
  • docs(bigtable): clean up CreateTable sample (#10844)
  • feat(datacatalog): generate lineage library (#10977)

The library has been expanded to include the KMS Inventory API.

  • fix(pubsub): no warnings on ack()/nack() success (#10920)
  • fix(pubsub): fewer default threads for 32-bit builds (#10793)

The library has been expanded to include the TPU v2 API.

We have introduced versioned clients for many services. The version is that of the GCP service. While this naming convention is more verbose, it allows us to support clients for multiple versions of a GCP service from within the same library (e.g. speech_v1::SpeechClient and speech_v2::SpeechClient). See #10170 for more details.

  • fix: retries for GetIamPolicy, TestIamPermissions (#10957)
  • doc: improve description for "terminate" group (#10950)
  • fix(common): fewer spurious warnings in the log (#10811)

v2.7.0 - 2023-02

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • Replaced the wrappers for google.pubsub.v1.SchemaServiceClient with automatically generated code. Our telemetry indicates that there are no C++ applications using this code, and therefore we do not consider this a breaking change.
  • fix reference links in documentation (#10687, #10684)
  • fix: interface proto libraries work with older CMake (#10636)
  • fix(common): missing Abseil deps in pkgconfig (#10616)
  • doc: declutter generated README files (#10562)
  • doc(common): in-depth guide for StatusOr (#10555)
  • doc: remove boilerplate from landing page snippet (#10537)
  • doc(common): use real Doxygen groups (#10504)
  • fix(generator): correct doxygen comments (#10500)

v2.6.0 - 2023-01

The library has been expanded to include the following services:

The library has been expanded to include the IAM v2 API. This API includes support for IAM Deny policies.

  • fix: add missing includes (#10421)
  • fix: remove duplicate protos (#10486)
  • fix(storage): better error code for CreateBucket() and 409 errors (#10480
  • fix: add missing includes (#10421)
  • fix(storage): scopes should disable self-signed JWTs (#10369)
  • doc(storage): document all oauth2 names as deprecated (#10352)
  • fix: remove duplicate protos (#10486)
  • fix: remove duplicate protos (#10486)
  • fix: add missing includes (#10421)
  • feat(common): support external accounts (#10465) (#10430) (#10357)
  • feat(common): options for Make*Credentials() (#10417)
  • feat: support logging for unified Rest credentials (#10412)

v2.5.0 - 2022-12

NOTE

  • feat!: We have dropped the experimental marker from bidirectional streaming APIs (#10340). The APIs in question are:
    • bigquery::BigQueryWriteClient::AsyncAppendRows()
    • dialogflow_cx::SessionsClient::AsyncStreamingDetectIntent()
    • dialogflow_es::ParticipantsClient::AsyncStreamingAnalyzeContent()
    • dialogflow_es::SessionsClient::AsyncStreamingDetectIntent()
    • logging::LoggingServiceV2Client::AsyncTailLogEntries()
    • speech::SpeechClient::AsyncStreamingRecognize()

If you use any of these APIs, you must drop the ExperimentalTag in your code, accordingly.

New Libraries

We are happy to announce the following GA library. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

  • samples(bigtable): build admin samples with cmake (#10246)
  • doc(bigtable): create page for configuration options (#10197)
  • feat(logging): generate AsyncWriteLogEntries() (#10194)
  • feat(pubsub): add option to override subscription (#10327)
  • feat(pubsub): blocking pulls (#10317)
  • doc(pubsub): create page for configuration options (#10198)
  • doc(spanner): deprecate old MakeConnection() overloads (#10284)
  • fix(spanner): tweak the tag name of a FGAC sample (#10266)
  • samples(spanner): build admin samples with cmake (#10247)
  • feat(spanner): tests and samples for DML RETURNING (#10233)
  • doc(spanner): create page for configuration options (#10199)
  • feat(speech): generate speech v2 (#10228)
  • doc(storage): create page for configuration options (#10200)
  • doc: another pass on authentication components (#10300)
  • fix(common): create default gRPC credentials only if needed (#10280)
  • doc: group client functions (#10268)
  • doc: use qualified client name in samples (#10241)
  • fix(common): avoid globals for easier DLLs (#10212)
  • feat: support a pre-release component of the version string (#10181)
  • doc(common): add Doxygen group for common options (#10192)
  • doc(common): add overview section (#10193)
  • doc: better guidance for authentication samples (#10184)

v2.4.0 - 2022-11

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

In addition, these existing libraries are now GA:

  • doc: add endpoint override snippets to generated libs (#10129)
  • feat(bigquery): add migration service (#10034)
  • doc(bigtable): add *Client samples (#10149)
  • feat(bigtable): support GOOGLE_CLOUD_ENABLE_DIRECT_PATH (#9978)
  • doc: add endpoint override snippets to generated libs (#10129)
  • doc(pubsub): samples for endpoint and auth (#10136)
  • feat(pubsub): install pubsub_mocks pkg (#10008)
  • feat(pubsub): implement blocking publisher (#10055)
  • feat(pubsub): implement per-call options for Subscriber (#10043)
  • fix(pubsub): limit ModifyAckDeadlineRequest size (#10032)
  • fix(pubsub): faster shutdowns for Publisher (#9991)
  • doc(spanner): add *Client samples (#10145)
  • feat(spanner): add support for RowStream::RowsModified() (#10102)
  • feat(spanner): support for the PG.JSONB data type (#10098)
  • doc(storage): common initialization examples (#10107)
  • fix(rest): too many debug headers (#10054)
  • fix(rest): return complete payloads for errors (#10051)
  • feat(storage): support Autoclass feature (#10003)
  • feat(storage): faster InsertObject() uploads (#9997)
  • fix(storage): respect MIME message boundary size limits (#9965)
  • feat(generator): generate authentication example (#10138)
  • doc: workaround Doxygen formatting quirk (#10137)
  • doc: add endpoint override snippets to generated libs (#10129)
  • feat(generator): generate simple samples for *Client (#10118)
  • feat: add mock library w/ StreamRange (#9998)
  • doc(common): make authentication docs easier to find (#10110)
  • fix: configure context in async retries (#10100)
  • doc: document when GrpcNumChannelsOption applies (#10000)
  • feat(generator): make idempotency policy non-abstract (#9981)
  • fix(common): preserve ErrorInfo on retry errors (#9971)

v2.3.0 - 2022-10

New Libraries

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

The library has been expanded to include Analytics Hub, an API that facilitates data sharing within and across organizations. (#9882)

  • fix(spanner): remove session from pool upon "not found" refresh failure (#9954)
  • feat(spanner): add support for Customer Managed Multi-Region (CMMR) read-only replicas at instance creation time (#9872)
  • feat(storage): easier mocks for HmacKeyMetadata (#9949)
  • feat(storage): easier mocks for *AccessControl (#9910)
  • feat(storage): easier mocks with ObjectMetadata (#9899)
  • fix(storage): decay type before testing supported-options membership (#9893)
  • feat(storage): easier mocks with BucketMetadata (#9886)
  • fix(storage): error message for resumable uploads (#9855)
  • feat(storage): release *StallMinimumThroughputOption (#9813)
  • fix(storage): no workaround needed with libc++ and MSVC (#9768)
  • fix(common): better defaults for curl initialization (#9798)

v2.2.0 - 2022-09

New Libraries

We are introducing new client libraries for GCP services. While we do not anticipate any API changes to these libraries before declaring them GA, we are releasing them early in case they elicit some feedback that requires changes.

We are happy to announce the following GA libraries. Unless specifically noted, the APIs in these libraries are stable, and are ready for production use.

Expand to see the full list of new GA libraries...
  • fix(bigtable): DataConnection refreshes channels (#9718)
  • fix(bigtable): Use retry policy on all streams with failing mutations (#9706)
  • feat(bigtable): per-operation Options (#9627) (#9623)
  • feat(dataproc): mark the dataproc services as location dependent (#9722)
  • feat(spanner): fine-grained access control (#9669)
  • feat(spanner): equality for copyable classes (#9648)
  • We have a new implementation for HTTP requests. This new implementation provides comparable download performance, and improves some uploads. See #9659 for details. We have rigorously tested this new implementation. In the unlikely event that this new implementation breaks your application, we have included an environment variable to revert to the legacy implementation. Set GOOGLE_CLOUD_CPP_STORAGE_USE_LEGACY_HTTP to any value to use the legacy implementation. We are planning to remove the legacy code and the GOOGLE_CLOUD_CPP_STORAGE_USE_LEGACY_HTTP environment variable by 2022-12.
  • feat(storage): improve error messages on stalled uploads (#9744)
  • feat(storage): equality for Native IAM types (#9649)
  • feat(storage): SA credentials default to self-signed JWTs (#9629)
  • feat: group GUAC Options in an OptionsList (#9643)
  • fix(rest): cache credentials (#9620)
  • doc: add table of contents to landing page (#9671)

v2.1.0 - 2022-08

New Libraries

We are introducing new client libraries for GCP services. While we do not anticipate any API changes to these libraries before declaring them GA, we are releasing them early in case they elicit some feedback that requires changes.

  • fix(assuredworkloads): reenable on windows (#9467)
  • fix(bigtable): the mocks library is no longer header-only (#9568)
  • fix(asset): reenable on macOS (#9468)
  • fix(pubsub): missing subscription name in lease extensions (#9523)
  • feat(pubsub): exactly-once delivery (#9436)
  • fix(spanner): avoid evaluation-order issue in function arguments (#9452)
  • doc(debugger): announce deprecation (#9552)
  • feat(storage): experimental options to tune stall timeouts (#9593)
  • feat(storage): add debugging headers to ObjectWriteStream (#9580)
  • fix(storage): no char for std::uniform_int_distribution (#9509)
  • feat(storage): support Bucket custom placement config (#9481)
  • feat(common): make the RPC log even more readable (#9561)
  • feat: improve error messages for access token errors (#9485)
  • feat(common): make the RPC log even more readable (#9477)

v2.0.0 - 2022-07

BREAKING CHANGES

As previously announced, google-cloud-cpp now requires C++ >= 14. This is motivated by similar changes in our dependencies, and because C++ 14 has been the default C++ version in all the compilers we support for several years.

We think this change is large enough that deserves a major version bump to signal the new requirements.

If you are already using C++ >= 14 you need to make no changes. If you are using C++11: please consider updating as soon as possible. To ease your transition to C++ >= 14 we will, if requested, backport critical fixes to v1.42.0 until 2023-07-01. After 2023-07-01 we will drop all support to v1.42.0 and earlier versions.

Debian 9 (Stretch) is EOL

Debian 9 (Stretch) reached EOL on 2022-06-30. Therefore, we have stopped testing or supporting this distribution. This was the last distribution we supported that required GCC < 7.3, and/or CMake < 3.10. Starting with this release we require CMake >= 3.10, and only test with GCC >= 7.3.

OTHER CHANGES

We introduced a new constructor for Table which accepts a DataConnection instead of a DataClient. The DataConnection is a new interface that more closely matches the client surface of Table. Read more about *Connection classes in our Architecture Design document.

What are the benefits of DataConnection?

The new API greatly simplifies mocking. Every Table::Foo(..) call has an associated DataConnection::Foo(...) call. This allows you to set expectations on the exact values returned by the client call. See Mocking the Cloud Bigtable C++ Client for a complete example on how to mock the behavior of Table with bigtable_mocks::MockDataConnection.

The new DataConnection API offers more consistency across our libraries. It also enables the use of some common library features, such as our UnifiedCredentialsOption. Also, any new features will be added to the DataConnection API first.

Do I need to update my code?

No. If the benefits are not appealing enough, you do not need to update your code. All code that currently uses DataClient will continue to function as before. This includes uses of testing::MockDataClient.

However, if you are using testing::MockDataClient to mock the behavior of Table in your tests:

  1. Be aware that we have announced our intention to remove classes derived from DataClient on or around 2023-05. Your tests will break then.
  2. Please consider using bigtable_mocks::MockDataConnection. It will greatly simplify your tests.

How do I update existing DataClient code?

See Migrating from DataClient to DataConnection.

  • doc(bigtable): how to mock the Data API (#9415)
  • feat(bigtable): modern Table constructor (#9403)
  • feat(generator): support explicit routing headers (#9368)
  • fix(bigtable)!: pass app profile id to connection as options (#9388)
  • feat(bigtable): add AppProfileIdOption (#9382)
  • feat(bigtable): table resource name as a class (#9377)
  • feat(bigtable): instance name as a class (#9374)
  • feat(bigtable): introduce MockDataConnection and MakeTestRowReader (#9335)
  • feat(bigtable): introduce DataConnection (#9323)
  • feat(bigtable): modern Data API policy options (#9320)
  • doc(pubsub): improve documentation for *AckHandler (#9404)
  • feat(pubsub): update subscription builders (#9326)
  • fix(generator): handle explicit routing params for nested fields (#9408)
  • feat(common): truncation support for plain strings in the RPC log (#9351)

New Libraries

We are introducing a new client library. While we do not anticipate any API changes to this library before declaring it GA, we are releasing it early in case it elicits some feedback that requires changes.