Releases: googleapis/google-cloud-rust
Release list
2026-08-26
What's Changed
We are pleased to announce the initial public preview of our Google Cloud BigQuery SDK, with a client for querying and a client for streaming writes. We welcome any feedback on the API surface and thank you in advance for trying it out!
- docs(spanner): include examples in README by @olavloite in #6256
- docs(spanner): add runner for samples + add missing sample by @olavloite in #6259
- feat(shopping): onboard several shopping merchant APIs by @noahdietz in #6274
- feat(google-shopping-css-v1): onboard new client library by @noahdietz in #6294
- feat(shopping-merchant): bulk onboard multiple apis by @noahdietz in #6296
- feat(storage): add code samples by @vsharonlynn in #6225
- feat(google-maps-routeoptimization-v1): onboard new client library by @noahdietz in #6301
- feat: update API sources and regenerate by @JoeWang1127 in #6352
- feat(gax): request-level custom HTTP/gRPC headers by @xlai20 in #6260
- feat(google-cloud-workloadidentity-v1): generate library by @JoeWang1127 in #6368
- feat(google-cloud-ftp-v1): generate library by @JoeWang1127 in #6371
- docs(gax): fix
with_custom_header()sample by @coryan in #6377 - fix(gax-internal): serialize
NoBodyas empty JSON object by @haphungw in #6364 - fix(compute/v1): feature-gate add-ons by @coryan in #6384
- fix(lro): reduce stack usage by @dbolduc in #6390
- fix(pubsub): make stream opening cancellation safe by @Zarathustra2 in #6393
- feat(gax): add mutable extension accessors to RequestOptions by @olavloite in #6254
- fix(storage): split large append payloads to avoid gRPC message limits by @vsharonlynn in #6454
- feat(spanner): support custom Root CA and mTLS for Spanner Omni by @olavloite in #6418
- feat(google-cloud-biglake-hive-v1): onboard new client library by @noahdietz in #6484
- feat(storage): global custom header configuration by @xlai20 in #6458
- fix: skip redundant body fields by @dbolduc in #6518
- feat(storage): support initial payload in bidi_write transport by @vsharonlynn in #6489
- feat(spanner): add retry and resume support for BatchWrite by @olavloite in #6513
New Contributors
- @Zarathustra2 made their first contribution in #6393
- @quirogas made their first contribution in #6471
- @avsaase made their first contribution in #6516
Full Changelog: release-20260730...release-20260826
2026-07-30
What's Changed
- feat(streetview-publish-v1): generate library by @coryan in #6031
- feat(health-v4): generate library by @noahdietz in #6034
- feat(storage): make GrpcRustClient available as a transport option by @joshuatants in #6000
- feat(storage): implement appendable upload connector by @vsharonlynn in #5956
- feat(productregistry-v1): onboard new client by @noahdietz in #6051
- feat(spanner): export SpannerRetryPolicy by @fornwall in #6048
- feat(agentidentity-v1): onboard new client by @noahdietz in #6076
- feat(storage): implement appendable upload background worker by @vsharonlynn in #6001
- feat(spanner): add a priority setter to BatchDmlBuilder by @fornwall in #6047
- feat(spanner): add request-options and change-stream-exclusion setters to BatchWriteTransactionBuilder by @fornwall in #6073
- feat(blockchainnodeengine-v1): generate library by @coryan in #6094
- fix(auth): add all 5xx status codes as retryable error by @alvarowolfx in #6093
- feat(geo-type): onboard google-geo-type package by @noahdietz in #6096
- feat(shopping-type): onboard google-shopping-type package by @noahdietz in #6097
- feat(auth): add retry loop for generate_id_token by @alvarowolfx in #6090
- feat(auth): add retry loop for generate_access_token by @alvarowolfx in #6092
- feat(storage): implement appendable upload transport by @vsharonlynn in #6002
- feat(storage): update request models for appendable upload by @vsharonlynn in #5957
- feat(storage): implement open_appendable_object API by @vsharonlynn in #6113
- fix(gax): enforce system-wins precedence for grpc headers by @xlai20 in #6103
- cleanup(pubsub): simplify batch actor timer type signatures by @suzmue in #6129
- feat(storage): implement reopen_appendable_object API by @vsharonlynn in #6114
- feat(storage): add integration test for appendable upload by @vsharonlynn in #6115
- feat(storage): implement TracingAppendableObjectWriter by @vsharonlynn in #5963
- feat(storage): add tracing decorators for open_appendable_object by @vsharonlynn in #6155
- feat(google-maps-fleetengine-v1): onboard new library by @noahdietz in #6164
- feat(google-maps-fleetengine-delivery-v1): onboard new library by @noahdietz in #6165
- feat(storage): add tracing decorators for reopen_appendable_object by @vsharonlynn in #6156
- feat(pubsub): configure universe domain by @dbolduc in #6162
- fix(spanner): fix off-by-one in the streaming-query retry attempt count by @fornwall in #6086
- feat(maps): onboard several maps APIs by @noahdietz in #6167
- feat(storage): introduce basic appendable upload benchmark scenario by @vsharonlynn in #6149
- feat(storage): add iteration metrics and CSV reporting to appendable upload benchmark by @vsharonlynn in #6170
- feat(spanner): connection options for Spanner Omni by @olavloite in #6205
- feat(maps): onboard several maps APIs by @noahdietz in #6188
- feat(maps): onboard more maps APIs by @noahdietz in #6217
- feat(storage): object-level checksum in gRPC bidi read by @xlai20 in #6131
- feat(storage): add runner script and docs for appendable upload benchmark by @vsharonlynn in #6171
- feat(gax): add type-erased extensions support to ClientBuilder by @olavloite in #6213
- docs(spanner): add samples for indexes with storing columns by @olavloite in #6193
- feat(spanner): accept T: Into in parameter and mutation bindings by @olavloite in #6184
- feat(spanner): add declarative mutation macro by @olavloite in #6196
- docs(spanner): add partitioned DML samples by @olavloite in #6195
- fix(deps): specify version for google-cloud-monitoring-v3 by @zhumin8 in #6239
New Contributors
- @fornwall made their first contribution in #6048
- @panimidi made their first contribution in #6050
- @raushan728 made their first contribution in #6116
Full Changelog: release-20260713...release-20260730
2026-07-13
What's Changed
- fix(o11y): fix incorrect done status in LRO tracing by @haphungw in #5879
- feat(spanner): implement FromValue for serde_json::Value with dynamic STRUCT/ARRAY deserialization by @buu-nguyen in #5863
- feat(o11y): regenerate stubs with
lro_stub_optionsenabled by @haphungw in #5880 - docs(storage): document delete_source_objects by @joshuatants in #5881
- test(o11y): add GAPIC LRO tracing success integration test by @haphungw in #5885
- fix(spanner): include seqno with queries in r/w transactions by @olavloite in #5894
- feat(google-cloud-agentregistry-v1): generate library by @zhumin8 in #5909
- fix(spanner): make types module public for typed param construction by @buu-nguyen in #5912
- perf(spanner): optimize failed first statement in read/write transaction by @olavloite in #5921
- feat(spanner): support the last_statement flag by @olavloite in #5920
- feat(storage): implement V4 Signed Policy Documents by @xlai20 in #5914
- fix(o11y): fix
record_discovery_polling_resultmacro compilation failure by @haphungw in #5952 - fix(gax-internal): escape URL path in requests by @coryan in #5959
- feat(developers/knowledge): onboard v1 library by @noahdietz in #5970
- feat(gax): retry on timeouts policy decorator by @coryan in #5982
- feat(o11y): extract error details and type for Discovery LROs by @haphungw in #5955
- feat: onboard ads datamanager v1 by @noahdietz in #6011
- feat: onboard apps events subscriptions v1 by @noahdietz in #6013
- feat: onboard apps card v1 by @noahdietz in #6012
- feat: onboard apps meet v2 by @noahdietz in #6018
- feat: onboard chat v1 by @noahdietz in #6019
- feat(o11y): remove
google_cloud_unstable_tracinggate for LRO tracing by @haphungw in #5897 - feat(oracledatabase)!: bump major version by @codyoss in #6028
New Contributors
- @buu-nguyen made their first contribution in #5863
- @xlai20 made their first contribution in #5914
- @g-husam made their first contribution in #5961
Full Changelog: release-20260612...release-20260713
2026-06-12
What's Changed
- fix(spanner): drain query streams when seen_last is true by @olavloite in #5846
- fix(spanner): drain query stream on drop if last=true by @olavloite in #5858
- fix(spanner): retry transport errors by @olavloite in #5859
- fix(auth): retry more transient errors by @dbolduc in #5866
Full Changelog: release-20260604...release-20260612
2026-06-04
What's New
This release includes a preview version for the Cloud Spanner client. We welcome feedback for this new client, and thank you in advance for trying it out.
What's Changed
Full Changelog: release-20260603...release-20260604
2026-06-03
What's Changed
- feat(geminidataanalytics): generate library by @noahdietz in #5609
- docs(storage): add storage_quota_project sample by @joshuatants in #5594
- feat(auth): make GDCH authentication pub by @alvarowolfx in #5614
- feat(gax): add client-level attempt_timeout and use as transport default by @abhinavgautam01 in #5630
- docs: add guides for occ, configure_client, and troubleshooting by @bshaffer in #5441
- cleanup: remove unused dependencies by @alvarowolfx in #5675
- docs: document major decisions by @coryan in #5684
- fix(storage): provide user project for requester pays samples by @joshuatants in #5672
- feat(storage): include custom object metadata in ObjectHighlights by @metebalci in #5687
- feat(storage): add support for universe domain by @alvarowolfx in #5703
- fix(storage): strip projects prefix in cleanup bucket by @haphungw in #5715
- feat(backstory): generate library by @coryan in #5722
- feat(storage): send CRC32C checksum on final chunk of buffered resumable uploads by @vsharonlynn in #5655
- cleanup(pubsub): update README by @dbolduc in #5792
- chore: bump MSRV to 1.88 by @coryan in #5797
- chore: update rust to 1.96 by @coryan in #5800
- fix(o11y): record
gcp.resource.destination.idon T3 client request spans by @haphungw in #5802 - chore: bump all versions for June 3rd release by @suztomo in #5824
New Contributors
- @abhinavgautam01 made their first contribution in #5630
- @bshaffer made their first contribution in #5441
- @metebalci made their first contribution in #5687
Full Changelog: release-20260505...release-20260603
2026-05-05
What's Changed
- feat(gax): add universe domain mismatch error by @alvarowolfx in #5419
- docs(auth): Credentials methods by @alvarowolfx in #5418
- fix(wkt): implement camelCase conversion for FieldMask JSON mapping by @haphungw in #5422
- feat(pubsub): retry confirmed_ack partial failures in Subscriber by @PhongChuong in #5431
- feat(storage): accept
Into<Arc<S>>infrom_stubby @haphungw in #5453 - docs: document safe local backend usage for terraform integration tests by @haphungw in #5440
- docs: add observability samples by @westarle in #5448
- feat: generate updated clients with
from_stubacceptingInto<Arc<S>>by @haphungw in #5457 - feat(pubsub): expose RetryableErrors for customized retry configuration by @suzmue in #5411
- feat(pubsub): add delivery attempt tracking to subscriber by @suzmue in #5503
- feat(auth): support non-UTF8 paths for ADC by @alvarowolfx in #5526
- fix(pubsub)!: make ShutdownBehavior non_exhaustive by @suzmue in #5533
- feat(pubsub): retry confirmed_nack partial failures in Subscriber by @PhongChuong in #5563
- feat(auth): make universe domain pub by @alvarowolfx in #5565
- docs: Format resource names in RPC samples by @amanda-tarafa in #5504
- feat(pubsub): retry exactly once lease extensions by @PhongChuong in #5571
- feat(storage): add user_project option by @joshuatants in #5490
- feat(storage): add quota_project option by @joshuatants in #5578
New Contributors
Full Changelog: release-20260413...release-20260505
2026-04-13
What's Changed
The libraries are instrumented to generate the following signals:
INFOspans for each logical client request. Typically a single method call in the client struct gets such a span.- A histogram metric measuring the elapsed time for each logical client request.
WARNlogs for each logical client requests that fail.INFOspans for each low-level attempt RPC attempt. Typically a single method in the client struct gets one such span, but there may be more if the library had to retry the RPC.DEBUGlogs for each low-level attempt that fails.
These spans and logs follow OpenTelemetry Semantic Conventions with additional Google Cloud attributes. Both the spans and logs and are should be suitable for production monitoring.
The libraries also have DEBUG spans for each request, these include the full request body, the full response body for successful requests, and the full error message, with details, for failed requests. Consider the contents of these requests and responses before enabling them in production environments, as the request or responses may include sensitive data.
These DEBUG spans use the client library crate followed by ::tracing as their target (e.g. google-cloud-secretmanager-v1::tracing) and the method name as the span name.You can use the name and/or target to set up your filters.
Warning
Observability signals at any level may contain sensitive data such as resource names, full URLs, and error messages.
Before configuring subscribers or exporters for traces and logs, review the contents of the spans and consult the tracing framework documentation to set up filters and formatters to prevent leaking sensitive information, depending on your intended use case.
More information
The Enable logging guide shows you how to initialize a subscriber to log events to the console.
Other changes
- fix(pubsub): batch nacks on shutdown to respect service limits by @suzmue in #5149
- feat(storage): skip unnecessary checksum computation during read_object by @vsharonlynn in #5134
- fix(pubsub): avoid ack batch size limit errors by @dbolduc in #5227
- feat(pubsub): add APIs to shutdown subscriber by @dbolduc in #5257
- feat(pubsub): add nack() method to Handler for AtLeastOnce by @suzmue in #5261
- fix(auth): executable sourced creds should accept id token type by @alvarowolfx in #5316
- feat(pubsub): add confirmed_nack to ExactlyOnce handler by @suzmue in #5303
- docs: minor docs fixes by @zoryamba in #5370
- docs: fix enum guide link by @dbolduc in #5378
Full Changelog: release-20260327...release-20260413
2026-03-27
New Libraries
What's Changed
- feat(gax): retry on
Unknownand 503 by @coryan in #5023 - feat(pubsub): configurable max lease by @dbolduc in #5005
- feat(storage): Add method to disable checksums on read object by @vsharonlynn in #4993
- feat(pubsub): add exactly once delivery in Subscriber by @PhongChuong in #5032
- fix(pubsub): longer default lease extension by @dbolduc in #5045
- docs(pubsub): fix link in the Publisher doc comment by @suzmue in #5066
- docs(storage): add bucket encryption examples by @joshuatants in #5073
- feat(pubsub): configure subscriber shutdown behavior by @dbolduc in #5064
- fix(pubsub): default shutdown behavior by @dbolduc in #5110
- docs(pubsub): remove warnings about crate instability by @suzmue in #5082
Full Changelog: release-20260312...release-20260327
2026-03-12
Breaking Changes
- fix(pubsub)!: return PublishError from Publish instead of an Arcgax::error by @PhongChuong in #4681
- cleanup(pubsub)!: move the BasePublisher out of crate::client::* by @suzmue in #4637
- cleanup(pubsub)!: rename
Session->MessageStreamby @dbolduc in #4742 - refactor(pubsub)!: rename subscriber stream creation functions by @suzmue in #4799
- cleanup(pubsub)!: rename subscribe API by @dbolduc in #4910
- cleanup(pubsub)!: clarify deadline extension option by @dbolduc in #4949
New Libraries
- feat(google-cloud-hypercomputecluster-v1): generate library by @miguelvelezsa in #4932
- feat(google/cloud/vectorsearch/v1): generate library by @miguelvelezsa in #4934
- feat(securitycentermanagement-v1): add library by @coryan in #4986
- feat(pubsub): the library reached 0.33.0 we think we are less likely to change the APIs before GA and 1.0
What's Changed
- fix(pubsub): Publisher byte threshold off by one error by @PhongChuong in #4651
- docs(pubsub): add subscriber example to client module docs by @suzmue in #4686
- feat(pubsub): make ListTopicSubscriptions a paginator by @suzmue in #4709
- feat(pubsub): add default backoff_policy for the publisher by @suzmue in #4712
- feat(pubsub): define default retry policy for publisher by @suzmue in #4711
- docs(storage): add sample for storage_open_object_single_ranged_read by @joshuatants in #4676
- docs: Generate RPC samples for all APIs by @amanda-tarafa in #4720
- fix(pubsub): handle batch actor shutdown gracefully by @suzmue in #4725
- fix(pubsub): return error when publishing messages that are too large by @PhongChuong in #4732
- fix(doc): Concurrency bug in striped_downloads.md guide by @fellhorn in #4731
- feat(pubsub): retry batches for ordering key messages forever by @suzmue in #4722
- feat(pubsub): use configured retry policy for ordering key by @suzmue in #4743
- feat(storage): tracing and logging by @coryan in #4740
- docs(guide): fix striped downloads on Windows by @coryan in #4748
- docs(storage): add sample for storage_open_object_read_full_object by @vsharonlynn in #4745
- docs(pubsub): cleanup the crate level documentation by @suzmue in #4779
- docs(pubsub): improve PublishFuture documentation by @suzmue in #4780
- docs(pubsub): cleanup documentation to include receiving messages by @suzmue in #4794
- docs(storage): add sample for storage_open_object_multiple_ranged_read by @vsharonlynn in #4785
- fix(pubsub): increase default publish batch limit to 1 MB by @suzmue in #4802
- feat(auth): AWS sourced external accounts by @alvarowolfx in #4790
- docs: Slight change in generated sample formatting by @amanda-tarafa in #4827
- fix(pubsub): publish messages larger than the configured batch threshold by @PhongChuong in #4822
- fix(pubsub): update Flush to not block the Publisher by @PhongChuong in #4823
- docs(storage): add sample for storage_open_multiple_objects_ranged_read by @vsharonlynn in #4816
- docs: Improve parameter naming for RPC samples by @amanda-tarafa in #4837
- feat(gax): retry policy decorator for 429 errors by @coryan in #4783
- docs(guide): follow google style guide by @coryan in #4831
- fix(pubsub): permanent errors end stream by @dbolduc in #4849
- docs: Generate QuickStart samples by @amanda-tarafa in #4844
- feat(gax): make
error::rpc::Code::name()be&'static strby @coryan in #4876 - feat(auth): add support for headless workforce identity by @alvarowolfx in #4825
- feat(storage): support setting a custom user-agent on the client by @joshuatants in #4839
- docs: Generate QuickStarts for all APIs by @amanda-tarafa in #4889
- fix(pubsub): make Publisher::builder() generic by @suzmue in #4929
- docs(pubsub): improve flush documentation by @suzmue in #4930
- fix(conformance): remove -root suffix from conformance module by @jameslynnwu in #4921
- docs(pubsub): touchup gRPC subchannel by @dbolduc in #4954
- docs(pubsub): add generic client documentation to the publisher client by @suzmue in #4958
- docs(pubsub): clarify ordered delivery by @dbolduc in #4961
- docs(pubsub): add into_stream example by @dbolduc in #4965
New Contributors
- @fellhorn made their first contribution in #4731
- @vsharonlynn made their first contribution in #4745
- @olavloite made their first contribution in #4828
- @jskeet made their first contribution in #4893
- @jameslynnwu made their first contribution in #4921
Full Changelog: release-20260212...release-20260312