Releases: googleapis/google-cloud-rust
2025-11-11
New Libraries
- We are happy to announce the v0.31.0-preview release of google-cloud-pubsub. As the version indicates, this library is under active development. We anticipate many breaking changes over the next few releases. The library is known to be incomplete. We do not recommend that you use the library in production. We do welcome feedback about the API, the documentation, or any bugs you may find.
What's Changed
- feat(gax): introduce connect error by @dbolduc in #3654
- fix(gaxi): retry connect errors by @dbolduc in #3656
- fix(storage): retry connection errors by @dbolduc in #3657
- fix(gaxi): retry connect errors over gRPC by @dbolduc in #3658
- docs(guide): how-to override the default endpoint by @coryan in #3667
- docs(guide): how-to override default authentication by @coryan in #3662
- docs(guide): how-to enable logging by @coryan in #3674
- doc(storage): document stub module by @dbolduc in #3690
- fix(storage):
StorageImplnameable outside crate by @dbolduc in #3683 - impl(storage): handle redirect errors by @coryan in #3715
- feat(gax-internal): preserve
tonic::Statuserrors by @coryan in #3758
Full Changelog: release-20251024...release-20251111
2025-10-24
New Libraries
- We have completed the implementation of the Compute API.
What's Changed
- feat(storage): accept String payload for write_object by @dbolduc in #3480
- docs: Show actual enum values in setter samples. by @amanda-tarafa in #3415
- docs(storage): user guide for mocking
Storageby @dbolduc in #3483 - fix(auth): Read scope from impersonated json by @sai-sunder-s in #3495
- docs(guide): code snippets for compute library by @coryan in #3515
- docs: Add setter samples for oneof fields by @amanda-tarafa in #3527
- docs: retries by default by @dbolduc in #3558
- docs: no client threads by @dbolduc in #3559
- fix(storage): disable default decompression by @coryan in #3550
- feat(storage): support decompressive transcoding by @coryan in #3573
- docs(compute/v1): initial user guide by @coryan in #3598
- fix(storage):
send_buffered()fails for some object sizes by @coryan in #3616 - docs(guide): update setup guide with user feedback improvements by @PhongChuong in #3620
Full Changelog: release-20251007...release-20251024
2025-10-07
Breaking Changes
- The google-cloud-cloudsecuritycompliance-v1 crate was bumped to 2.0 because the service had breaking changes.
- This is a Pre-GA service changes to its API are common and expected.
- google-cloud-discoveryengine-v1
- search(), and search_lite() return pages which contain both
Vec<SearchResult>andVec<Facet>. - Our code generator incorrectly used the
Facetas the items forsearch().by_items()andsearch_lite().by_items(). - The current type is (naturally)
SearchResult.
- search(), and search_lite() return pages which contain both
- We also fixed a similar problem in google-cloud-retail-v2:
- search() also returns pages with both
SearchResultandFacetlists, and theby_items()helper used theFacetwhereasSearchResultis the correct element to turn into items.
- search() also returns pages with both
New Libraries
- feat(locationfinder/v1): generate library by @coryan in #3299
- impl(compute/v1): bootstrap library by @coryan in #3383
What's Changed
-
Refactor most trait implementations out of the
model.rsfiles.- This reduces the file size by (approximately) a factor of 3, making it easier to read them in the documentation and to load them into IDEs.
-
Using locational or regional endpoints with the
StorageControlclient now result in errors.- The service does not support these endpoints (yet).
- The client library was erroneously using the global endpoint instead of the given locational or regional endpoints.
- If you encounter these errors, use the default, global endpoint (
storage.googleapis.com).
-
test(storage): run UBLA-disabled samples by @dbolduc in #3324
-
docs(storage): add read public object example by @suzmue in #3329
-
feat(storage): add rewrite_until_done helper as extension trait by @suzmue in #3328
-
docs(guide): add rewrite_until_done helper to rewrite guide by @suzmue in #3345
-
docs: Single value setter samples for Secret Manager and Workflows by @amanda-tarafa in #3369
-
docs: Adds setter samples for maps and repeated fields by @amanda-tarafa in #3409
-
fix(storage): respect locational endpoints by @dbolduc in #3445
New Contributors
- @westarle made their first contribution in #3346
- @brianquinlan made their first contribution in #3396
Full Changelog: v1.0.0...v1.1.0
v1.0.0
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.
- feat(storage): support object contexts by @coryan in #3266
- docs: declare all libraries as GA by @coryan in #3186
- docs: remove caveats from top-level README by @coryan in #3293
Full Changelog: v0.12.0...v1.0.0
Footnotes
-
Also known as workload identify federation or "bring your own id". ↩
v0.12.0
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
Other Changes
- docs(storage): add
compose_fileexample by @coryan in #3177 - docs(storage): hold examples by @dbolduc in #3180
- docs(storage): add upload and download from memory examples by @suzmue in #3143
- docs(storage): update storage class by @dbolduc in #3182
- docs(storage): add kms key upload example by @suzmue in #3151
- docs(storage): add move file example by @suzmue in #3187
- docs(storage): add object get metadata example by @nvnmandadhi in #3188
- docs(storage): copy file example by @dbolduc in #3184
- fix(gax-internal): alternative endpoints for gRPC by @coryan in #3194
- docs(storage):
set_client_endpointexample by @coryan in #3198 - impl(wkt): workaround for time==0.3.42 by @coryan in #3195
- docs(storage): add sample for rotate encryption key by @suzmue in #3190
- docs(storage): object ACL samples by @dbolduc in #3201
- docs(storage): object archived generation samples by @dbolduc in #3202
- docs(storage): add sample for converting object from csek to cmek by @suzmue in #3203
- docs(storage): add retry configuration samples by @suzmue in #3205
- docs(storage): add object get kms key example by @nvnmandadhi in #3222
- docs(lros): improve style and update dependencies by @pcoet in #3223
- docs(storage): add object print acl example by @nvnmandadhi in #3227
- docs(storage): add object print acl for user example by @nvnmandadhi in #3232
- feat(wkt): conversion to/from
std::time::SystemTimeby @dbolduc in #3231 - chore: bump versions for gax-internal 0.6.0 by @coryan in #3241
- feat(Auth): Anonymous Credentials by @sai-sunder-s in #3256
- cleanup(auth): remove
test_credentials()by @coryan in #3257
New Contributors
- @nvnmandadhi made their first contribution in #3188
Full Changelog: v0.11.0...v0.12.0
v0.11.0
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_policyby @coryan in #2903 - cleanup(storage)!: move
KeyAes256by @coryan in #2905 - cleanup(storage)!: rename
upload_sourcemodule 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
RecommendedPolicyby @coryan in #2916 - refactor(storage)!: move
ObjectHighlightsby @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)!:
ReadObjectResponseuses 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
ChecksumMismatchby @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
ReadObjectResponseby @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
WriteObjectRequestby @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
ReadObjectResponsefor 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
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
- fix(storage): percent-encode name once on uploads by @coryan in #2812
- fix(storage): gRPC in recommended retry policy by @coryan in #2814
- feat(storage): expose
ReadObjecttypes by @dbolduc in #2820 - docs: error handling full code + cleanups by @pcoet in #2822
- feat: user-agent over gRPC by @dbolduc in #2840
- feat: retries by default by @dbolduc in #2843
New Contributors
- @amanda-tarafa made their first contribution in #2818
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
General
- We wrote down our MSRV, and our policy to update the MSRV: #2728
- The implementation of
std::fmt::Debughides the_unknown_fieldsmap 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()andread_object()are nowSendand'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
- cleanup(auth)!: update retry loop by @harkamaljot in #2706
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
v0.7.0
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
- docs: more prerequisites to set up development environment by @pcoet in #2503
- fix(auth): Implement Debug Trait for TokenCache by @sai-sunder-s in #2511
- docs: minor fixes to setup guide by @pcoet in #2526
- feat: binding validation in some services by @dbolduc in #2530
- feat: binding errors + full path support by @dbolduc in #2532
- feat: Support Service Account Impersonation for External Accounts by @sai-sunder-s in #2538
- docs: updates to cloud shell guide by @pcoet in #2543
- docs: explain binding errors by @dbolduc in #2545
- feat(auth): Add ProgrammaticSourcedCredentials by @harkamaljot in #2541
- docs: clarify which project in setup guide by @dbolduc in #2555
- docs: made minor style changes and added some clarifying content by @pcoet in #2563
- feat(auth): Enable impersonation in ProgrammaticBuilder by @harkamaljot in #2565
- feat(auth): Add RetryTokenProvider wrapper by @harkamaljot in #2605
- feat(auth): add support for file sourced credentials by @alvarowolfx in #2609
- fix(auth): Implement framework for Auth Request metric headers and use in impersonated creds by @sai-sunder-s in #2644
- feat(auth): Allow custom retry policy for mds by @harkamaljot in #2629
- feat: full error details over gRPC by @dbolduc in #2673
- docs: style fixes to Vertex guide by @pcoet in #2678
- fix(auth): Add documentation for external accounts and unhide module documentation. by @sai-sunder-s in #2651
- feat(auth): Allow custom retry policy for user by @harkamaljot in #2659
- docs: update maintenance guide by @coryan in #2681
- feat(auth): add retry for external cred by @harkamaljot in #2699
- feat(auth): add retry for impersonated cred by @harkamaljot in #2688
- feat(lro):
into_stream()isUnpinby @dbolduc in #2702
New Contributors
- @pcoet made their first contribution in #2503
- @whuffman36 made their first contribution in #2576
- @varun-doshi made their first contribution in #2631
Full Changelog: v0.6.0...v0.7.0