Skip to content

Releases: googleapis/google-cloud-rust

v1.0.0

09 Sep 12:53
e9b4038

Choose a tag to compare

First GA release

We are proud to announce the 1.0 release of the Google Cloud client libraries for Rust. This is the first GA version of the client libraries.

What's Included

  • Fully asynchronous clients for over 140 services, including Cloud Storage, Vertex AI, Secret Manager, and Key Management Service.
  • Fully asynchronous auth library, with support for application default credentials, service account credentials, user credentials, compute engine metadata service, and OIDC-based external credentials1.
  • Idiomatic abstractions for long-running operations and pagination APIs.
  • Automatic retries for requests that fail due to transient errors.
  • Automatic demarshalling of error details into idiomatic types.
  • Automatic resumes for uploads to and downloads from Cloud Storage.
  • Support for streaming uploads to Cloud Storage, with retries on errors.
  • Automatic checksumming of data uploaded to or downloaded from Cloud Storage.

What's changed

Compared to the previous release (v0.12.0) this release bumps the version numbers to 1.0.0 and updates README files.

Full Changelog: v0.12.0...v1.0.0

Footnotes

  1. Also known as workload identify federation or "bring your own id".

v0.12.0

06 Sep 02:32
77183b3

Choose a tag to compare

What's Changed

Breaking Changes

  • fix(auth)!: Remove support for quota project from API Key creds by @sai-sunder-s in #3244
  • fix(auth)!: Remove universe domain builder method for mds by @sai-sunder-s in #3249
  • cleanup(gax)!: future proof backoff policy by @coryan in #3250
  • cleanup(gax)!: future proof polling policies by @coryan in #3251

New Client Libraries

  • feat(gkerecommender/v1): generate library by @coryan in #3197

Other Changes

New Contributors

Full Changelog: v0.11.0...v0.12.0

v0.11.0

29 Aug 00:24
f23d269

Choose a tag to compare

What's Changed

Breaking Changes

  • The Cloud Storage client library includes many changes from the 0.25.0-preview5 version. Including:

    • feat(storage)!: return object on checksum mismatch by @coryan in #2871
    • cleanup(storage)!: rename download_resume_policy by @coryan in #2903
    • cleanup(storage)!: move KeyAes256 by @coryan in #2905
    • cleanup(storage)!: rename upload_source module by @coryan in #2904
    • cleanup(storage)!: rename upload_object() by @coryan in #2906
    • cleanup(storage)!: rename with_* setters by @coryan in #2913
    • cleanup(storage)!: rename RecommendedPolicy by @coryan in #2916
    • refactor(storage)!: move ObjectHighlights by @coryan in #2912
    • cleanup(storage)!: ranged reads made type-safe by @coryan in #2924
    • fix(storage)!: remove ChecksumEngine generic trait from the public API by @suzmue in #2907
    • refactor(storage)!: ReadObjectResponse uses pimpl by @dbolduc in #3137
  • cleanup(gax)!: group retry policy arguments by @coryan in #3007

Other announcements

  • We expect this will be the last release before 1.0.

  • feat(cloudsecuritycompliance): generate library by @coryan in #3172

Other changes

  • fix(storage): heed custom polling policies by @dbolduc in #2872
  • fix(storage): fewer errors abort uploads by @coryan in #2873
  • fix(storage): use size in multipart payloads by @coryan in #2877
  • docs(storage): more examples for buckets by @coryan in #2880
  • Docs: Edited examing errors guide to make it more consistent with oth… by @pcoet in #2881
  • docs(storage): bucket ACL examples by @coryan in #2883
  • docs(storage): folder and manage folder examples by @coryan in #2885
  • docs(storage): quickstart examples by @coryan in #2886
  • docs(storage): critical object examples by @coryan in #2900
  • doc(storage): document ChecksumMismatch by @coryan in #2902
  • ci: update Rust build to 1.89 by @coryan in #2908
  • fix(storage): missing header when resuming uploads by @coryan in #2910
  • fix(gax-internal): lazy connects for gRPC clients by @coryan in #2915
  • docs(user-guide): improve binding errors section by @pcoet in #2928
  • fix(storage): preconditions in single-shot uploads by @coryan in #2925
  • fix(storage): correct resumable uploads threshold by @coryan in #2938
  • chore: initial GEMINI.md file by @coryan in #2952
  • docs(storage): default event based hold samples by @coryan in #2951
  • impl(w1r3): deal with preconditions by @coryan in #2950
  • refactor(storage)!: relocate ReadObjectResponse by @dbolduc in #2942
  • fix(storage): more retryable errors by @coryan in #2949
  • docs(storage): public access prevention examples by @coryan in #2953
  • docs(storage): lifecycle examples by @coryan in #2978
  • refactor(storage): split single-shot tests by @coryan in #3005
  • fix(storage): 308s are errors for single-shot uploads by @coryan in #3027
  • fix: match code and minimal versions by @coryan in #3008
  • impl(w1r3): configurable read count by @coryan in #3030
  • docs(storage): website configuration examples by @coryan in #3029
  • refactor(w1r3): duplicate code in error details by @coryan in #3031
  • docs(storage): retention policy examples by @coryan in #3032
  • feat(storage): implement Clone and Display for KeyAes256 and add examples for using CSEK by @suzmue in #3004
  • feat(storage): better retry policy defaults by @coryan in #3124
  • docs(storage): add versioning examples by @coryan in #3034
  • fix(storage): correct mixin service name by @coryan in #3132
  • docs(storage): add some IAM examples by @coryan in #3134
  • docs(storage): add download byte range sample by @suzmue in #3127
  • docs(storage): examples for anywhere cache by @coryan in #3138
  • docs(storage): add autoclass examples by @coryan in #3139
  • docs(storage): add file upload and download examples by @suzmue in #3140
  • docs(storage): examples for CORS by @coryan in #3141
  • docs(user-guide): improve list operations guide by @pcoet in #3144
  • docs(generator/dart): update the generation docs for the Dart backend by @devoncarew in #3146
  • docs: how to get latest librarian version by @coryan in #3147
  • feat(dart): update the Dart SDK version by @devoncarew in #3150
  • docs(storage): more bucket IAM examples by @coryan in #3145
  • docs(storage): RPO examples by @coryan in #3148
  • fix: workload identity federation service account impersonation by @fujin in #3142
  • docs(storage): bucket label examples by @coryan in #3149
  • feat(storage): request types for mocking by @dbolduc in #3155
  • refactor(storage): Checksum as an option by @dbolduc in #3153
  • docs(storage): UBLA examples by @coryan in #3152
  • refactor(storage): use WriteObjectRequest by @dbolduc in #3159
  • refactor(storage): use stub for write_object by @dbolduc in #3161
  • docs(storage): default object ACL examples by @coryan in #3163
  • docs(storage): create bucket with object retention by @coryan in #3165
  • refactor(storage): client uses transport stub by @dbolduc in #3164
  • docs(storage): bucket KMS examples by @coryan in #3162
  • refactor(storage): client is templated on stubs by @dbolduc in #3167
  • feat(storage): fake ReadObjectResponse for mocks by @dbolduc in #3166
  • docs(storage): implement requester pays examples by @coryan in #3170
  • feat(storage): mocking by @dbolduc in #3169
  • doc(storage): nits by @dbolduc in #3173
  • docs(storage): documentation for write_object() by @coryan in #3174

New Contributors

Full Changelog: v0.10.0...v0.11.0

v0.10.0

11 Aug 23:21
bdf9ccb

Choose a tag to compare

What's Changed

Breaking Changes

Cloud Storage

The Cloud Storage client (still in preview) had several breaking changes as we complete the implementation and review the client library surface.

  • cleanup(storage)!: merge upload errors by @coryan in #2821
  • refactor(storage)!: rename send() for uploads by @coryan in #2836
  • cleanup(storage)!: reorganize errors and builders by @coryan in #2846
  • feat(storage): add md5 checksum support for downloads by @suzmue in #2845
  • cleanup(storage)!: change size_hint() return type by @coryan in #2858

Other Changes

Update all libraries to match the service definitions circa 2025-08-08

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.9.0

01 Aug 22:57
b03a2ab

Choose a tag to compare

What's Changed

General

  • We wrote down our MSRV, and our policy to update the MSRV: #2728
  • The implementation of std::fmt::Debug hides the _unknown_fields map if it is empty. The map is empty most of the time, and it is distracting to see in the debug output for nested messages.

Storage

This is the 0.25.0-preview4 release of the Cloud Storage Rust client. This preview includes breaking changes from 0.25.0-preview3, and we expect more breaking changes before GA.

Breaking Changes

  • We removed all_bytes() helper. This used to copy all the bytes into a single buffer. This is dangerous (the download may consume up to 5TiB of RAM, or maybe double this in some cases), and misleading (the data copy was not obvious). We are planning to restore the function with maybe a different signature.
  • size_hint() is now async.

Updates

  • Full downloads verify the checksum (CRC32C) of the received data vs. the checksum reported by the service.
    Downloads capture some metadata information about the object, such as its size, generation, and checksums.
  • A download from the service does not include all the information, but it is often enough to avoid a separate RPC.
  • read_object() will retry downloads that fail to start due to transient errors. It will also resume downloads that are interrupted after they successfully start.
  • upload_object() will retry uploads that fail due to transient errors.
  • upload_object() will verify the checksum returned by the service against the checksum computed from the data.
  • If the checksum is known, the application can set them as part of the upload_object() configuration. In this case the checksum is sent when the upload starts, and the service will verify the checksum before finalizing the upload.
  • If the data source supports Seek, the application can make a pass over the data to precompute the data checksums. In this case, the checksum is sent when the upload starts, and the service will verify the checksum before finalizing the upload.
  • upload_object() also supports the same functionality for MD5 hashes. However, these are slow and we do not recommend you use them unless they are known ahead of time.
  • The futures returned by upload_object() and read_object() are now Send and 'static, making them easier to use in your own code. Sorry we missed that.
  • Error messages for admin requests with missing information (such as the target bucket name) are much improved.
  • Applications can configure the size threshold that switches from single-shot to resumable uploads.
  • impl(storage): make upload buffer size configurable by @coryan in #2718
  • impl(storage): better upload for tokio files by @coryan in #2724
  • feat(storage): local binding errors for bad requests by @dbolduc in #2763
  • fix(storage): return correct errors in uploads by @coryan in #2769
  • feat(storage): add method to retrieve object metadata by @suzmue in #2685
  • feat(storage): upload idempotency option by @coryan in #2793

Auth

New Libraries

  • feat(cloud/bigquery/datapolicies/v2): generate library by @coryan in #2737
  • feat(configdelivery/v1): generate library by @coryan in #2738

Documentation and User Guide

  • docs: clarifications and fixes in retry guide by @pcoet in #2742
  • docs(user-guide): improve enum examples by @coryan in #2768
  • docs(guide): quickstart for Cloud Storage clients by @coryan in #2729
  • docs(storage): tutorial on using a queue by @coryan in #2756
  • docs(storage): add rewrite object guide by @dbolduc in #2767
  • docs(storage): show how to terminate uploads by @coryan in #2772
  • docs(storage): user guide for striped downloads by @coryan in #2770
  • docs: user guide for updating a resource by @pcoet in #2784

Full Changelog: v0.8.0...v0.9.0

v0.8.0

18 Jul 01:46
326d0d7

Choose a tag to compare

What's Changed

  • Document generation for docs.rs failed in v0.7.0: docs.rs uses nightly and our code failed to compile with that version.
  • fix(wkt): no private types in public traits by @dbolduc in #2711

Full Changelog: v0.7.0...v0.8.0

v0.7.0

17 Jul 02:00
aef399f

Choose a tag to compare

What's Changed

Breaking Changes

  • fix(auth)!: Remove option for loading any credential type from json by @sai-sunder-s in #2647

Other Notable Changes

  • A preview of the Google Cloud Storage client library.
  • Update all client libraries to the service definitions as of 2025-07-15.
  • feat(managedkafka/schemaregistry): generate library by @whuffman36 in #2576

More Details

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

24 Jun 03:36
97ff8eb

Choose a tag to compare

What's Changed

  • We stabilized the APIs for all client libraries. This required a number of breaking changes.
  • Our serialization and deserialization code now passes the ProtoJSON conformance tests.
    • For the most part this required accepting a number of messages that may be generated by other ProtoJSON implementations, but not by Google Cloud.
  • We ran a test performing over 1 billion calls to GCP without errors, leaks, or crashes.
  • The gax::error::Error type is stabilized and supports adding new kinds of errors without breaking applications.
    • We introduced specific error types where needed.
    • To query the error "kind" you can use predicates on the error, such as err.is_timeout()
    • We included troubleshooting guides with each error kind.
  • The auth library gained support for service account impersonation.
  • The auth library is gaining support for workload identity federation.
  • We disabled the default features in all our dependencies and only enable the features we use.
  • A number of new libraries.
    • feat(dataform): generate library by @suzmue in #2176
    • feat(cloudquotas/v1): generate library by @coryan in #2258
    • feat(managedkafka/v1): generate library by @coryan in #2449
    • feat(devicestreaming): generate library by @coryan in #2500
    • feat(storagebatchoperations/v1): enable publication by @coryan in #2502

Full Changelog: v0.5.0...v0.6.0

v0.5.0

15 May 11:49
62b98fa

Choose a tag to compare

What's Changed

Breaking Changes

  • Protobuf enumerations are mapped to Rust enumerations.

    • Implemented over several PRs, mainly #1953
  • The google-cloud-aiplatform-v1 crate gained features to select only a subset of the many clients in this crate.

    • Implemented over many PRs, including #1878
  • Most client methods lost the (so far required) path parameters, they must all be set on the request builder returned by these methods using .set_${field_name}(..).

    • The rationale is that many methods can use different fields to build the path parameter and can gain new fields like this over time.
    • Effectively we are trading-off compile-time errors for run-time errors but with more flexible evolution (and more features) for the services.
    • The current run-time errors are fairly minimal, we are planning to improve them in future releases.
  • cleanup(gax)!: hide default idempotency in RequestOptions by @dbolduc in #1877

  • cleanup(wkt)!: remove unused DurationError by @dbolduc in #1900

  • refactor(auth)!: replace create_access_token_credential with builder by @harkamaljot in #1903

  • refactor(auth)!: rename CredentialsTrait to CredentialsProvider by @harkamaljot in #1909

  • cleanup(wkt)!: hide message serialize fns by @dbolduc in #1917

  • cleanup(gax)!: seal Paginator traits by @dbolduc in #1971

  • cleanup(lro)!: seal Poller by @dbolduc in #1972

  • cleanup!: consistent naming style for features by @coryan in #2024

  • cleanup!: remove unstable-sdk-client feature by @coryan in #2025

  • feat(auth)!: update token and header interface by @harkamaljot in #2034

  • refactor(auth)!: replace create_api_key_credentials with builder by @chrischiedo in #2084

  • fix(auth)!: Single method in Service Account Builder for scopes and audience by @sai-sunder-s in #2089

  • cleanup(auth)!: simplify builder by @dbolduc in #2105

  • impl(generator/rust)!: prepare to support additional bindings by @coryan in #2114

  • refactor(auth)!: Remove token method credential provider by @harkamaljot in #2131

  • fix(auth)!: Make Token struct pub(crate) since it is not exposed in a public surface by @sai-sunder-s in #2142

  • feat(lro): convert wkt::Empty to unit type by @coryan in #2031

  • cleanup(wkt): more idiomatic AnyError by @coryan in #2123

  • feat(generator/rust): LROs with unit types by @coryan in #2062

  • fix(auth): Hide testing mod from public documentation by @sai-sunder-s in #2083


  • feat(dataplex/v1): generate library by @coryan in #1848

  • feat(lustre): generate library by @dbolduc in #1923

  • docs: prefer # Parameters in rustdoc comments by @coryan in #1817

  • docs: fix typos in user guide by @chrischiedo in #1823

  • docs: add speech-to-text api to set up dev instructions by @suzmue in #1827

  • docs: fix comments in rustdoc samples by @coryan in #1836

  • feat(auth): support non-default access token credentials by @harkamaljot in #1797

  • cleanup(gaxi): switch from built to rustc_version by @davidbarsky in #1875

  • fix(auth): remove trailing slash from Metadata root by @harkamaljot in #1886

  • docs: add user guide section on Vertex AI by @coryan in #1902

  • fix(gax): paginators should be Send by @coryan in #1916

  • fix(lro): Poller should be Send by @coryan in #1918

  • feat(gax): return default value for struct for 204 NoContent responses by @alvarowolfx in #1913

  • feat(generator/rust): document required setters by @coryan in #1965

  • feat: skip serializing default values by @dbolduc in #1969

  • docs: user guide for paginated operations by @PhongChuong in #1830

  • docs: add explicit dep to the guides by @PhongChuong in #1974

  • test: skip serializing default values in wkt tests by @suzmue in #1976

  • docs: write and link user guide for enumerations by @coryan in #1982

  • feat(generator/rust): use deprecation attributes by @coryan in #1983

  • fix: support nan, inf and -inf serde for f32 in generated code by @suzmue in #1979

  • impl(gax): normalize service errors by @coryan in #1993

  • docs: add instruction for integration test tracing by @PhongChuong in #2004

  • fix: use custom serde for doubles in generated code by @suzmue in #2008

  • fix: add custom serde for DoubleValue by @suzmue in #2009

  • docs: update ARCHITECTURE.md by @coryan in #2006

  • feat(auth): Introduce GCE_METADATA_HOST env var to set the metadata server host by @sai-sunder-s in #2005

  • fix(sql/v1): add crate to top-level workspace by @coryan in #2018

  • fix: POST and PUT requests with empty bodies by @coryan in #2017

  • docs: document features and internal modules by @coryan in #2026

  • docs(lro): examples for Poller by @coryan in #2028

  • docs(gax): Paginator and ItemPaginator samples by @coryan in #2029

  • feat(auth): optimize common path for MDS by @coryan in #2033

  • fix: add attributes for oneof variants in generated code by @suzmue in #2030

  • feat: simplify pagination helpers by @coryan in #2064

  • test: update map oneof test to include serde attribute by @suzmue in #2060

  • docs: add instructions for adding google-cloud-gax crate by @suzmue in #2109

  • docs: add google-cloud-gax instructions to cloud shell by @suzmue in #2112

  • cleanup(auth): reduce -sys dependencies by @coryan in #2118

  • feat(generator): add paginator support for legacy services with maxResults field name by @PhongChuong in #2115

  • docs(gax): fix several nits by @coryan in #2128

  • feat(generator/rust): request builder get examples by @coryan in #2130

  • fix(generator): create files without execute bits by @coryan in #2133

  • feat: telemetry includes REST vs. gRPC fields by @coryan in #2135

  • fix(wkt): deserialize floats from ints by @coryan in #2136

  • docs(lro): more readable type names by @coryan in #2140

  • docs(gax): more readable type names for *Paginator by @coryan in #2141

  • fix(lro): cannot use workspace for self dependency by @coryan in #2144

New Contributors

Read more

v0.4.0

16 Apr 14:08
e7b27ba

Choose a tag to compare

What's Changed

Breaking Changes

There were a number of breaking changes. Many were simple renames of functions. The most interesting were:

  1. Clients are now constructed by using a builder pattern. See How to initialize a client for the updated pattern.
  2. Many types not intended to be public were moved into either the google-cloud-gax-internal crate, or into a mod internal. These types are not part of the public API. They may change or be removed without notice, and we will not consider it a breaking change going forward.

Normal Changes

Read more