diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c43724d12628..43b10be550372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2208 +1,21 @@ # Changelog -**NOTE**: Please refer to the [V3 Migration Guide](/doc/v3-migration-guide.md) -for details on updating existing applications using v1.x.y or v2.x.y. - -**NOTE**: [Future Breaking Changes](/doc/deprecated.md) lists anticipated -breaking changes in the upcoming 3.x release. This release is scheduled for -2024-12 or 2025-01. - -## v2.46.0 - TBD - -## v2.45.0 - 2025-12-17 - -### 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 Maintenance API](/google/cloud/maintenance/README.md) - -### [Pubsub](google/cloud/pubsub/README.md) - -- fix(pubsub): impersonate sa credentials CompletionQueue lifetime ([#15833](https://github.com/googleapis/google-cloud-cpp/pull/15833)) - -### [Storage](google/cloud/storage/README.md) - -- fix(storage): append object spec should only be set in the first request ([#15831](https://github.com/googleapis/google-cloud-cpp/pull/15831)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-12-11T12:53:16-08:00](https://github.com/googleapis/googleapis/tree/05f65958eb7f2a8bc59db87ad40487f0fb093097) - -## v2.44.0 - 2025-12 - -### [BigQueryControl](google/cloud/bigquerycontrol/README.md) -- !fix(bigquerycontrol): PatchRoutine RPC has been removed. - -### [Bigtable](/google/cloud/bigtable/README.md) - -- Support for ([GoogleSQL](https://docs.cloud.google.com/bigtable/docs/googlesql-overview)) has been added to the Bigtable library. Please see the new ([bigtable::Client](https://docs.cloud.google.com/cpp/docs/reference/bigtable/latest/classgoogle_1_1cloud_1_1bigtable_1_1Client)) class for more details. - -### [Spanner](/google/cloud/spanner/README.md) - -- fix(spanner): Do not compare iterators from different containers ([#15665](https://github.com/googleapis/google-cloud-cpp/pull/15665)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): always use latest write handle for fast resume in gRPC BidiWriteObject ([#15795](https://github.com/googleapis/google-cloud-cpp/pull/15795)) -- feat(storage): add support for partial list bucket ([#15763](https://github.com/googleapis/google-cloud-cpp/pull/15763)) -- fix(storage): Add start appendable condition for bypassing full object checksum ([#15786](https://github.com/googleapis/google-cloud-cpp/pull/15786)) -- feat(storage): add GrpcMetricsExcludedLabelsOption for gRPC metrics label filtering ([#15735](https://github.com/googleapis/google-cloud-cpp/pull/15735)) -- fix(storage): enable fast resume for rapid object write streams by including write handle ([#15762](https://github.com/googleapis/google-cloud-cpp/pull/15762)) -- feat(storage): add configurable metrics export timeout for GCS gRPC Client ([#15629](https://github.com/googleapis/google-cloud-cpp/pull/15629)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(credentials): add support for creating ComputeEngine credentials explicitly ([#15789](https://github.com/googleapis/google-cloud-cpp/pull/15789)) -- feat: Support scopes field in impersonated json ([#15675](https://github.com/googleapis/google-cloud-cpp/pull/15675)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-11-27T07:02:42Z](https://github.com/googleapis/googleapis/tree/8cd3749f4b98f2eeeef511c16431979aeb3a6502) - -## v2.43.0 - 2025-10 - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): fixing flushing and finalization in buffered upload of async client ([#15572](https://github.com/googleapis/google-cloud-cpp/pull/15572)) -- feat(storage): Add samples related to AppendableObject and OpenObject ([#15563](https://github.com/googleapis/google-cloud-cpp/pull/15563)) -- feat(storage): Expose Flush() in AsyncWriter ([#15555](https://github.com/googleapis/google-cloud-cpp/pull/15555)) -- fix(storage): Fix Resume() to use append_object_spec instead of write_object_spec for resumed appendable uploads ([#15558](https://github.com/googleapis/google-cloud-cpp/pull/15558)) -- fix(storage): Increase AsyncWriter default MinLwmValue to avoid frequent flushes ([#15552](https://github.com/googleapis/google-cloud-cpp/pull/15552)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-10-03T13:49:30-07:00](https://github.com/googleapis/googleapis/tree/2193a2bfcecb92b92aad7a4d81baa428cafd7dfd) - -## v2.42.0 - 2025-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 Security Compliance](/google/cloud/cloudsecuritycompliance/README.md) -- [Config Delivery API](/google/cloud/configdelivery/README.md) - -### Updated Libraries - -- [Network Connectivity](/google/cloud/networkconnectivity/README.md) - added support for DataTransferService ([#15464](https://github.com/googleapis/google-cloud-cpp/pull/15464)) - - -### [Spanner](/google/cloud/spanner/README.md) - -- perf(spanner): Use arenas to speed up queries that fetch many rows ([#15441](https://github.com/googleapis/google-cloud-cpp/pull/15441)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): Remove unnecessary code which was causing race condition ([#15551](https://github.com/googleapis/google-cloud-cpp/pull/15551)) -- feat(storage): Update the appendable object function to store the Object metadata ([#15422](https://github.com/googleapis/google-cloud-cpp/pull/15422)) -- feat(storage): Add generation in append_object_spec in resume operation ([#15395](https://github.com/googleapis/google-cloud-cpp/pull/15395)) - -### [Common Libraries](/google/cloud/README.md) - -- perf: Change StreamingReadRpc::Read interface to take ResponseType ([#15319](https://github.com/googleapis/google-cloud-cpp/pull/15319)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-09-05T15:58:06-07:00](https://github.com/googleapis/googleapis/tree/46403a9acec0719c130b33eb38b2ee62a45f9f6c) - -## v2.41.0 - 2025-08-14 - -### [Bigtable](/google/cloud/bigtable/README.md) - -- The `Bigtable::DataConnection` class has been instrumented to collect [Client Side Metrics](https://cloud.google.com/bigtable/docs/client-side-metrics), -free of charge. These metrics will be collected by -default if both the [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-cpp) -and [Google Cloud Monitoring](google/cloud/monitoring/README.md) dependencies are -available. Users can opt-out by setting the `bigtable::EnableMetricsOption` to `false`. - -- The following metrics are available in Bigtable: - - AttemptLatency - - OperationLatency - - RetryCount - - FirstResponseLatency - - ServerLatency - - ApplicationBlockingLatency - - ConnectivityErrorCount - -### [Spanner](/google/cloud/spanner/README.md) - -- [Multiplexed session](https://cloud.google.com/spanner/docs/sessions#multiplexed_sessions) -support is now available. To enable Multiplexed sessions, add the -`spanner::EnableMultiplexedSessionOption` to `Options` when calling -`spanner::MakeConnection`. This enables Multiplexed sessions on all operations -read-only, read-write, and partitioned. - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-07-30T06:44:36-07:00](https://github.com/googleapis/googleapis/tree/f6801ce4e1df0541abb8d1e996cb36363c41fb8d) - -## v2.40.0 - 2025-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. - -- [License Manager API](/google/cloud/licensemanager/README.md) - -### Updated Libraries - -- [BigQuery](/google/cloud/bigquery/README.md) - added support for datapolicies/v2 -- [ManagedKafka](/google/cloud/managedkafka/README.md) - add schemaregistry to the library - -### [Bigtable](/google/cloud/bigtable/README.md) - -- We have begun instrumenting the `Bigtable::DataConnection` class to collect -several [Client Side Metrics](https://cloud.google.com/bigtable/docs/client-side-metrics), -free of charge. These metrics will be collected by -default if both the [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-cpp) -and [Google Cloud Monitoring](google/cloud/monitoring/README.md) dependencies are -available. Users can opt-out by setting the `bigtable::EnableMetricsOption` to `false`. - -- The following metrics are available in Bigtable: - - AttemptLatency - - OperationLatency - - RetryCount - - FirstResponseLatency - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add support for order_by enum ([#15240](https://github.com/googleapis/google-cloud-cpp/pull/15240)) -- feat(spanner): add support for lock_hint enum ([#15249](https://github.com/googleapis/google-cloud-cpp/pull/15249)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): Create OTel tracing decorator for `storage:: ParallelUploadFile()` ([#15289](https://github.com/googleapis/google-cloud-cpp/pull/15289)) -- fix(storage): Fix the bucket name not found error ([#15274](https://github.com/googleapis/google-cloud-cpp/pull/15274)) -- feat(storage): Create OTel tracing decorator for `Client::UploadFile()` ([#15245](https://github.com/googleapis/google-cloud-cpp/pull/15245)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-07-30T06:44:36-07:00](https://github.com/googleapis/googleapis/tree/f6801ce4e1df0541abb8d1e996cb36363c41fb8d) - -## v2.39.0 - 2025-07 - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): Link traces between Open and ReadRange traces. ([#15236](https://github.com/googleapis/google-cloud-cpp/pull/15236)) -- feat(storage): Add check for writeHandle before transforming write_object_spec to append_object_spec ([#15224])(https://github.com/googleapis/google-cloud-cpp/pull/15224)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-07-03T11:36:10-07:00](https://github.com/googleapis/googleapis/tree/f9d6fe4a6ad9ed89dfc315f284124d2104377940) - -## v2.38.0 - 2025-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. - -- [Dataform API](/google/cloud/dataform/README.md) -- [Google Cloud Managed Lustre API](/google/cloud/lustre/README.md) -- [Memorystore API](/google/cloud/memorystore/README.md) -- [Oracle Database@Google Cloud API](/google/cloud/oracledatabase/README.md) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- feat(pubsub): add MakeConnection overloads to support regional and locational endpoints ([#15190](https://github.com/googleapis/google-cloud-cpp/pull/15190)) - -### [Storage](/google/cloud/storage/README.md) - -- samples(storage): add the bucket soft delete related tags ([#15154](https://github.com/googleapis/google-cloud-cpp/pull/15154)) -- samples(storage): add samples for soft delete objects ([#15133](https://github.com/googleapis/google-cloud-cpp/pull/15133)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(resourcemanager): add Connection factory function for regional endpoints ([#15189](https://github.com/googleapis/google-cloud-cpp/pull/15189)) -- samples(storagecontrol): add samples for anywhere cache ([#15134](https://github.com/googleapis/google-cloud-cpp/pull/15134)) -- fix: Bypass proxy for GCE metadata server requests - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-06-04T16:36:46-07:00](https://github.com/googleapis/googleapis/tree/de157ca34fa487ce248eb9130293d630b501e4ad) - -## v2.37.0 - 2025-05 - -**BREAKING CHANGES** - -Client library `resourcesettings` is being removed because the service has been turned down. - -### 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. - -- [Financial Services API](/google/cloud/financialservices/README.md) -- [Storage Batch Operations API](/google/cloud/storagebatchoperations/README.md) -- [Device Streaming API](/google/cloud/devicestreaming/README.md) -- [Chronicle API](/google/cloud/chronicle/README.md) - -### Updated Libraries - -- [iam](/google/cloud/iam/README.md) - add v3 version of the library - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add spanner::Value support for TypeCode::INTERVAL ([#15094](https://github.com/googleapis/google-cloud-cpp/pull/15094)) -- feat(spanner): add ISO8601 duration support to spanner::Interval ([#15077](https://github.com/googleapis/google-cloud-cpp/pull/15077)) -- fix(spanner): update session bookkeeping for session NotFound ([#15009](https://github.com/googleapis/google-cloud-cpp/pull/15009)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): Make absl::cord constructor public in write_payload.h ([#15113](https://github.com/googleapis/google-cloud-cpp/pull/15113)) -- feat(storage): Add bidiread and bidi appendable write to the async client. ([#15078](https://github.com/googleapis/google-cloud-cpp/pull/15078)) -- fix: fix bug with customheadersoption ([#15053](https://github.com/googleapis/google-cloud-cpp/pull/15053)) - -### [Common Libraries](/google/cloud/README.md) - -- feat: add option to allow setting CURLOPT_INTERFACE ([#15044](https://github.com/googleapis/google-cloud-cpp/pull/15044)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-05-02T13:03:05-07:00](https://github.com/googleapis/googleapis/tree/079e5305050859d0e3a8c0768611283ee4863c07) - -## v2.36.0 - 2025-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. - -- [Parameter Manager API](/google/cloud/parametermanager/README.md) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-02-27T08:14:18-08:00](https://github.com/googleapis/googleapis/tree/b151ec2ae29c2c955c56784c0ce388b2d8c4a84c) - -## v2.35.0 - 2025-02 - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): Add Pub/Sub ingestion from Kafka samples ([#14954](https://github.com/googleapis/google-cloud-cpp/pull/14954)) - -### [Common Libraries](/google/cloud/README.md) - -- doc: update documentation to point to security best practice ([#14942](https://github.com/googleapis/google-cloud-cpp/pull/14942)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2025-01-28T16:10:24-08:00](https://github.com/googleapis/googleapis/tree/280725e991516d4a0f136268faf5aa6d32d21b54) - -## v2.34.0 - 2025-01 - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- fix(otel): Exporter creating Monitored Resource with task_id for Cloud Run ([#14923](https://github.com/googleapis/google-cloud-cpp/pull/14923)) -- feat(otel): copy service labels into GCM Metric ([#14930](https://github.com/googleapis/google-cloud-cpp/pull/14930)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): add MoveObject functionality to JSON and gRPC ([#14936](https://github.com/googleapis/google-cloud-cpp/pull/14936)) - -## v2.33.0 - 2024-12 - -### [BigQuery Control](/google/cloud/bigquerycontrol/README.md) - - - Has been promoted from an `experimental` library to GA. - -### [Storage](/google/cloud/storage/README.md) - -- docs(storage): Update build instructions for gcs+grpc ([#14833](https://github.com/googleapis/google-cloud-cpp/pull/14833)) - -### [GKE Connect Gateway](/google/cloud/gkeconnect/README.md) - -- fix(gkeconnect): service only supports REST endpoint ([#14897](https://github.com/googleapis/google-cloud-cpp/pull/14897)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-12-13T14:53:44-08:00](https://github.com/googleapis/googleapis/tree/f4eff5440fd07389f820d22d2a55690c6390dc6d) - -## v2.32.0 - 2024-12 - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add samples for MR CMEK ([#14674](https://github.com/googleapis/google-cloud-cpp/pull/14674)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(rest): support generateIdToken in impersonation url ([#14853](https://github.com/googleapis/google-cloud-cpp/pull/14853)) -- feat(rest): support impersonated ADC ([#14815](https://github.com/googleapis/google-cloud-cpp/pull/14815)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-11-28T13:52:13-08:00](https://github.com/googleapis/googleapis/tree/d675ec222c431e3346ba8aaf0027392fe8b3d90c) - -## 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. - -- [ParallelStore API](/google/cloud/parallelstore/README.md) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): Fix region tags for Pub/Sub ingestion from GCS samples ([#14773](https://github.com/googleapis/google-cloud-cpp/pull/14773)) - -### [Storage](/google/cloud/storage/README.md) - -- docs(storage): better suggestion for deprecated API ([#14786](https://github.com/googleapis/google-cloud-cpp/pull/14786)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(oauth2): add support for external account workforce identity ([#14800](https://github.com/googleapis/google-cloud-cpp/pull/14800)) -- feat: API key authentication ([#14779](https://github.com/googleapis/google-cloud-cpp/pull/14779)) -- feat(mixin): generate mixins for libraries ([#14766](https://github.com/googleapis/google-cloud-cpp/pull/14766)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-10-31T11:22:40-07:00](https://github.com/googleapis/googleapis/tree/b7c5b60ee76c4591e32c874978c6cd8231087ed6) - -## v2.30.0 - 2024-10 - -### Updated Libraries - -- [AI Platform API](/google/cloud/aiplatform/README.md) - new - `EvaluationServiceClient` -- [Compute Engine](/google/cloud/compute/README.md) - - `FutureReservationsClient` has been removed as the service is not GA. -- [Dialogflow ES API](/google/cloud/dialogflow_es/README.md) - new - `EncryptionSpecServiceClient` and `GeneratorsClient` - -### [AI Platform API](/google/cloud/aiplatform/README.md) - -- doc(aiplatform): add Vertex AI samples ([#14703](https://github.com/googleapis/google-cloud-cpp/pull/14703)) - -### [KMS](/google/cloud/kms/README.md) - -- `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](https://github.com/googleapis/google-cloud-cpp/pull/14726)) - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- feat(otel): release GCM exporter ([#14693](https://github.com/googleapis/google-cloud-cpp/pull/14693)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- feat(mixin): add manual changes for pubsub and generate mixin code ([#14756](https://github.com/googleapis/google-cloud-cpp/pull/14756)) -- docs(pubsub): Add ingestion from GCS topic creation sample ([#14749](https://github.com/googleapis/google-cloud-cpp/pull/14749)) - -### [Spanner](/google/cloud/spanner/README.md) - -- docs(spanner): Add samples for backup schedule feature APIs ([#14720](https://github.com/googleapis/google-cloud-cpp/pull/14720)) -- docs(spanner): create a few code snippets as examples for using Spanner Graph using cpp ([#14660](https://github.com/googleapis/google-cloud-cpp/pull/14660)) - -### [Storage](/google/cloud/storage/README.md) - -- The gRPC plugin is now GA. The [Using the gRPC plugin][storage-grpc] - 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](https://github.com/googleapis/google-cloud-cpp/pull/14710)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(rest): promote buffer curl reads from to member variable ([#14732](https://github.com/googleapis/google-cloud-cpp/pull/14732)) -- fix: respect `GOOGLE_CLOUD_QUOTA_PROJECT` ([#14684](https://github.com/googleapis/google-cloud-cpp/pull/14684)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-09-24T10:34:24-07:00](https://github.com/googleapis/googleapis/tree/69e9dff10df4fa1e338712d38dc26b46791a6e94) - -## 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. - -- [GKE Connect API](/google/cloud/gkeconnect/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- fix(bigtable): sanitize RowRange proto input ([#14651](https://github.com/googleapis/google-cloud-cpp/pull/14651)) - -### [Compute](/google/cloud/compute/README.md) - -- feat(compute): add missing services instant_snapshots and region_instant_snapshots ([#14647](https://github.com/googleapis/google-cloud-cpp/pull/14647)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): support instance edition ([#14678](https://github.com/googleapis/google-cloud-cpp/pull/14678)) - -### [Common Libraries](/google/cloud/README.md) - -- fix: do not persist the keys loaded from PKCS#12 on Windows ([#14645](https://github.com/googleapis/google-cloud-cpp/pull/14645)) -- fix: no need to link gmock_main in mocks ([#14640](https://github.com/googleapis/google-cloud-cpp/pull/14640)) -- fix: quickstarts build with bazel ([#14633](https://github.com/googleapis/google-cloud-cpp/pull/14633)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-08-30T10:45:43-07:00](https://github.com/googleapis/googleapis/tree/6a474b31c53cc1797710206824a17b364a835d2d) - -## v2.28.0 - 2024-08 - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- fix(otel): avoid infinite trace export loop ([#14612](https://github.com/googleapis/google-cloud-cpp/pull/14612)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(rest): prevent libcurl callback from reading bad address ([#14615](https://github.com/googleapis/google-cloud-cpp/pull/14615)) - -### [Common Libraries](/google/cloud/README.md) - -- docs: update mock LRO tips ([#14609](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Developer Connect API](/google/cloud/developerconnect/README.md) -- [Privileged Access Manager API](/google/cloud/privilegedaccessmanager/README.md) - -The following experimental libraries are now available: - -- [Cloud BigQuery Control API](/google/cloud/bigquerycontrol/README.md) - -This library provides support for the Dataset, Job, Model, Project, Routine, -RowAccessPolicy, and Table REST resources. - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- fix(otel): avoid crashes in tracing wrappers for streams ([#14477](https://github.com/googleapis/google-cloud-cpp/pull/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. - -```bash -build --@io_opentelemetry_cpp//api:with_abseil -``` - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add samples for instance partitions ([#14574](https://github.com/googleapis/google-cloud-cpp/pull/14574)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): reset backoff after partial write ([#14473](https://github.com/googleapis/google-cloud-cpp/pull/14473)) -- feat(storage): single span for `ReadObject()` ([#14435](https://github.com/googleapis/google-cloud-cpp/pull/14435)) -- fix(storage): only backoff before resume attempts ([#14427](https://github.com/googleapis/google-cloud-cpp/pull/14427)) - -### [Common Libraries](/google/cloud/README.md) - -- 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](https://github.com/googleapis/google-cloud-cpp/pull/14565)) -- fix(common): censor Bearer tokens over HTTP/2 ([#14564](https://github.com/googleapis/google-cloud-cpp/pull/14564)) -- fix(common): `json_fwd.h` is not always available ([#14439](https://github.com/googleapis/google-cloud-cpp/pull/14439)) -- fix: workaround missing SHA256 macros in MinGW-w64 ([#14437](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Managed Kafka API](/google/cloud/managedkafka/README.md) - -### Updated Libraries - -- [Discovery Engine](/google/cloud/discoveryengine/README.md): - - `ControlServiceClient` added - - `GroundedGenerationServiceClient` added - - `ProjectServiceClient` added - - `RankServiceClient` added - -### [Bigtable](/google/cloud/bigtable/README.md) - -- docs(bigtable): include admin options ([#14358](https://github.com/googleapis/google-cloud-cpp/pull/14358)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): include admin options ([#14359](https://github.com/googleapis/google-cloud-cpp/pull/14359)) - -### [Spanner](/google/cloud/spanner/README.md) - -- docs(spanner): include admin options ([#14360](https://github.com/googleapis/google-cloud-cpp/pull/14360)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): support object retention ([#14351](https://github.com/googleapis/google-cloud-cpp/pull/14351)) -- feat(storage): buckets with object retention ([#14350](https://github.com/googleapis/google-cloud-cpp/pull/14350)) - -### [StorageControl](/google/cloud/storagecontrol/README.md) - -- samples(storagecontrol): add storagecontrol managed folder samples ([#14356](https://github.com/googleapis/google-cloud-cpp/pull/14356)) -- samples(storagecontrol): add storagecontrol folder samples ([#14332](https://github.com/googleapis/google-cloud-cpp/pull/14332)) - -### [Common Libraries](/google/cloud/README.md) - -- 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](https://github.com/googleapis/google-cloud-cpp/pull/14393)) -- fix(otel): async write stream tracing ([#14394](https://github.com/googleapis/google-cloud-cpp/pull/14394)) -- feat(otel): capture error message in traces (again) ([#14389](https://github.com/googleapis/google-cloud-cpp/pull/14389)) -- doc: document Start and Await methods and mocks ([#14375](https://github.com/googleapis/google-cloud-cpp/pull/14375)) -- fix(otel): async read write stream tracing ([#14379](https://github.com/googleapis/google-cloud-cpp/pull/14379)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-06-24T13:34:42-07:00](https://github.com/googleapis/googleapis/tree/622e10a1e8b2b6908e0ac7448d347a0c1b4130de) - -## 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. - -- [Public Certificate Authority API](/google/cloud/publicca/README.md) - -### Updated Libraries - -- [KMS](/google/cloud/kms/README.md) - new `AutokeyClient` and - `AutokeyAdminClient` - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): add optimistic subscribe example ([#14272](https://github.com/googleapis/google-cloud-cpp/pull/14272)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add Interval justification ([#14123](https://github.com/googleapis/google-cloud-cpp/pull/14123)) -- fix(spanner): correct use of Interval offset in Timestamp addition ([#14121](https://github.com/googleapis/google-cloud-cpp/pull/14121)) -- feat(spanner): add Interval/Timestamp/time-zone operations ([#14120](https://github.com/googleapis/google-cloud-cpp/pull/14120)) - -### [Security Center](/google/cloud/securitycenter/README.md) - -- feat(securitycenter): re-enable on windows ([#14282](https://github.com/googleapis/google-cloud-cpp/pull/14282)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): Respect custom endpoint for SignedUrl ([#14179](https://github.com/googleapis/google-cloud-cpp/pull/14179)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(bazel): do not reference repo name ([#14287](https://github.com/googleapis/google-cloud-cpp/pull/14287)) -- fix(common): support libc++ >= 18.1 ([#14151](https://github.com/googleapis/google-cloud-cpp/pull/14151)) -- fix(common): out of range access in handle cleanup ([#14134](https://github.com/googleapis/google-cloud-cpp/pull/14134)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-05-22T18:51:58-07:00](https://github.com/googleapis/googleapis/tree/30717c0b0c9966906880703208a4c820411565c4) - -## 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](https://learn.microsoft.com/en-us/lifecycle/products/visual-studio-2019). -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][oss-cxx-support], other Google libraries -have stopped (or shortly will stop) testing with MSVC 2019 too. - -### Updated Libraries - -- [AI Platform API](/google/cloud/aiplatform/README.md) - new - `FeatureRegistryServiceClient` and `GenAiTuningServiceClient` -- [Cloud Dataplex API](/google/cloud/dataplex/README.md) - new - `DataScanServiceClient` and `DataTaxonomyServiceClient` -- [Cloud SQL Admin API](/google/cloud/sql/README.md) - several new clients: - - `SqlAvailableDatabaseVersionsServiceClient` - - `SqlEventsServiceClient` - - `SqlIamPoliciesServiceClient` - - `SqlInstanceNamesServiceClient` - - `SqlRegionsServiceClient` -- [Content Warehouse](/google/cloud/contentwarehouse/README.md) - new - `PipelineServiceClient` -- [Dataproc](/google/cloud/dataproc/README.md) - new `SessionControllerClient` - and `SessionTemplateControllerClient` -- [Dialogflow CX API](/google/cloud/dialogflow_cx/README.md) - new - `GeneratorsClient` -- [Discovery Engine](/google/cloud/discoveryengine/README.md) - several new - clients: - - `DataStoreServiceClient` - - `EngineServiceClient` - - `RecommendationServiceClient` - - `SiteSearchEngineServiceClient` -- [Network Connectivity API](/google/cloud/networkconnectivity/README.md) - new - `PolicyBasedRoutingServiceClient` -- [Retail](/google/cloud/retail/README.md) - new `AnalyticsServiceClient` - -### [Datastore](/google/cloud/datastore/README.md) - -- feat(datastore): emulator environment variable ([#14100](https://github.com/googleapis/google-cloud-cpp/pull/14100)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix(pubsub): correctly trace modacks in the unary pull ([#14049](https://github.com/googleapis/google-cloud-cpp/pull/14049)) - -### [Spanner](/google/cloud/spanner/README.md) - -- fix(spanner): avoid absl types in public Interval API ([#14095](https://github.com/googleapis/google-cloud-cpp/pull/14095)) -- feat(spanner): add a representation for the Spanner INTERVAL ([#14059](https://github.com/googleapis/google-cloud-cpp/pull/14059)) -- fix(spanner): delete idle sessions upon SessionPool destruction ([#14012](https://github.com/googleapis/google-cloud-cpp/pull/14012)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): missing include ([#14052](https://github.com/googleapis/google-cloud-cpp/pull/14052)) - -### [Storage Control](/google/cloud/storagecontrol/README.md) - -- docs(storagecontrol): use `GetStorageLayout()` for quickstart ([#14044](https://github.com/googleapis/google-cloud-cpp/pull/14044)) -- docs(storagecontrol): update service title ([#14042](https://github.com/googleapis/google-cloud-cpp/pull/14042)) - -### [Google APIs interface definitions](https://github.com/googleapis/googleapis) - -- This release is based on definitions as of [2024-04-30T21:03:48Z](https://github.com/googleapis/googleapis/tree/5a0ae652df1ef39b7849bf2bd6ba417376ce3204) - -## 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. - -- [App Hub API](/google/cloud/apphub/README.md) -- [Backup and DR Service API](/google/cloud/backupdr/README.md) -- [Sovereign Controls by Partners](/google/cloud/cloudcontrolspartner/README.md) -- [Cloud Storage Control API](/google/cloud/storagecontrol/README.md) is now GA. - -### Updated Libraries - -- [AI Platform API](/google/cloud/aiplatform/README.md) - new - `NotebookServiceClient` and `PersistentResourceServiceClient` -- [Cloud Dataplex API](/google/cloud/dataplex/README.md) - new - `CatalogServiceClient` -- [Network Services API](/google/cloud/networkservices/README.md) - new - `DepServiceClient` -- [SecurityCenter](/google/cloud/securitycenter/README.md) - add v2 version of the library - -### [Bigtable](/google/cloud/bigtable/README.md) - -- fix(bigtable): respect GOOGLE_CLOUD_CPP_OPENTELEMETRY_TRACING ([#13748](https://github.com/googleapis/google-cloud-cpp/pull/13748)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): add kinesis sample ([#13593](https://github.com/googleapis/google-cloud-cpp/pull/13593)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add ExcludeTransactionFromChangeStreamsOption ([#13898](https://github.com/googleapis/google-cloud-cpp/pull/13898)) -- feat(spanner): add spanner::Value support for TypeCode::FLOAT32 ([#13862](https://github.com/googleapis/google-cloud-cpp/pull/13862)) -- feat(spanner): add samples for proto columns ([#13759](https://github.com/googleapis/google-cloud-cpp/pull/13759)) -- feat(spanner): add integration tests for proto columns ([#13756](https://github.com/googleapis/google-cloud-cpp/pull/13756)) -- feat(spanner): add spanner::Value support for ProtoEnum/ProtoMessage ([#13747](https://github.com/googleapis/google-cloud-cpp/pull/13747)) -- feat(spanner): add representations for the Spanner PROTO/ENUM types ([#13743](https://github.com/googleapis/google-cloud-cpp/pull/13743)) -- feat(spanner): add sample for instance-admin managed autoscaler ([#13740](https://github.com/googleapis/google-cloud-cpp/pull/13740)) - -### [Speech](/google/cloud/speech/README.md) - -- fix(speech): enable location specific connections ([#13757](https://github.com/googleapis/google-cloud-cpp/pull/13757)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): preserve full Status in default creds ([#13897](https://github.com/googleapis/google-cloud-cpp/pull/13897)) -- fix(storage): respect `GOOGLE_CLOUD_CPP_OPENTELEMETRY_TRACING` ([#13766](https://github.com/googleapis/google-cloud-cpp/pull/13766)) -- feat(storage): support HNS-enabled buckets ([#13753](https://github.com/googleapis/google-cloud-cpp/pull/13753)) -- feat(storage): support soft delete timestamps ([#13728](https://github.com/googleapis/google-cloud-cpp/pull/13728)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(common): introduce `FieldMaskOption` ([#13936](https://github.com/googleapis/google-cloud-cpp/pull/13936)) -- docs(common): link to system parameters page ([#13937](https://github.com/googleapis/google-cloud-cpp/pull/13937)) -- feat(common): `QuotaUserOption` for gRPC-based libs ([#13933](https://github.com/googleapis/google-cloud-cpp/pull/13933)) -- fix(common): `clang-cl` needs a `const_cast<>` ([#13891](https://github.com/googleapis/google-cloud-cpp/pull/13891)) -- fix(compute): shorten paths for Bazel+MSVC ([#13836](https://github.com/googleapis/google-cloud-cpp/pull/13836)) -- feat(common): support injecting custom headers ([#13829](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Security Center Management API](/google/cloud/securitycentermanagement/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- feat: promote `EnableServerRetriesOption` ([#13698](https://github.com/googleapis/google-cloud-cpp/pull/13698)) -- feat(bigtable): install mocks library ([#13551](https://github.com/googleapis/google-cloud-cpp/pull/13551)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): add doxygen comment to deprecate handwritten apis ([#13585](https://github.com/googleapis/google-cloud-cpp/pull/13585)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add support for max commit delay ([#13562](https://github.com/googleapis/google-cloud-cpp/pull/13562)) -- feat: install mocks for `spanner`, `sql`, `pubsublite` ([#13548](https://github.com/googleapis/google-cloud-cpp/pull/13548)) - -### [Storage](/google/cloud/storage/README.md) - -- docs(GCS+gRPC): add contact info ([#13688](https://github.com/googleapis/google-cloud-cpp/pull/13688)) -- feat(storage): support listing folders as prefixes ([#13683](https://github.com/googleapis/google-cloud-cpp/pull/13683)) -- feat(storage): support soft-deleted objects ([#13644](https://github.com/googleapis/google-cloud-cpp/pull/13644)) -- feat(storage): support Bucket soft-delete metadata ([#13623](https://github.com/googleapis/google-cloud-cpp/pull/13623)) - -### [Common Libraries](/google/cloud/README.md) - -- feat: cmake option to skip building mock libraries ([#13673](https://github.com/googleapis/google-cloud-cpp/pull/13673)) -- feat(generator): support `request_id`-like fields ([#13615](https://github.com/googleapis/google-cloud-cpp/pull/13615)) -- docs(common): advertise OAuth2 library ([#13614](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Personalized Service Health](/google/cloud/servicehealth/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- feat(bigtable): support bigtable routing cookies ([#13502](https://github.com/googleapis/google-cloud-cpp/pull/13502)) -- feat(bigtable): logging for bulk apply throttling ([#13488](https://github.com/googleapis/google-cloud-cpp/pull/13488)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix(pubsub): install admin mocks ([#13537](https://github.com/googleapis/google-cloud-cpp/pull/13537)) -- feat(pubsub): add lease management for unary pull ([#13428](https://github.com/googleapis/google-cloud-cpp/pull/13428)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): support `UniverseDomainOption` ([#13471](https://github.com/googleapis/google-cloud-cpp/pull/13471)) -- docs(GCS+gRPC): better comments for `AsyncConnection` ([#13424](https://github.com/googleapis/google-cloud-cpp/pull/13424)) - -### [Common Libraries](/google/cloud/README.md) - -- feat: support UniverseDomainOption in gRPC IAM stub ([#13466](https://github.com/googleapis/google-cloud-cpp/pull/13466)) -- feat: simplify Bazel initialization ([#13411](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Cloud Quotas](/google/cloud/cloudquotas/README.md) - -### [AI Platform/Vertex AI](/google/cloud/aiplatform/README.md) - -- feat(aiplatform): add new service proto file ([#13325](https://github.com/googleapis/google-cloud-cpp/pull/13325)) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- fix(bigtable): use FQDN ([#13305](https://github.com/googleapis/google-cloud-cpp/pull/13305)) - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- feat(otel): capture gRPC response metadata in traces ([#13278](https://github.com/googleapis/google-cloud-cpp/pull/13278)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix(pubsub): get future value before returning ([#13241](https://github.com/googleapis/google-cloud-cpp/pull/13241)) -- fix(pubsub): pass by reference explicitly ([#13220](https://github.com/googleapis/google-cloud-cpp/pull/13220)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(common): returnable argument to `.then()` ([#13316](https://github.com/googleapis/google-cloud-cpp/pull/13316)) -- feat(common): read-write streaming RPCs metadata ([#13228](https://github.com/googleapis/google-cloud-cpp/pull/13228)) -- fix: respect logging format env var in `compute`, `sql` ([#13368](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Distributed Cloud Edge Network API](/google/cloud/edgenetwork/README.md) -- [Cloud SQL Admin API](/google/cloud/sql/README.md) -- [Telecom Network Automation API](google/cloud/telcoautomation/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- feat(bigtable): throttling for AsyncBulkApply ([#13203](https://github.com/googleapis/google-cloud-cpp/pull/13203)) -- fix(bigtable): async context propagation for tracing ([#13156](https://github.com/googleapis/google-cloud-cpp/pull/13156)) -- feat(bigtable): support BulkApply throttling ([#13124](https://github.com/googleapis/google-cloud-cpp/pull/13124)) - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- feat(otel): add Makefile ([#13177](https://github.com/googleapis/google-cloud-cpp/pull/13177)) -- fix(otel): detach context when single-threaded ([#13154](https://github.com/googleapis/google-cloud-cpp/pull/13154)) -- fix(otel): reconnect async traces (e.g. LROs) ([#13147](https://github.com/googleapis/google-cloud-cpp/pull/13147)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat: add PG.OID type ([#13127](https://github.com/googleapis/google-cloud-cpp/pull/13127)) -- feat(spanner): control replicas/regions used in non-transactional reads ([#13031](https://github.com/googleapis/google-cloud-cpp/pull/13031)) - -### [Vertex AI](/google/cloud/aiplatform/README.md) - -- feat(aiplatform): generate new services ([#13150](https://github.com/googleapis/google-cloud-cpp/pull/13150)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(common): use FQDN for the metadata service ([#13139](https://github.com/googleapis/google-cloud-cpp/pull/13139)) -- feat(common): add GrpcCompressionAlgorithmOption ([#13108](https://github.com/googleapis/google-cloud-cpp/pull/13108)) -- doc: fix cliffhanger ([#13033](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Secure Source Manager](/google/cloud/securesourcemanager/README.md) - -### [Compute Engine](/google/cloud/compute/README.md) - -- fix(compute): `RegionSecurityPoliciesClient::PatchSecurityPolicy` added - `update_mask` field. - -### [Memorystore for Redis](/google/cloud/redis/README.md) - -New `CloudRedisClusterClient`. - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -- doc(otel): add packaging instructions - ([#13005](https://github.com/googleapis/google-cloud-cpp/pull/13005)) -- fix(otel): end async client spans properly - ([#12919](https://github.com/googleapis/google-cloud-cpp/pull/12919)) -- fix(otel): support abseil \<= 20210324 - ([#12993](https://github.com/googleapis/google-cloud-cpp/pull/12993)) -- - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): single-RPC, batched commit of mutation groups - ([#12930](https://github.com/googleapis/google-cloud-cpp/pull/12930)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(common): mock for `AsyncStreamingReadWriteRpc` - ([#12950](https://github.com/googleapis/google-cloud-cpp/pull/12950)) -- fix(common): missed using `CARootsFilePathOption` - ([#12997](https://github.com/googleapis/google-cloud-cpp/pull/12997)) -- fix(generator): do not override default sleeper in streaming-read RPCs - ([#12920](https://github.com/googleapis/google-cloud-cpp/pull/12920)) - -### Other Changes - -- fix(oauth2): only enable via `GOOGLE_CLOUD_CPP_ENABLE` - ([#12911](https://github.com/googleapis/google-cloud-cpp/pull/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 - -### [Compute Engine](/google/cloud/compute/README.md) - -- fix(compute): build with Bazel and MSVC - ([#12877](https://github.com/googleapis/google-cloud-cpp/pull/12877)) -- fix(compute): usable in external Bazel projects - ([#12864](https://github.com/googleapis/google-cloud-cpp/pull/12864)) -- fix(compute): add missing bazelrc file - ([#12856](https://github.com/googleapis/google-cloud-cpp/pull/12856)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): another Bucket CRUD field - ([#12842](https://github.com/googleapis/google-cloud-cpp/pull/12842)) -- fix(storage): fix tellg() values - ([#12844](https://github.com/googleapis/google-cloud-cpp/pull/12844)) -- fix(storage): check ReadObject options at runtime - ([#12841](https://github.com/googleapis/google-cloud-cpp/pull/12841)) -- feat(storage): `MatchGlob` for `ListObjects()` - ([#12840](https://github.com/googleapis/google-cloud-cpp/pull/12840)) -- doc(storage): describe default project search - ([#12833](https://github.com/googleapis/google-cloud-cpp/pull/12833)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(oauth2): do not require `id_token` in creds - ([#12867](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Compute Engine](/google/cloud/compute/README.md) -- [Infrastructure Manager](/google/cloud/config/README.md) -- [NetApp](/google/cloud/netapp/README.md) - -### [Discovery Engine](/google/cloud/discoveryengine/README.md) - -New `*Client` for conversational search. - -### [OAuth2](/google/cloud/oauth2/README.md) - -- feat(oauth2): add quickstart, README, etc. - ([#12754](https://github.com/googleapis/google-cloud-cpp/pull/12754)) - -### [OpenTelemetry](/google/cloud/opentelemetry/README.md) - -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][otel-quickstart] within the library to learn more about these -tools. - -### [Policy Troubleshooter](/google/cloud/policytroubleshooter/README.md) - -Remove `PoliciesClient`. This client was placed in the wrong library. The -correct location is google/cloud/iam/v2. - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): trace auth when default credentials are assumed - ([#12672](https://github.com/googleapis/google-cloud-cpp/pull/12672)) -- docs(storage): more on InsertObject vs. WriteObject - ([#12577](https://github.com/googleapis/google-cloud-cpp/pull/12577)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(common): new `*Option` to configure HTTP proxy - ([#12766](https://github.com/googleapis/google-cloud-cpp/pull/12766)) -- fix: export headers with top-level Bazel targets - ([#12762](https://github.com/googleapis/google-cloud-cpp/pull/12762)) -- fix: gRPC auth logging enabled by "auth" - ([#12702](https://github.com/googleapis/google-cloud-cpp/pull/12702)) -- fix: add implicit routing in GAPICs - ([#12544](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Datastore](/google/cloud/datastore/README.md) -- [Discovery Engine API](/google/cloud/discoveryengine/README.md) -- [Policy Simulator](/google/cloud/policysimulator/README.md) -- [Policy Troubleshooter](/google/cloud/policytroubleshooter/README.md) - -### Cloud IoT - -The Cloud IoT Core service has been [shutdown][cloud-iot-shutdown]. We removed -the corresponding C++ client library as it is no longer usable. - -### [BeyondCorp API](google/cloud/beyondcorp/README.md) - -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](https://cloud.google.com/beyondcorp-enterprise/docs/release-notes#March_31_2023). - -### [Natural Language AI](/google/cloud/language/README.md) - -We expanded the library to include the `v2` version of the API. - -### [Notebooks](/google/cloud/notebooks/README.md) - -We expanded the library to include the `v2` version of the API. - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix(pubsub): url encode routing params on publish - ([#12454](https://github.com/googleapis/google-cloud-cpp/pull/12454)) -- feat(pubsub): increase backoff from 1.3 to 4.0 - ([#12306](https://github.com/googleapis/google-cloud-cpp/pull/12306)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): enable leader aware routing by default - ([#12319](https://github.com/googleapis/google-cloud-cpp/pull/12319)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): tracing should decorate retries - ([#12314](https://github.com/googleapis/google-cloud-cpp/pull/12314)) - -### [Common Libraries](/google/cloud/README.md) - -- fix: URL encode explicit routing values - ([#12493](https://github.com/googleapis/google-cloud-cpp/pull/12493)) - ([#12447](https://github.com/googleapis/google-cloud-cpp/pull/12447)) -- feat(common): add `Options::set<>() &&` overload - ([#12424](https://github.com/googleapis/google-cloud-cpp/pull/12424)) -- fix(common): gRPC alarms require more locking - ([#12406](https://github.com/googleapis/google-cloud-cpp/pull/12406)) -- feat(common): retry loops preserve original message - ([#12368](https://github.com/googleapis/google-cloud-cpp/pull/12368)) -- feat(otel): control tracing with environment variable - ([#11897](https://github.com/googleapis/google-cloud-cpp/pull/11897)) -- docs(otel): troubleshoot exporter doc - ([#12345](https://github.com/googleapis/google-cloud-cpp/pull/12345)) -- docs(otel): build quickstart with vcpkg - ([#12324](https://github.com/googleapis/google-cloud-cpp/pull/12324)) -- feat(common): retry loops signal via error info - ([#12313](https://github.com/googleapis/google-cloud-cpp/pull/12313)) -- fix(common): handle expired policies in `*RetryLoop` - ([#12301](https://github.com/googleapis/google-cloud-cpp/pull/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][#8022] that customers building with CMake were forced -to compile large proto libraries that they did not need. It was certainly -[confusing][#10174]. - -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. - -- [Commerce](/google/cloud/commerce/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- docs(bigtable): document `DataRetryPolicy` - ([#12040](https://github.com/googleapis/google-cloud-cpp/pull/12040)) -- feat(bigtable): reverse scans - ([#12022](https://github.com/googleapis/google-cloud-cpp/pull/12022)) - -### [Channel Services](/google/cloud/channel/README.md) - -The library has been expanded to include the Reporting API. - -### [Cloud Build](/google/cloud/cloudbuild/README.md) - -- feat(cloudbuild): promote 2nd gen (repositories) API to GA - ([#12236](https://github.com/googleapis/google-cloud-cpp/pull/12236)) - -### [Cloud Functions](/google/cloud/functions/README.md) - -The library has been expanded to include the [2nd gen][functions-v2] API. - -### [Cloud Monitoring](/google/cloud/monitoring/README.md) - -The library has been expanded to include the [Snooze][monitoring-snooze] API. - -### [Cloud Run](/google/cloud/run/README.md) - -The library has been expanded to include the [Job Executions][cloud-run-jobs] -API. - -### [Compute Engine OS Config](/google/cloud/osconfig/README.md) - -The library has been expanded to include the Zonal OS Config API. - -### [Data Catalog](/google/cloud/datcatalog/README.md) - -- feat(datacatalog): promote `datalineage` to GA - ([#12271](https://github.com/googleapis/google-cloud-cpp/pull/12271)) - -### [Dataproc](/google/cloud/dataproc/README.md) - -The library has been expanded to include the [Node Groups][dataproc-node-groups] -API. - -### [Logging](/google/cloud/logging/README.md) - -The library has been expanded to include the -[Log-based Metrics][logging-metrics] API and the [Log Router][logging-config] -API. - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- docs(pubsub): add cloud storage subscription sample - ([#12088](https://github.com/googleapis/google-cloud-cpp/pull/12088)) -- docs(pubsub): add unwrapped subscription sample - ([#12090](https://github.com/googleapis/google-cloud-cpp/pull/12090)) -- docs(pubsub): add a subscriber quickstart - ([#12053](https://github.com/googleapis/google-cloud-cpp/pull/12053)) -- docs(pubsub): document `RetryPolicy` interface - ([#12030](https://github.com/googleapis/google-cloud-cpp/pull/12030)) - -### [Retail](/google/cloud/retail/README.md) - -The library has been expanded to include new services. - -### [Resource Manager](/google/cloud/resourcemanager/README.md) - -The library has been expanded to include the [Tags][resource-manager-tags] API. - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): samples for bit-reversed sequence - ([#12280](https://github.com/googleapis/google-cloud-cpp/pull/12280)) -- doc(spanner): mark obsolete Spanner options classes as deprecated - ([#12256](https://github.com/googleapis/google-cloud-cpp/pull/12256)) -- doc(spanner): Improve documentation for ActionOnExhaustion - ([#12238](https://github.com/googleapis/google-cloud-cpp/pull/12238)) -- doc(spanner): add documentation/sample for TransactionRerunPolicy - ([#12140](https://github.com/googleapis/google-cloud-cpp/pull/12140)) -- feat(spanner): tests and samples for foreign-key delete cascade - ([#12122](https://github.com/googleapis/google-cloud-cpp/pull/12122)) -- docs(spanner): document `RetryPolicy` interface - ([#12037](https://github.com/googleapis/google-cloud-cpp/pull/12037)) - -### [Speech](/google/cloud/speech/README.md) - -The library has been expanded to include the -[Model Adaptation][speech-model-adaptation] API. - -### [Storage](/google/cloud/storage/README.md) - -- docs(storage): document `RetryPolicy` interface - ([#12031](https://github.com/googleapis/google-cloud-cpp/pull/12031)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(common): add missing library on Windows - ([#12103](https://github.com/googleapis/google-cloud-cpp/pull/12103)) -- fix(common): avoid run-time conflicts on Windows - ([#12105](https://github.com/googleapis/google-cloud-cpp/pull/12105)) -- feat(oauth2): new library to create oauth2 tokens - ([#12064](https://github.com/googleapis/google-cloud-cpp/pull/12064)) -- feat: support split packages - ([#12049](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Cloud Data Fusion](/google/cloud/datafusion/README.md) -- [Dataproc Metastore](/google/cloud/metastore/README.md) -- [Migration Center](google/cloud/migrationcenter/README.md) -- [Rapid Migration Assessment](/google/cloud/rapidmigrationassessment/README.md) -- [Secure Web Proxy](/google/cloud/networksecurity/README.md) - -### [Batch](/google/cloud/batch/README.md) - -- docs: an example to extract Cloud Batch logs - ([#11935](https://github.com/googleapis/google-cloud-cpp/pull/11935)) -- docs(batch): introduce basic snippets - ([#11915](https://github.com/googleapis/google-cloud-cpp/pull/11915)) - -### [Spanner](/google/cloud/spanner/README.md) - -- doc(spanner): add an example for CommitAtLeastOnce() - ([#11905](https://github.com/googleapis/google-cloud-cpp/pull/11905)) -- feat(spanner): implement at-least-once Commit - ([#11899](https://github.com/googleapis/google-cloud-cpp/pull/11899)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(generator): separate page for retry policy overrides - ([#11950](https://github.com/googleapis/google-cloud-cpp/pull/11950)) -- fix(common): pagination must support empty pages - ([#11937](https://github.com/googleapis/google-cloud-cpp/pull/11937)) -- feat(generator): create retry policy samples - ([#11930](https://github.com/googleapis/google-cloud-cpp/pull/11930)) -- fix(common): use 64-bit API on Windows to get file sizes - ([#11906](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Content Warehouse](/google/cloud/contentwarehouse/README.md) -- [Cloud Domains](/google/cloud/domains/README.md) -- [Essential Contacts](/google/cloud/essentialcontacts/README.md) -- [reCAPTCHA Enterprise](/google/cloud/recaptchaenterprise/README.md) -- [Timeseries Insights](/google/cloud/timeseriesinsights/README.md) -- [Traffic Director](/google/cloud/networkservices/README.md) -- [Vertex AI](/google/cloud/aiplatform/README.md) - -### Cloud Debugger - -The Cloud Debugger service (aka Stackdriver Debugger API) has been -[shutdown][cloud-debugger-deprecated]. The corresponding client library has been -removed. - -### [BigQuery](/google/cloud/bigquery/README.md) - -This library has been expanded to include the BigLake API -([#11882](https://github.com/googleapis/google-cloud-cpp/pull/11882)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- doc(pubsub): add new samples for schemas - ([#11872](https://github.com/googleapis/google-cloud-cpp/pull/11872)) - ([#11848](https://github.com/googleapis/google-cloud-cpp/pull/11848)) - ([#11840](https://github.com/googleapis/google-cloud-cpp/pull/11840)) - -### [Common Libraries](/google/cloud/README.md) - -- docs: use c.g.com/cpp mocking guide - ([#11869](https://github.com/googleapis/google-cloud-cpp/pull/11869)) -- docs: link reference docs at c.g.c/cpp/docs/reference - ([#11799](https://github.com/googleapis/google-cloud-cpp/pull/11799)) -- fix(generator): correct URL for reference docs - ([#11765](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Cloud Support API](/google/cloud/support/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- docs(bigtable): async Table APIs are stable - ([#11711](https://github.com/googleapis/google-cloud-cpp/pull/11711)) -- doc(bigtable): deprecate DataClient in doxygen - ([#11550](https://github.com/googleapis/google-cloud-cpp/pull/11550)) - -### [Cloud Asset](/google/cloud/asset/README.md) - -The library has been re-enabled on Windows. See -[#11714](https://github.com/googleapis/google-cloud-cpp/issues/11714) for -details. - -### [Spanner](/google/cloud/spanner/README.md) - -- docs(spanner): some documentation tweaks - ([#11641](https://github.com/googleapis/google-cloud-cpp/pull/11641)) -- feat(spanner): tests and samples for drop-database protection - ([#11637](https://github.com/googleapis/google-cloud-cpp/pull/11637)) -- feat(spanner): make `ResultSourceInterface` public - ([#11636](https://github.com/googleapis/google-cloud-cpp/pull/11636)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): consistent project id overrides - ([#11754](https://github.com/googleapis/google-cloud-cpp/pull/11754)) -- feat(storage): better error messages in signed URLs - ([#11741](https://github.com/googleapis/google-cloud-cpp/pull/11741)) -- feat(storage): offer mock client without decorators - ([#11697](https://github.com/googleapis/google-cloud-cpp/pull/11697)) -- feat(storage): lazy allocation for upload buffer - ([#11633](https://github.com/googleapis/google-cloud-cpp/pull/11633)) - -### [Storage Transfer Service](/google/cloud/storagetransfer/README.md) - -The library has been re-enabled on macOS. See -[#8785](https://github.com/googleapis/google-cloud-cpp/issues/8785) for details. - -### [Common Libraries](/google/cloud/README.md) - -- feat: use full jitter exp backoff policy in the generator - ([#11748](https://github.com/googleapis/google-cloud-cpp/pull/11748)) -- feat: add new constructor for exponential backoff policy - ([#11650](https://github.com/googleapis/google-cloud-cpp/pull/11650)) -- feat: avoid development dependencies with Bazel - ([#11724](https://github.com/googleapis/google-cloud-cpp/pull/11724)) -- docs(common): better exception descriptions - ([#11705](https://github.com/googleapis/google-cloud-cpp/pull/11705)) -- fix(rest): support rewinds in libcurl - ([#11703](https://github.com/googleapis/google-cloud-cpp/pull/11703), - [#11709](https://github.com/googleapis/google-cloud-cpp/pull/11709)) -- fix: workaround curl_multi_poll returning an error on EINTR - ([#11649](https://github.com/googleapis/google-cloud-cpp/pull/11649)) -- docs(common): improve `StatusOr<>` documentation - ([#11631](https://github.com/googleapis/google-cloud-cpp/pull/11631)) -- fix: Correct exponential backoff ranges - ([#11529](https://github.com/googleapis/google-cloud-cpp/pull/11529)) -- fix: patch releases do not change the ABI - ([#11499](https://github.com/googleapis/google-cloud-cpp/pull/11499)) -- fix(rest): missing user-agent separator - ([#11473](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [ConfidentialComputing API](/google/cloud/confidentialcomputing/README.md) -- [Storage Insights API](/google/cloud/storageinsights/README.md) -- [Workstations API](/google/cloud/workstations/README.md) - -The following experimental libraries are now available: - -- [Cloud SQL Admin API](/google/cloud/sql/README.md) - -### [Bigquery](/google/cloud/bigquery/README.md) - -- 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. - -### [Service Control](/google/cloud/servicecontrol/README.md) - -The library has been expanded to include the v2 service. - -### [Spanner](/google/cloud/spanner/README.md) - -- fix(spanner): propagate Options through SessionPool callbacks - ([#11344](https://github.com/googleapis/google-cloud-cpp/pull/11344)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): cache legacy credentials - ([#11271](https://github.com/googleapis/google-cloud-cpp/pull/11271)) -- fix(storage): support per-request options - ([#11445](https://github.com/googleapis/google-cloud-cpp/pull/11445)) -- fix(storage): cache all credential types - ([#11447](https://github.com/googleapis/google-cloud-cpp/pull/11447)) - -### [Common Libraries](/google/cloud/README.md) - -- doc: declutter main.dox pages - ([#11405](https://github.com/googleapis/google-cloud-cpp/pull/11405)) -- doc(common): documentation improvements - ([#11376](https://github.com/googleapis/google-cloud-cpp/pull/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 - -### [Cloud Build](/google/cloud/cloudbuild/README.md) - -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][product-launch-stages]. - -### [Cloud Trace](/google/cloud/trace/README.md) - -The library has been expanded to include the v1 service. - -### [IAM](/google/cloud/iam/README.md) - -- fix(iam): override idempotency on idempotent POST methods - ([#11045](https://github.com/googleapis/google-cloud-cpp/pull/11045)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): add the final pieces for the RouteToLeaderOption - ([#11112](https://github.com/googleapis/google-cloud-cpp/pull/11112)) -- feat(spanner): support "data boost" on partitioned queries and reads - ([#10998](https://github.com/googleapis/google-cloud-cpp/pull/10998)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): reduce copies in `InsertObject()` - ([#11014](https://github.com/googleapis/google-cloud-cpp/pull/11014)) - -### [Common Libraries](/google/cloud/README.md) - -- feat: consume less entropy for PRNG - ([#11102](https://github.com/googleapis/google-cloud-cpp/pull/11102)) -- feat(mocks): provide access to call options in client tests - ([#11050](https://github.com/googleapis/google-cloud-cpp/pull/11050)) - -### Testing - -We have stopped testing with MSVC 2017. Microsoft stopped mainstream support for -MSVC 2017 in -[2022-04](https://learn.microsoft.com/en-us/lifecycle/products/visual-studio-2017). -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][oss-cxx-support], 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. - -- [Advisory Notifications](/google/cloud/advisorynotifications/README.md) -- [Alloy DB](/google/cloud/alloydb/README.md) -- [API Keys](/google/cloud/apikeys/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- fix(bigtable): retries for CheckConsistency / AsyncWaitForConsistency - ([#10955](https://github.com/googleapis/google-cloud-cpp/pull/10955)) -- docs(bigtable): clean up CreateTable sample - ([#10844](https://github.com/googleapis/google-cloud-cpp/pull/10844)) - -### [Data Catalog](/google/cloud/datacatalog/README.md) - -- feat(datacatalog): generate lineage library - ([#10977](https://github.com/googleapis/google-cloud-cpp/pull/10977)) - -### [KMS](/google/cloud/kms/README.md) - -The library has been expanded to include the KMS Inventory API. - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix(pubsub): no warnings on `ack()/nack()` success - ([#10920](https://github.com/googleapis/google-cloud-cpp/pull/10920)) -- fix(pubsub): fewer default threads for 32-bit builds - ([#10793](https://github.com/googleapis/google-cloud-cpp/pull/10793)) - -### [TPU](/google/cloud/tpu/README.md) - -The library has been expanded to include the TPU v2 API. - -### [Common Libraries](/google/cloud/README.md) - -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](https://github.com/googleapis/google-cloud-cpp/pull/10957)) -- doc: improve description for "terminate" group - ([#10950](https://github.com/googleapis/google-cloud-cpp/pull/10950)) -- fix(common): fewer spurious warnings in the log - ([#10811](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Anthos Multi-Cloud API](/google/cloud/gkemulticloud/README.md) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- 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. - -### [Common Libraries](/google/cloud/README.md) - -- fix reference links in documentation - ([#10687](https://github.com/googleapis/google-cloud-cpp/pull/10687), - [#10684](https://github.com/googleapis/google-cloud-cpp/pull/10687)) -- fix: interface proto libraries work with older CMake - ([#10636](https://github.com/googleapis/google-cloud-cpp/pull/10636)) -- fix(common): missing Abseil deps in pkgconfig - ([#10616](https://github.com/googleapis/google-cloud-cpp/pull/10616)) -- doc: declutter generated README files - ([#10562](https://github.com/googleapis/google-cloud-cpp/pull/10562)) -- doc(common): in-depth guide for `StatusOr` - ([#10555](https://github.com/googleapis/google-cloud-cpp/pull/10555)) -- doc: remove boilerplate from landing page snippet - ([#10537](https://github.com/googleapis/google-cloud-cpp/pull/10537)) -- doc(common): use real Doxygen groups - ([#10504](https://github.com/googleapis/google-cloud-cpp/pull/10504)) -- fix(generator): correct doxygen comments - ([#10500](https://github.com/googleapis/google-cloud-cpp/pull/10500)) - -## v2.6.0 - 2023-01 - -### [BigQuery](/google/cloud/bigquery/README.md) - -The library has been expanded to include the following services: - -- [BigQuery Data Policy API](https://cloud.google.com/bigquery/docs/column-data-masking-intro) - -### [IAM](/google/cloud/iam/README.md) - -The library has been expanded to include the IAM v2 API. This API includes -support for [IAM Deny](https://cloud.google.com/iam/docs/deny-overview) -policies. - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix: add missing includes - ([#10421](https://github.com/googleapis/google-cloud-cpp/pull/10421)) - -### [Speech](/google/cloud/speech/README.md) - -- fix: remove duplicate protos - ([#10486](https://github.com/googleapis/google-cloud-cpp/pull/10486)) - -### [Storage](/google/cloud/storage/README.md) - -- fix(storage): better error code for CreateBucket() and 409 errors - ([#10480](https://github.com/googleapis/google-cloud-cpp/pull/10480) -- fix: add missing includes - ([#10421](https://github.com/googleapis/google-cloud-cpp/pull/10421)) -- fix(storage): scopes should disable self-signed JWTs - ([#10369](https://github.com/googleapis/google-cloud-cpp/pull/10369)) -- doc(storage): document all `oauth2` names as deprecated - ([#10352](https://github.com/googleapis/google-cloud-cpp/pull/10352)) - -### [Text-to-Speech](/google/cloud/texttospeech/README.md) - -- fix: remove duplicate protos - ([#10486](https://github.com/googleapis/google-cloud-cpp/pull/10486)) - -### [Trace](/google/cloud/trace/README.md) - -- fix: remove duplicate protos - ([#10486](https://github.com/googleapis/google-cloud-cpp/pull/10486)) - -### [Common Libraries](/google/cloud/README.md) - -- fix: add missing includes - ([#10421](https://github.com/googleapis/google-cloud-cpp/pull/10421)) -- feat(common): support external accounts - ([#10465](https://github.com/googleapis/google-cloud-cpp/pull/10465)) - ([#10430](https://github.com/googleapis/google-cloud-cpp/pull/10430)) - ([#10357](https://github.com/googleapis/google-cloud-cpp/pull/10357)) -- feat(common): options for `Make*Credentials()` - ([#10417](https://github.com/googleapis/google-cloud-cpp/pull/10417)) -- feat: support logging for unified Rest credentials - ([#10412](https://github.com/googleapis/google-cloud-cpp/pull/10412)) - -## v2.5.0 - 2022-12 - -**NOTE** - -- feat!: We have dropped the experimental marker from bidirectional streaming - APIs ([#10340](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Connectors API](/google/cloud/connectors/README.md) -- [VMware Engine API](/google/cloud/vmwareengine/README.md) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- samples(bigtable): build admin samples with cmake - ([#10246](https://github.com/googleapis/google-cloud-cpp/pull/10246)) -- doc(bigtable): create page for configuration options - ([#10197](https://github.com/googleapis/google-cloud-cpp/pull/10197)) - -### [Logging](/google/cloud/logging/README.md) - -- feat(logging): generate `AsyncWriteLogEntries()` - ([#10194](https://github.com/googleapis/google-cloud-cpp/pull/10194)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- feat(pubsub): add option to override subscription - ([#10327](https://github.com/googleapis/google-cloud-cpp/pull/10327)) -- feat(pubsub): blocking pulls - ([#10317](https://github.com/googleapis/google-cloud-cpp/pull/10317)) -- doc(pubsub): create page for configuration options - ([#10198](https://github.com/googleapis/google-cloud-cpp/pull/10198)) - -### [Spanner](/google/cloud/spanner/README.md) - -- doc(spanner): deprecate old MakeConnection() overloads - ([#10284](https://github.com/googleapis/google-cloud-cpp/pull/10284)) -- fix(spanner): tweak the tag name of a FGAC sample - ([#10266](https://github.com/googleapis/google-cloud-cpp/pull/10266)) -- samples(spanner): build admin samples with cmake - ([#10247](https://github.com/googleapis/google-cloud-cpp/pull/10247)) -- feat(spanner): tests and samples for DML RETURNING - ([#10233](https://github.com/googleapis/google-cloud-cpp/pull/10233)) -- doc(spanner): create page for configuration options - ([#10199](https://github.com/googleapis/google-cloud-cpp/pull/10199)) - -### [Speech](/google/cloud/speech/README.md) - -- feat(speech): generate speech v2 - ([#10228](https://github.com/googleapis/google-cloud-cpp/pull/10228)) - -### [Storage](/google/cloud/storage/README.md) - -- doc(storage): create page for configuration options - ([#10200](https://github.com/googleapis/google-cloud-cpp/pull/10200)) - -### [Common Libraries](/google/cloud/README.md) - -- doc: another pass on authentication components - ([#10300](https://github.com/googleapis/google-cloud-cpp/pull/10300)) -- fix(common): create default gRPC credentials only if needed - ([#10280](https://github.com/googleapis/google-cloud-cpp/pull/10280)) -- doc: group client functions - ([#10268](https://github.com/googleapis/google-cloud-cpp/pull/10268)) -- doc: use qualified client name in samples - ([#10241](https://github.com/googleapis/google-cloud-cpp/pull/10241)) -- fix(common): avoid globals for easier DLLs - ([#10212](https://github.com/googleapis/google-cloud-cpp/pull/10212)) -- feat: support a pre-release component of the version string - ([#10181](https://github.com/googleapis/google-cloud-cpp/pull/10181)) -- doc(common): add Doxygen group for common options - ([#10192](https://github.com/googleapis/google-cloud-cpp/pull/10192)) -- doc(common): add overview section - ([#10193](https://github.com/googleapis/google-cloud-cpp/pull/10193)) -- doc: better guidance for authentication samples - ([#10184](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Certificate Manager API](/google/cloud/certificatemanager/README.md) -- [Cloud Deploy API](/google/cloud/deploy/README.md) -- [Datastream API](/google/cloud/datastream/README.md) - -In addition, these existing libraries are now GA: - -- [Cloud Batch](/google/cloud/batch/README.md) - -### [BigQuery](/google/cloud/bigquery/README.md) - -- doc: add endpoint override snippets to generated libs - ([#10129](https://github.com/googleapis/google-cloud-cpp/pull/10129)) -- feat(bigquery): add migration service - ([#10034](https://github.com/googleapis/google-cloud-cpp/pull/10034)) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- doc(bigtable): add `*Client` samples - ([#10149](https://github.com/googleapis/google-cloud-cpp/pull/10149)) -- feat(bigtable): support `GOOGLE_CLOUD_ENABLE_DIRECT_PATH` - ([#9978](https://github.com/googleapis/google-cloud-cpp/pull/9978)) - -### [IAM](/google/cloud/iam/README.md) - -- doc: add endpoint override snippets to generated libs - ([#10129](https://github.com/googleapis/google-cloud-cpp/pull/10129)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- doc(pubsub): samples for endpoint and auth - ([#10136](https://github.com/googleapis/google-cloud-cpp/pull/10136)) -- feat(pubsub): install pubsub_mocks pkg - ([#10008](https://github.com/googleapis/google-cloud-cpp/pull/10008)) -- feat(pubsub): implement blocking publisher - ([#10055](https://github.com/googleapis/google-cloud-cpp/pull/10055)) -- feat(pubsub): implement per-call options for `Subscriber` - ([#10043](https://github.com/googleapis/google-cloud-cpp/pull/10043)) -- fix(pubsub): limit `ModifyAckDeadlineRequest` size - ([#10032](https://github.com/googleapis/google-cloud-cpp/pull/10032)) -- fix(pubsub): faster shutdowns for `Publisher` - ([#9991](https://github.com/googleapis/google-cloud-cpp/pull/9991)) - -### [Spanner](/google/cloud/spanner/README.md) - -- doc(spanner): add `*Client` samples - ([#10145](https://github.com/googleapis/google-cloud-cpp/pull/10145)) -- feat(spanner): add support for RowStream::RowsModified() - ([#10102](https://github.com/googleapis/google-cloud-cpp/pull/10102)) -- feat(spanner): support for the PG.JSONB data type - ([#10098](https://github.com/googleapis/google-cloud-cpp/pull/10098)) - -### [Storage](/google/cloud/storage/README.md) - -- doc(storage): common initialization examples - ([#10107](https://github.com/googleapis/google-cloud-cpp/pull/10107)) -- fix(rest): too many debug headers - ([#10054](https://github.com/googleapis/google-cloud-cpp/pull/10054)) -- fix(rest): return complete payloads for errors - ([#10051](https://github.com/googleapis/google-cloud-cpp/pull/10051)) -- feat(storage): support `Autoclass` feature - ([#10003](https://github.com/googleapis/google-cloud-cpp/pull/10003)) -- feat(storage): faster `InsertObject()` uploads - ([#9997](https://github.com/googleapis/google-cloud-cpp/pull/9997)) -- fix(storage): respect MIME message boundary size limits - ([#9965](https://github.com/googleapis/google-cloud-cpp/pull/9965)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(generator): generate authentication example - ([#10138](https://github.com/googleapis/google-cloud-cpp/pull/10138)) -- doc: workaround Doxygen formatting quirk - ([#10137](https://github.com/googleapis/google-cloud-cpp/pull/10137)) -- doc: add endpoint override snippets to generated libs - ([#10129](https://github.com/googleapis/google-cloud-cpp/pull/10129)) -- feat(generator): generate simple samples for `*Client` - ([#10118](https://github.com/googleapis/google-cloud-cpp/pull/10118)) -- feat: add mock library w/ StreamRange - ([#9998](https://github.com/googleapis/google-cloud-cpp/pull/9998)) -- doc(common): make authentication docs easier to find - ([#10110](https://github.com/googleapis/google-cloud-cpp/pull/10110)) -- fix: configure context in async retries - ([#10100](https://github.com/googleapis/google-cloud-cpp/pull/10100)) -- doc: document when GrpcNumChannelsOption applies - ([#10000](https://github.com/googleapis/google-cloud-cpp/pull/10000)) -- feat(generator): make idempotency policy non-abstract - ([#9981](https://github.com/googleapis/google-cloud-cpp/pull/9981)) -- fix(common): preserve `ErrorInfo` on retry errors - ([#9971](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Distributed Cloud Edge Container API](/google/cloud/edgecontainer/README.md) -- [Network Connectivity API](/google/cloud/networkconnectivity/README.md) - -### [BigQuery](/google/cloud/bigquery/README.md) - -The library has been expanded to include [Analytics Hub][bq-analytics-hub], an -API that facilitates data sharing within and across organizations. -([#9882](https://github.com/googleapis/google-cloud-cpp/pull/9882)) - -### [Spanner](/google/cloud/spanner/README.md) - -- fix(spanner): remove session from pool upon "not found" refresh failure - ([#9954](https://github.com/googleapis/google-cloud-cpp/pull/9954)) -- feat(spanner): add support for Customer Managed Multi-Region (CMMR) read-only - replicas at instance creation time - ([#9872](https://github.com/googleapis/google-cloud-cpp/pull/9872)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): easier mocks for `HmacKeyMetadata` - ([#9949](https://github.com/googleapis/google-cloud-cpp/pull/9949)) -- feat(storage): easier mocks for `*AccessControl` - ([#9910](https://github.com/googleapis/google-cloud-cpp/pull/9910)) -- feat(storage): easier mocks with `ObjectMetadata` - ([#9899](https://github.com/googleapis/google-cloud-cpp/pull/9899)) -- fix(storage): decay type before testing supported-options membership - ([#9893](https://github.com/googleapis/google-cloud-cpp/pull/9893)) -- feat(storage): easier mocks with `BucketMetadata` - ([#9886](https://github.com/googleapis/google-cloud-cpp/pull/9886)) -- fix(storage): error message for resumable uploads - ([#9855](https://github.com/googleapis/google-cloud-cpp/pull/9855)) -- feat(storage): release `*StallMinimumThroughputOption` - ([#9813](https://github.com/googleapis/google-cloud-cpp/pull/9813)) -- fix(storage): no workaround needed with libc++ and MSVC - ([#9768](https://github.com/googleapis/google-cloud-cpp/pull/9768)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(common): better defaults for curl initialization - ([#9798](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [API Keys](/google/cloud/apikeys/README.md) - -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... -
- -- [Bare Metal Solution](/google/cloud/baremetalsolution/README.md) -- [Beyond Corp](/google/cloud/beyondcorp/README.md) -- [Optimization AI](/google/cloud/optimization/README.md) -- [Cloud Run](/google/cloud/run/README.md) -- [Video Services](/google/cloud/video/README.md) - -
- -### [Bigtable](/google/cloud/bigtable/README.md) - -- fix(bigtable): `DataConnection` refreshes channels - ([#9718](https://github.com/googleapis/google-cloud-cpp/pull/9718)) -- fix(bigtable): Use retry policy on all streams with failing mutations - ([#9706](https://github.com/googleapis/google-cloud-cpp/pull/9706)) -- feat(bigtable): per-operation Options - ([#9627](https://github.com/googleapis/google-cloud-cpp/pull/9627)) - ([#9623](https://github.com/googleapis/google-cloud-cpp/pull/9623)) - -### [Dataproc](/google/cloud/dataproc/README.md) - -- feat(dataproc): mark the dataproc services as location dependent - ([#9722](https://github.com/googleapis/google-cloud-cpp/pull/9722)) - -### [Spanner](/google/cloud/spanner/README.md) - -- feat(spanner): fine-grained access control - ([#9669](https://github.com/googleapis/google-cloud-cpp/pull/9669)) -- feat(spanner): equality for copyable classes - ([#9648](https://github.com/googleapis/google-cloud-cpp/pull/9648)) - -### [Storage](/google/cloud/storage/README.md) - -- 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](https://github.com/googleapis/google-cloud-cpp/pull/9744)) -- feat(storage): equality for Native IAM types - ([#9649](https://github.com/googleapis/google-cloud-cpp/pull/9649)) -- feat(storage): SA credentials default to self-signed JWTs - ([#9629](https://github.com/googleapis/google-cloud-cpp/pull/9629)) - -### [Common Libraries](/google/cloud/README.md) - -- feat: group GUAC `Options` in an `OptionsList` - ([#9643](https://github.com/googleapis/google-cloud-cpp/pull/9643)) -- fix(rest): cache credentials - ([#9620](https://github.com/googleapis/google-cloud-cpp/pull/9620)) -- doc: add table of contents to landing page - ([#9671](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Batch](/google/cloud/batch/README.md) - ([#9474](https://github.com/googleapis/google-cloud-cpp/pull/9474)) -- [Beyond Corp](/google/cloud/beyondcorp/README.md) - ([#9555](https://github.com/googleapis/google-cloud-cpp/pull/9555)) -- [Cloud Run](/google/cloud/run/README.md) - ([#9460](https://github.com/googleapis/google-cloud-cpp/pull/9460)) - -### [Assured Workloads](/google/cloud/assuredworkloads/README.md) - -- fix(assuredworkloads): reenable on windows - ([#9467](https://github.com/googleapis/google-cloud-cpp/pull/9467)) - -### [Bigtable](/google/cloud/bigtable/README.md) - -- fix(bigtable): the mocks library is no longer header-only - ([#9568](https://github.com/googleapis/google-cloud-cpp/pull/9568)) - -### [Cloud Asset](/google/cloud/asset/README.md) - -- fix(asset): reenable on macOS - ([#9468](https://github.com/googleapis/google-cloud-cpp/pull/9468)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- fix(pubsub): missing subscription name in lease extensions - ([#9523](https://github.com/googleapis/google-cloud-cpp/pull/9523)) -- feat(pubsub): exactly-once delivery - ([#9436](https://github.com/googleapis/google-cloud-cpp/pull/9436)) - -### [Spanner](/google/cloud/spanner/README.md) - -- fix(spanner): avoid evaluation-order issue in function arguments - ([#9452](https://github.com/googleapis/google-cloud-cpp/pull/9452)) - -### [Stackdriver Debugger](/google/cloud/debugger/README.md) - -- doc(debugger): announce deprecation - ([#9552](https://github.com/googleapis/google-cloud-cpp/pull/9552)) - -### [Storage](/google/cloud/storage/README.md) - -- feat(storage): experimental options to tune stall timeouts - ([#9593](https://github.com/googleapis/google-cloud-cpp/pull/9593)) -- feat(storage): add debugging headers to `ObjectWriteStream` - ([#9580](https://github.com/googleapis/google-cloud-cpp/pull/9580)) -- fix(storage): no char for `std::uniform_int_distribution` - ([#9509](https://github.com/googleapis/google-cloud-cpp/pull/9509)) -- feat(storage): support Bucket custom placement config - ([#9481](https://github.com/googleapis/google-cloud-cpp/pull/9481)) - -### [Common Libraries](/google/cloud/README.md) - -- feat(common): make the RPC log even more readable - ([#9561](https://github.com/googleapis/google-cloud-cpp/pull/9561)) -- feat: improve error messages for access token errors - ([#9485](https://github.com/googleapis/google-cloud-cpp/pull/9485)) -- feat(common): make the RPC log even more readable - ([#9477](https://github.com/googleapis/google-cloud-cpp/pull/9477)) +**NOTE**: [Future Breaking Changes](/doc/deprecated.md) lists anticipated +breaking changes in the upcoming 4.x release. This release is scheduled for +2027-12 or 2028-01. -## v2.0.0 - 2022-07 +## v3.0.0 - 2026-02 **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 +As previously announced, `google-cloud-cpp` now requires C++ >= 17. This is +motivated by similar changes in our dependencies, and because C++ 17 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** - -### [Bigtable](/google/cloud/bigtable/README.md) - -We introduced a [new constructor][modern-table-ctor] 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][architecture-connection] 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][howto-mock-data-api] 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`][guac-dox]. Also, any new features will be added to -the `DataConnection` API first. +signal the new requirements. Additionally, we have decommissioned previously +deprecated API features and have also made some previously optional dependencies +required. -#### 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. -1. 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`][cbt-dataclient-migration]. - -- doc(bigtable): how to mock the Data API - ([#9415](https://github.com/googleapis/google-cloud-cpp/pull/9415)) -- feat(bigtable): modern `Table` constructor - ([#9403](https://github.com/googleapis/google-cloud-cpp/pull/9403)) -- feat(generator): support explicit routing headers - ([#9368](https://github.com/googleapis/google-cloud-cpp/pull/9368)) -- fix(bigtable)!: pass app profile id to connection as options - ([#9388](https://github.com/googleapis/google-cloud-cpp/pull/9388)) -- feat(bigtable): add `AppProfileIdOption` - ([#9382](https://github.com/googleapis/google-cloud-cpp/pull/9382)) -- feat(bigtable): table resource name as a class - ([#9377](https://github.com/googleapis/google-cloud-cpp/pull/9377)) -- feat(bigtable): instance name as a class - ([#9374](https://github.com/googleapis/google-cloud-cpp/pull/9374)) -- feat(bigtable): introduce `MockDataConnection` and `MakeTestRowReader` - ([#9335](https://github.com/googleapis/google-cloud-cpp/pull/9335)) -- feat(bigtable): introduce `DataConnection` - ([#9323](https://github.com/googleapis/google-cloud-cpp/pull/9323)) -- feat(bigtable): modern Data API policy options - ([#9320](https://github.com/googleapis/google-cloud-cpp/pull/9320)) - -### [Pub/Sub](/google/cloud/pubsub/README.md) - -- doc(pubsub): improve documentation for `*AckHandler` - ([#9404](https://github.com/googleapis/google-cloud-cpp/pull/9404)) -- feat(pubsub): update subscription builders - ([#9326](https://github.com/googleapis/google-cloud-cpp/pull/9326)) - -### [Common Libraries](/google/cloud/README.md) - -- fix(generator): handle explicit routing params for nested fields - ([#9408](https://github.com/googleapis/google-cloud-cpp/pull/9408)) -- feat(common): truncation support for plain strings in the RPC log - ([#9351](https://github.com/googleapis/google-cloud-cpp/pull/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. - -- [Video Services](/google/cloud/video/README.md) - -[#10170]: https://github.com/googleapis/google-cloud-cpp/issues/10170 -[#10174]: https://github.com/googleapis/google-cloud-cpp/discussions/10174 -[#8022]: https://github.com/googleapis/google-cloud-cpp/issues/8022 -[#9659]: https://github.com/googleapis/google-cloud-cpp/issues/9659 -[architecture-connection]: /ARCHITECTURE.md#the-connection-classes -[bq-analytics-hub]: https://cloud.google.com/bigquery/docs/analytics-hub-introduction -[cbt-dataclient-migration]: https://cloud.google.com/cpp/docs/reference/bigtable/latest/migrating-from-dataclient -[cloud-debugger-deprecated]: https://cloud.google.com/debugger/docs/deprecations -[cloud-iot-shutdown]: https://cloud.google.com/iot/docs/release-notes#August_16_2022 -[cloud-run-jobs]: https://cloud.google.com/run/docs/managing/job-executions -[dataproc-node-groups]: https://cloud.google.com/dataproc/docs/guides/node-groups/dataproc-driver-node-groups -[distributed tracing]: https://opentelemetry.io/docs/concepts/observability-primer/#distributed-traces -[functions-v2]: https://cloud.google.com/functions/docs/concepts/version-comparison -[google.pubsub.v1.schemaserviceclient]: https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#google.pubsub.v1.SchemaService -[grpc#34482]: https://github.com/grpc/grpc/issues/34482 -[guac-dox]: https://cloud.google.com/cpp/docs/reference/common/latest/group__guac -[howto-mock-data-api]: https://cloud.google.com/cpp/docs/reference/bigtable/latest/bigtable-mocking -[logging-config]: https://cloud.google.com/logging/docs/routing/overview -[logging-metrics]: https://cloud.google.com/logging/docs/logs-based-metrics -[modern-table-ctor]: https://github.com/googleapis/google-cloud-cpp/blob/62740c8e9180056db77d4dd3e80a6fa7ae71295a/google/cloud/bigtable/table.h#L182-L214 -[monitoring-snooze]: https://cloud.google.com/monitoring/alerts/snooze -[opentelemetry]: https://opentelemetry.io/ -[oss-cxx-support]: https://opensource.google/documentation/policies/cplusplus-support -[otel-quickstart]: https://github.com/googleapis/google-cloud-cpp/blob/main/google/cloud/opentelemetry/quickstart -[product-launch-stages]: https://cloud.google.com/products/#product-launch-stages -[resource-manager-tags]: https://cloud.google.com/resource-manager/docs/tags/tags-overview -[speech-model-adaptation]: https://cloud.google.com/speech-to-text/docs/adaptation-model -[storage-grpc]: https://cloud.google.com/cpp/docs/reference/storage/latest/storage-grpc +**NOTE**: Please refer to the [V3 Migration Guide](/doc/v3-migration-guide.md) +for details on updating existing applications using v1.x.y or v2.x.y. diff --git a/CMakeLists.txt b/CMakeLists.txt index 353b4e1e47bca..a5a1c9a860d47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,20 +54,12 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") " We will consider patches for older versions.") endif () elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14.0.0) message( WARNING - "The `google-cloud-cpp` library is tested with Clang >= 6.0." + "The `google-cloud-cpp` library is tested with Clang >= 14.0.0." " We will consider patches for older versions.") endif () -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - if (CMAKE_VERSION VERSION_LESS 3.15) - message( - FATAL_ERROR - "MSVC builds require CMake >= 3.15." - " Previous versions of CMake lack a standard mechanism to" - " select the runtime C++ library.") - endif () endif () list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) diff --git a/README.md b/README.md index a4803943add63..66ca199372260 100644 --- a/README.md +++ b/README.md @@ -577,8 +577,8 @@ run the examples included with the libraries. ### Building with Bazel -This library requires Bazel >= 6.0. From the top-level directory, run the usual -commands. +This library requires Bazel >= 7.0. We recommend using Bazel modules instead of +WORKSPACE files. From the top-level directory, run the usual commands. ```shell bazel build //... @@ -586,7 +586,7 @@ bazel build //... ### Building with CMake -This library requires CMake >= 3.10. If you are planning to install the +This library requires CMake >= 3.22. If you are planning to install the libraries please consult the [packaging guide](/doc/packaging.md), these instructions will **NOT** produce artifacts that you can put in `/usr/local`, or share with your colleagues. @@ -607,11 +607,11 @@ The binary artifacts, such as examples, will be placed in `cmake-out/`. - This project follows Google's [Foundational C++ Support Policy][support-policy], which is summarized in the [Foundational C++ Support Matrix][support-matrix]. - - Language Version (>= C++14). + - Language Version (>= C++17). - Operating Systems: Windows, macOS, and Linux. - - Build Systems: Bazel (>= 6.0), CMake (>= 3.10). - - Compilers: GCC (>= 7.5), Clang (>= 6.0), MSVC (>= 2022), Apple Clang (>= - 12). + - Build Systems: Bazel (>= 7.0), CMake (>= 3.22). + - Compilers: GCC (>= 7.5), Clang (>= 14.0.0), MSVC (>= 2022), Apple Clang (>= + 17). - This project uses dependencies described in [doc/packaging.md](https://github.com/googleapis/google-cloud-cpp/blob/main/doc/packaging.md). - This project works with or without exceptions enabled. diff --git a/doc/compile-time-configuration.md b/doc/compile-time-configuration.md index 07ae4f011e4a5..26a26ceea0665 100644 --- a/doc/compile-time-configuration.md +++ b/doc/compile-time-configuration.md @@ -78,13 +78,12 @@ We expect that application developers using Bazel will include ### The C++ Standard -The default Bazel toolchain forces C++11 on Linux and macOS. `google-cloud-cpp` -requires C++14, so you will need to update the C++ standard version. You must -either: +`google-cloud-cpp` requires C++17, so you may need to update the C++ standard +version. You want to either: - Provide your own C++ toolchain configuration for Bazel. Consult the Bazel documentation if you want to attempt this approach. -- Add `--cxxopt=-std=c++14` and `--host_cxxopt=-std=c++14` (or higher) in your +- Add `--cxxopt=-std=c++17` and `--host_cxxopt=-std=c++17` (or higher) in your Bazel command-line. - Add the same options in your Bazel `.bazelrc` file. @@ -92,14 +91,6 @@ The `--host_cxxopt` may be unfamiliar. This is required to support Protobuf and gRPC, which compile code generators for the "host" environment, and generate libraries for the "target" environment. -### Enabling OpenTelemetry - -[OpenTelemetry] is disabled by default. Add `--//:enable_opentelemetry` to your -Bazel command-line parameters to enable OpenTelemetry features, such as -instrumentation to collect distributed traces. - -See the [OpenTelemetry quickstart] for more details. - ### Workarounds gRPC circa 1.58.1 fails to build with Bazel and Clang >= 16 (see [grpc#34482]). @@ -110,4 +101,3 @@ Add the `--features=-layering_check` option to your Bazel command-line or add [github discussion]: https://github.com/googleapis/google-cloud-cpp/discussions [grpc#34482]: https://github.com/grpc/grpc/issues/34482 [opentelemetry]: https://opentelemetry.io/ -[opentelemetry quickstart]: https://github.com/googleapis/google-cloud-cpp/tree/main/google/cloud/opentelemetry/quickstart diff --git a/doc/deprecated.md b/doc/deprecated.md index 04fafb3bd229f..f39a13aa1414e 100644 --- a/doc/deprecated.md +++ b/doc/deprecated.md @@ -1,55 +1,8 @@ # Future Breaking Changes -The next major version of `google-cloud-cpp` (the 3.x series) is expected to +The next major version of `google-cloud-cpp` (the 4.x series) is expected to include the following **breaking changes**. -
-Bigtable: mark bigtable::DataClient as final - -
- -We will mark `bigtable::DataClient` as `final` and remove the following member -functions: - -- `DataClient::Channel()` -- `DataClient::reset()` -- `DataClient::BackgroundThreadsFactory()` - -Application developers should not need to interact with this class directly. -Please use `google::cloud::bigtable::MakeDataClient(...)` with the options from -`google::cloud::GrpcOptionList<>` if you need to configure the gRPC channel or -background threads. More details can be found in [#8800]. - -
- -
-Bigtable: remove bigtable::RowReader constructors - -
- -We will remove `bigtable::RowReader` constructors which accept `DataClient` as -an argument. - -Application developers who read rows by directly constructing a `RowReader` -object should instead construct a `Table` object and call `Table::ReadRows(...)` -on it. - -For status on this, see [#8854]. - -
- -
-BigQuery: remove BigQueryReadReadRowsStreamingUpdater from -google::cloud::bigquery namespace -
- -We will remove `BigQueryReadReadRowsStreamingUpdater` from its declaration in -`google/cloud/bigquery/read_connection.h` and from the `google::cloud::bigquery` -namespace. The function continues to exist but in an internal file and -namespace. For status on this see [#8234]. - -
-
Pubsub: remove legacy admin APIs
@@ -65,70 +18,4 @@ details.
-
-Spanner: remove legacy admin APIs -
- -We will remove the hand-written versions of the Spanner admin APIs. These have -been superseded by versions generated automatically from the service -definitions. The new APIs can be found in the -[`google/cloud/spanner/admin`](https://github.com/googleapis/google-cloud-cpp/tree/main/google/cloud/spanner/admin) -tree and within the `google::cloud::spanner_admin` namespace. Starting with the -v1.32.0 release, and depending on your compiler settings, using the old -classes/functions may elicit a deprecation warning. See [#7356] for more -details. - -
- -
-Spanner: remove spanner::MakeTestRow() -
- -We will remove `spanner::MakeTestRow()`, which has been replaced by -`spanner_mocks::MakeRow()`. Starting with the v1.41.0 release, and depending on -your compiler settings, using `spanner::MakeTestRow()` may elicit a deprecation -warning. See [#9086] for more details. - -
- -
-Storage: remove the `google::cloud::storage::oauth2` namespace -
- -We will remove the `google::cloud::storage::oauth2` namespace, and all the -header files in `google/cloud/storage/oauth2/`. The new credential types in -`google/cloud/credentials.h` are work with gRPC-based services and support more -use-cases. To create access tokens use the supporting classes in -`google/cloud/oauth2/`. - -
- -
-Common Libraries: remove v1 and gcpcxxV1 -backward compatibility aliases -
- -We will remove the inline namespace aliases of `v1` and `gcpcxxV1` that are -declared in `google/cloud/version.h`. These aliases exist because we changed the -format of our inline namespace name to include the major, minor, and patch -numbers for each release, and we didn't want to break users. Our Doxygen -documentation was mistakenly recommending that users include the inline -namespace names in their code, but this was also fixed to now recommend against -doing so. Users should generally omit the name of our versioned inline namespace -name because that will tightly couple their code to a specific release, and will -make upgrading to newer versions more difficult. Instead, users should simply -omit the inline namespace name, for example, instead of -~`google::cloud::v1::Status`~ use `google::cloud::Status`. Please update your -code to avoid naming the `v1` and `gcpcxxV1` inline namespace names. For more -info, see [#7463] and [#5976]. - -
- [#12987]: https://github.com/googleapis/google-cloud-cpp/issues/12987 -[#5976]: https://github.com/googleapis/google-cloud-cpp/issues/5976 -[#7356]: https://github.com/googleapis/google-cloud-cpp/issues/7356 -[#7463]: https://github.com/googleapis/google-cloud-cpp/issues/7463 -[#8234]: https://github.com/googleapis/google-cloud-cpp/issues/8234 -[#8800]: https://github.com/googleapis/google-cloud-cpp/issues/8800 -[#8854]: https://github.com/googleapis/google-cloud-cpp/issues/8854 -[#9086]: https://github.com/googleapis/google-cloud-cpp/issues/9086 diff --git a/doc/packaging.md b/doc/packaging.md index 862fbe92fea31..e305c8009fa3a 100644 --- a/doc/packaging.md +++ b/doc/packaging.md @@ -115,20 +115,13 @@ quickstart guides also cover this use-case. | Library | Minimum version | Description | | --------------------------------- | ----------------: | ---------------------------------------------------------- | -| [Abseil][abseil-gh] | 20200923, Patch 3 | Abseil C++ common library [^1] | -| [gRPC][grpc-gh] | 1.35.x | An RPC library and framework [^2] | -| [libcurl][libcurl-gh] | 7.47.0 | HTTP client library [^3] | -| [crc32c][crc32c-gh] | 1.0.6 | Hardware-accelerated CRC32C implementation [^4] | -| [OpenSSL][openssl-gh] | 1.0.2 | Crypto functions for [^3] | -| [nlohmann/json][nlohmann-json-gh] | 3.4.0 | JSON for Modern C++ [^3] | -| [protobuf][protobuf-gh] | 3.15.8 | Protobuf is needed for any library based on gRPC [^5] [^6] | - -`google-cloud-cpp` also has an **optional** dependency on the following -libraries: - -| Library | Minimum version | Description | -| --------------------------------- | --------------- | ------------------------------ | -| [OpenTelemetry][opentelemetry-gh] | 1.9.1 | An observability framework[^7] | +| [Abseil][abseil-gh] | 20250814, Patch 1 | Abseil C++ common library [^1] | +| [gRPC][grpc-gh] | 1.76.x | An RPC library and framework [^2] | +| [libcurl][libcurl-gh] | 7.74.0 | HTTP client library [^3] | +| [OpenSSL][openssl-gh] | 3.0.17 | Crypto functions for [^3] | +| [nlohmann/json][nlohmann-json-gh] | 3.12.0 | JSON for Modern C++ [^3] | +| [protobuf][protobuf-gh] | 6.33.x | Protobuf is needed for any library based on gRPC [^5] [^6] | +| [OpenTelemetry][opentelemetry-gh] | 1.23.0 | An observability framework[^7] | Note that these libraries may also depend on other libraries. The following instructions include steps to install these indirect dependencies too. @@ -1211,8 +1204,6 @@ cmake --build cmake-out --target install [^3]: Only some libraries (Compute, SQL Admin, and Google Cloud Storage) require this dependency. -[^4]: Only the Google Cloud Storage client library requires this dependency. - [^5]: The Google Cloud Storage client does not require Protobuf. [^6]: On some platforms, some libraries may need a newer version of Protobuf to @@ -1220,11 +1211,10 @@ cmake --build cmake-out --target install the Protobuf-generated code. [^7]: See the [OpenTelemetry quickstart][otel-qs] for detailed instructions on how - to enable and build this optional dependency. + to build this dependency. [abseil-gh]: https://github.com/abseil/abseil-cpp [abseil/abseil-cpp#696]: https://github.com/abseil/abseil-cpp/issues/696 -[crc32c-gh]: https://github.com/google/crc32c [grpc-gh]: https://github.com/grpc/grpc [homebrew formula]: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/abseil.rb [howto-setup-dev-workstation]: /doc/contributor/howto-guide-setup-development-workstation.md diff --git a/google/cloud/README.md b/google/cloud/README.md index 98e2d2689bbe2..6e0dc7f76e8da 100644 --- a/google/cloud/README.md +++ b/google/cloud/README.md @@ -15,14 +15,6 @@ intended for general use. They are subject to change and/or removal without notice. These include `google/cloud/internal/`, and `google/cloud/testing_utils/`. -## Supported Platforms - -- Windows, macOS, Linux -- C++14 (and higher) compilers. We test with GCC >= 7.5, Clang >= 6.0, and MSVC - \>= 2022 -- Environments with or without exceptions -- Bazel (>= 6.0) and CMake (>= 3.5) builds - ## Documentation - [Reference doxygen documentation][doxygen-link] for each release of this diff --git a/vcpkg.json b/vcpkg.json index 9580c28496fcc..3cd53f101d516 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -6,7 +6,6 @@ "supports": "!uwp", "dependencies": [ "abseil", - "crc32c", { "name": "curl", "features": [ @@ -32,10 +31,7 @@ "nlohmann-json", "benchmark", "gtest", - { - "$description": "Only used for the opentelemetry feature.", - "name": "opentelemetry-cpp" - }, + "opentelemetry-cpp", { "$description": "Only used for the docfx feature.", "name": "pugixml"