Releases: googleapis/google-cloud-rust
Release list
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
v0.6.0
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::Errortype 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
- cleanup!: errors do not need to be
PartialEqby @coryan in #2158 - docs: improve request builder examples by @coryan in #2143
- feat!: split setters for optional fields by @coryan in #2157
- cleanup!: do not re-export
lro::Pollerby @coryan in #2164 - doc(wkt): improve docs for
Structand friends by @coryan in #2169 - fix(wkt)!: preserve sources of errors by @coryan in #2168
- docs(wkt): add more examples by @coryan in #2170
- docs(wkt): call out feature flags in
Durationby @dbolduc in #2179 - feat(wkt)!:
Timestampcan implementCopyby @coryan in #2190 - feat(wkt)!:
Durationcan implementCopyby @coryan in #2189 - feat!: make errors
#[non_exhaustive]by @coryan in #2191 - feat(wkt): implement
TryFrom<&String>by @coryan in #2188 - cleanup(wkt)!: rename
Any::functions by @coryan in #2196 - cleanup!: better mapping for enum value names by @coryan in #2192
- cleanup(wkt)!:
Timestampalways serialize by @coryan in #2195 - docs(gax): improve some examples by @coryan in #2207
- cleanup(deps)!: disable default features by @coryan in #2225
- cleanup(gax)!: use builder for
ServiceErrorby @coryan in #2227 - cleanup(gax)!: use
HeaderMapfor headers by @coryan in #2229 - docs(gax)!: hide policy functions by @coryan in #2241
- fix(auth): Improve Error Msg when no MDS is present by @sai-sunder-s in #2187
- fix(auth): allow token exchange without auth info by @alvarowolfx in #2218
- docs: fix typos in README document by @chrischiedo in #2257
- fix(gax): correct
source()inCredentialsErrorby @coryan in #2268 - cleanup(auth)!: separate type for build errors by @coryan in #2264
- fix(gax): handle unknown error details by @coryan in #2271
- feat!: use
gax::client_builder::Errorby @coryan in #2281 - cleanup(gax)!: split policy error types by @coryan in #2265
- cleanup(gax)!: hide
CredentialsErrordetails by @coryan in #2290 - cleanup(gax)!: new error type by @coryan in #2267
- feat: different error kind for timeouts by @coryan in #2301
- feat(auth): Enable quota project setting via env variable by @harkamaljot in #2304
- feat(auth): add external account for workload identity federation by @alvarowolfx in #2294
- docs(gax): improve
Errordocumentation by @coryan in #2329 - docs: avoid private functions in user guide by @coryan in #2332
- feat: new error kind for deserialization by @coryan in #2331
- impl(generator/rust): support
boolkeys in maps by @coryan in #2345 - feat(gax): new error kind for serialization by @coryan in #2336
- feat(auth): handle external account from credentials builder by @alvarowolfx in #2319
- fix(wkt):
FieldMaskserialization by @coryan in #2348 - refactor(gax): capture prev error in retry loop by @dbolduc in #2351
- fix(gax): do not sleep past overall timeout by @dbolduc in #2353
- docs: improve LRO policy guide by @coryan in #2333
- impl(wkt): better validation for
Anyby @coryan in #2359 - cleanup(generator/rust): use
Error::ser()by @coryan in #2358 - impl(wkt): parse floats from strings by @coryan in #2344
- feat(auth): add support for executable sourced credentials by @alvarowolfx in #2356
- fix(auth): exec source cred not being detected properly by @alvarowolfx in #2420
- feat(gax): error kind for exhausted policies by @coryan in #2424
- feat: split libraries with more than 15 clients by @coryan in #2444
- feat(auth): Impersonated Service Account Credentials by @sai-sunder-s in #2452
- feat(gax): introduce
BindingErrorby @dbolduc in #2487 - feat(gax)!: preserve retry loop errors by @coryan in #2456
- refactor!: rename
gax::loop_state::LoopStateby @coryan in #2498
Full Changelog: v0.5.0...v0.6.0
v0.5.0
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
RequestOptionsby @dbolduc in #1877 -
cleanup(wkt)!: remove unused
DurationErrorby @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!: consistent naming style for features by @coryan in #2024
-
cleanup!: remove
unstable-sdk-clientfeature 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
-
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::Emptyto unit type by @coryan in #2031 -
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
-
docs: prefer
# Parametersin 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
-
feat(auth): support non-default access token credentials by @harkamaljot in #1797
-
cleanup(gaxi): switch from
builttorustc_versionby @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
-
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
-
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
-
docs: add instruction for integration test tracing by @PhongChuong in #2004
-
fix: use custom serde for doubles in generated code by @suzmue in #2008
-
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(gax):
PaginatorandItemPaginatorsamples 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
-
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
-
feat(generator): add paginator support for legacy services with maxResults field name by @PhongChuong in #2115
-
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
-
docs(gax): more readable type names for
*Paginatorby @coryan in #2141 -
fix(lro): cannot use workspace for self dependency by @coryan in #2144
New Contributors
- @suzmue made their first contribution in #1827
- @dhvll made their first contribution in #1860
- @davidbarsky made their first contribution in #1875
- @PhongChuong made their first contribution in #1887
- @alvarowolfx made their first contribution in https://githu...
v0.4.0
What's Changed
Breaking Changes
There were a number of breaking changes. Many were simple renames of functions. The most interesting were:
- Clients are now constructed by using a builder pattern. See How to initialize a client for the updated pattern.
- Many types not intended to be public were moved into either the
google-cloud-gax-internalcrate, or into amod 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.
- impl(auth)!: ring for default crypto provider by @dbolduc in #1492
- feat(gax)!: stable paginator by @dbolduc in #1466
- cleanup!: remove 'unstable-stream' feature from clients by @dbolduc in #1499
- refactor!: move
ReqwestClientby @coryan in #1497 - refactor!: move param helpers to
g-c-http-clientby @coryan in #1507 - cleanup(wkt)!: hide
wkt::generatedmodule by @dbolduc in #1589 - cleanup!: hide request builder impls by @dbolduc in #1605
- refactor!: rename polling policy by @coryan in #1608
- cleanup!: use new name for
PollingErrorPolicyby @coryan in #1614 - cleanup!: remove
PollingPolicyvestiges by @coryan in #1610 - cleanup(gax)!:
ClientConfigdoes not need to clear options by @dbolduc in #1625 - feat!: return unit type instead of
wkt::Emptyby @coryan in #1635 - cleanup(gax)!: seal
RequestOptionsBuilder; hideRequestBuilderby @dbolduc in #1637 - cleanup(gax)!: rename paginator to stream by @dbolduc in #1611
- feat!: use builder to create all clients by @coryan in #1649
- cleanup!: hide
PageableResponsetrait by @dbolduc in #1666 - cleanup(auth)!: remove unused type by @coryan in #1697
- fix(auth)!: Rename CredentialTrait to CredentialsTrait and UserCredential to UserCredentials by @sai-sunder-s in #1704
- fix(auth)!: Rename the public Credential Struct to Credentials by @sai-sunder-s in #1707
- fix(auth)!: Rename create_access_token_credential to create_access_token_credentials by @sai-sunder-s in #1711
- fix(auth)!: Rename ServiceAccountCredential and MDSCredential by @sai-sunder-s in #1712
- fix(auth)!: Rename CredentialError to CredentialsError by @sai-sunder-s in #1713
- fix(auth)!: Rename get_universe_domain to universe_domain by @sai-sunder-s in #1721
- fix(auth)!: rename get_headers to headers by @sai-sunder-s in #1720
- fix(auth)!: Rename get_token to token by @sai-sunder-s in #1729
- cleanup(gax)!: prefer "CANCELLED" by @dbolduc in #1736
- cleanup(gax)!:
Paginatoras a trait by @dbolduc in #1737 - cleanup(lro)!: prefer into_stream by @dbolduc in #1742
- cleanup!: shorten oneof accessors by @dbolduc in #1803
Normal Changes
- fix(generator/rust): enum default values by @coryan in #1363
- doc(auth): clarify
Noneexpiration by @dbolduc in #1373 - feat(auth): API Key credentials by @dbolduc in #1372
- feat(generator/rust): enums with bad defaults by @coryan in #1389
- feat(wkt): add
DescriptorProtoby @coryan in #1390 - feat(wkt): implement
NullValueby @coryan in #1388 - feat(financialservices): generate library by @dbolduc in #1396
- fix(wkt): no trailing zeroes in duration as JSON by @coryan in #1400
- feat(wkt): easier to set paths in
FieldMaskby @coryan in #1413 - fix(auth): feature gate aws_lc_rs from rustls by @Sh4d1 in #1359
- feat(wkt): add
type_url()toAnyby @coryan in #1419 - feat(parametermanager/v1): generate library by @coryan in #1423
- feat(wkt): convert to Prost's version of the WKT by @coryan in #1420
- fix(generator/rust): name conflicts for
bytesby @coryan in #1428 - feat(generator): separate unique enum values by @coryan in #1435
- docs: start architecture document by @coryan in #1449
- fix(firestore): include in default workspace members by @coryan in #1450
- feat(generator/rust)!: use integers for enums by @coryan in #1448
- fix(auth): Read token_uri from user json by @sai-sunder-s in #1430
- feat(wkt):
NullValuebehaves like enums by @coryan in #1485 - docs(gax): include streaming APIs by @dbolduc in #1487
- docs(wkt): time and chrono conversions by @dbolduc in #1488
- docs(lro): to_stream methods by @dbolduc in #1508
- feat(bigquery/admin/v2): generate library by @coryan in #1540
- feat(generator): support empty return types by @coryan in #1591
- feat(auth): support non-default MDS credentials by @harkamaljot in #1472
- feat(generator/rust): full transport and client for gRPC by @coryan in #1597
- feat(generator/rust): modules link their message by @coryan in #1606
- feat(auth): introduce caching for user credentials by @sai-sunder-s in #1607
- feat(auth): Integrate service account with token cache by @sai-sunder-s in #1628
- feat(auth): integrate mds cred with token cache by @sai-sunder-s in #1629
- fix(wkt): non-negative timestamp nanos by @coryan in #1634
- docs: user-guide section on retry policies by @coryan in #1657
- docs: user-guide section on mocking by @dbolduc in #1659
- docs: user guide on error handling by @coryan in #1670
- feat(storagebatchoperations): generate library by @dbolduc in #1676
- fix(gax): deserialize error details by @coryan in #1680
- docs: link client call in builder by @dbolduc in #1678
- docs: mocking errors by @dbolduc in #1683
- docs(user-guide): how to examine error details by @coryan in #1685
- feat(gax): new type to represent credential errors by @coryan in #1688
- feat(auth): support non-default Service account credentials by @harkamaljot in #1660
- fix(auth): Updating ApiKeyCredential to ApiKeyCredentials by @sai-sunder-s in #1706
- cleanup: pagination tests by @dbolduc in #1703
- impl(gax-credentials): retry loop in
grpc::Clientby @coryan in #1708 - docs: user guide for testing LROs by @dbolduc in #1695
- docs: fix typos in architecture document by @chrischiedo in #1723
- feat(licensemanager/v1): generate library by @coryan in #1730
- feat(chronicle)...
v0.3.0
What's Changed
- In this release we changed the prefix for all crates. They all live under
google-cloud-*. This is the final location for the crates. - We are working on a User Guide, please give us your feedback.
- The guide includes set up instructions for Cloud Shell and developer workstations.
Breaking changes
- fix(auth)!: stable token expiration type by @dbolduc in #1134
- feat(auth)!: clone-able
CredentialErrorby @dbolduc in #1349
Normal changes
- feat(accessapproval/v1): generate library by @coryan in #939
- feat(kms/inventory/v1): generate library by @coryan in #934
- feat(artifactregistry/v1): generate library by @coryan in #943
- feat(apigateway/v1): generate library by @coryan in #949
- feat(apigeeconnect/v1): generate library by @coryan in #955
- feat(assuredworkloads/v1): generate library by @coryan in #957
- fix(generator/rust): set next_page token when streaming by @fiadliel in #977
- feat(logging/type): generate library by @coryan in #935
- feat(recaptchaenterprise/v1): generate library by @coryan in #973
- feat(essentialcontacts/v1): generate library by @coryan in #975
- feat(datastore/admin/v1): generate library by @coryan in #980
- feat(rpc/context): generate library by @coryan in #984
- feat(servicecontrol/v1): generate library by @coryan in #992
- feat(datacatalog/v1): generate library by @coryan in #994
- feat(videointelligence/v1): generate libraries by @coryan in #998
- feat(networkmanagement/v1): generate library by @coryan in #996
- feat(vision/v1): generate library by @coryan in #1000
- feat(servicecontrol/v2): generate library by @coryan in #1002
- feat(bigquery/connection/v1): generate library by @coryan in #1006
- fix(generator/rust): packages with only enums by @coryan in #1015
- feat(datafusion/v1): generate library by @coryan in #1024
- feat(recommended/v1): generate library by @coryan in #1020
- feat(orgpolicy/v2): generate library by @coryan in #1017
- feat(bigquery/datatransfer/v1): generate library by @coryan in #1022
- feat(accesscontextmanager/type): generate library by @coryan in #1027
- feat(recommender/logging/v1): generate library by @coryan in #1028
- feat: update most existing generated crate names by @codyoss in #1030
- feat(sidekick/rust): add convenience method new to all msgs by @codyoss in #1029
- feat(accesscontextmanager/v1): generate library by @coryan in #1035
- feat: update handwritten crate names to use google-cloud prefix by @codyoss in #1037
- chore: simplify return statements in test module by @kasugamirai in #1038
- feat(bigquery/reservation/v1): generate library by @coryan in #1043
- feat(appengine/v1): generate library by @coryan in #1044
- feat(eventarc/v1): generate library by @coryan in #1046
- fix: avoid escaping hyperlinks that span multiple lines by @mpeddada1 in #1048
- feat(redis/v1): generate library by @codyoss in #1060
- feat(billing/v1): generate library by @codyoss in #1058
- feat(deploy/v1): generate library by @codyoss in #1056
- feat(generator): support more
-rootoptions by @coryan in #1054 - feat(generator/rust): re-export LRO poller by @coryan in #1065
- feat(cloud/common): generate library by @coryan in #1072
- feat(notebooks/v2): generate library by @coryan in #1069
- feat(grafeas): generate library by @coryan in #1074
- feat(video/transcoder/v1): generate library by @coryan in #1086
- feat(tpu/v2): generate library by @codyoss in #1097
- feat(iap/v1): generate library by @codyoss in #1093
- feat(memcache/v1): generate library by @codyoss in #1095
- feat(speech/v2): generate library by @coryan in #1063
- feat(binaryauthorization/v1): generate library by @coryan in #1100
- docs: fix broken link by @dbolduc in #1101
- feat(documentai/v1): generate library by @coryan in #1104
- feat(websecurityscanner/v1): generate library by @coryan in #1106
- feat(filestore/v1): generate library by @coryan in #1107
- feat(orchestration/airflow/service/v1): generate library by @coryan in #1116
- feat(policytroubleshooter/v1): generate library by @coryan in #1114
- feat(vmmigration/v1): generate library by @coryan in #1112
- feat(clouddms/v1): generate library by @coryan in #1119
- feat(wkt): support
Anyinside anAnyby @coryan in #1117 - feat(shell/v1): generate library by @codyoss in #1125
- feat(talent/v4): generate library by @codyoss in #1128
- feat(securitycenter/v2): generate library by @codyoss in #1130
- fix(auth)!: stable token expiration type by @dbolduc in #1134
- feat(redis/cluster/v1): generate library by @coryan in #1131
- feat(contactcenterinsights/v1): generate library by @coryan in #1133
- feat(texttospeech/v1): generate library by @coryan in #1140
- feat(ids/v1): generate library by @coryan in #1138
- feat(optimization/v1): generate library by @coryan in #1144
- feat(servicedirectory/v1): generate library by @coryan in #1142
- feat(managedidentities/v1): generate library by @coryan in #1156
- feat(logging/v2): generate library by @coryan in #1147
- feat(security/privateca/v1): generate library by @coryan in #1149
- feat(oslogin/common): generate library by @coryan in #1159
- feat(wkt):
Anysupport forStructand friends by @coryan in #1152 - feat(oslogin/v1): generate library by @coryan in #1161
- feat(dialogflow/cx/v3): generate library by @coryan in #1160
- feat(metastore/v1): generate library by @codyoss in #1166
- feat(dataproc/v1): generate library by @codyoss in #1170
- feat(datastream/v1): generate library by @codyoss in #1171
- feat(policytroubleshooter/iam/v3): generate library by @coryan in https://github.com/googleapis/goo...
v0.2.0
What's Changed
- BREAKING CHANGE feat!: mixins (RPCs injected into services from a small family of well-known generic services) work by adding RPCs instead of adding new clients.
- BREAKING CHANGE cleanup(generator/rust): rename
traitsmodule by @coryan in #891 - feat: applications can initialize clients to use service account credentials.
- feat: applications can provide retry policies to either clients or specific RPCs (or both).
- feat: helper functions to handle long-running operations (LROs).
- feat: easier to use mapping for enum values.
- feat: simplify enum setters by @mpeddada1 in #884
- feat: helpers to set and get
oneofvalues. - feat: verify the type stored into an
Anymatches the type being extracted from theAny. - docs: multiple improvements to generated documentation:
- fix: use goldmark for parsing code blocks from proto comments by @mpeddada1 in #693
- docs: link the local clients by @coryan in #804
- fix top-level links by @coryan in #691
- fix: escape html tags for placeholders in comments by @mpeddada1 in #801
- Handle recursive types, that is, messages that refer to themselves directly or indirectly.
- fix: serialization of
oneoffields by @coryan in #637 - feat(wkt): make
any::AnyErrorSendandSyncby @coryan in #641 - feat(gax):
Statusfrom arpc::model::Statusby @coryan in #650 - feat(gax): use
ServiceErrorfor responses by @coryan in #659 - feat(gax): a
NeverRetryretry policy by @coryan in #687 - feat(wkt): implement
Structand friends by @coryan in #754 - feat(spanner): generate admin libraries by @coryan in #743
- feat(wkt): generated but well known types by @coryan in #762
- feat(kms): generate library by @coryan in #767
- feat(cloudtrace/v2): generate library by @coryan in #784
- feat(api): generate library for
google/apiby @coryan in #785 - feat(sql/v1): generate library by @coryan in #786
- feat(webrisk): generate library by @coryan in #787
- feat(run/v2): generate library by @coryan in #788
- feat(translate/v3): generate library by @coryan in #791
- feat(cloudbuild/v2): generate library by @coryan in #790
- feat(iam/v2): generate library by @coryan in #823
- feat(iam/credentials/v1): generate library by @coryan in #820
- feat(functions/v2): generate library by @coryan in #816
- feat(bigtableadmin/v2): generate library by @coryan in #836
- feat(iam-admin-v1): generate library by @coryan in #843
- feat(scheduler/v1): generate library by @coryan in #848
- feat(language/v2): generate library by @coryan in #855
- feat(container/v1): generate library by @coryan in #854
- feat(metricsscope/v1): generate library by @coryan in #860
- feat(dashboard/v1): generate library by @coryan in #871
- feat(resourcemanager/v3): generate library by @coryan in #880
- feat(cloudbuild/v1): generate library by @coryan in #878
- feat(tasks): generate v2 library by @codyoss in #906
- feat(vpcaccess/v1): generate library by @coryan in #911
- chore: update googleapis circa 2025-01-30 by @coryan in #914
- refactor: move types library for
google/apiby @coryan in #918 - feat(monitoring/v3): generate library by @coryan in #916
- feat(dlp/v2): generate library by @coryan in #917
- feat(serviceusage/v1): generate library by @coryan in #922
- feat(servicemanagement/v1): generate library by @coryan in #933
- feat(storagetransfer/v1): generate library by @coryan in #929
New Contributors
- @devoncarew made their first contribution in #898
Full Changelog: v0.1.0...v0.2.0
v0.2.0-rc2
What's Changed
- feat(generator): provide default idempotency by @coryan in #622
- feat(gax): retry policies and throttled attempts by @coryan in #623
- feat(generator): capture protobuf LRO options by @coryan in #619
- fix(auth): Credential API by @dbolduc in #618
- chore: update dependencies by @coryan in #624
- feat(auth): mockable Credentials by @dbolduc in #614
- cleanup(gax): unused code with a feature combo by @coryan in #629
- feat(gax): implement retry loop by @coryan in #565
- feat(generator): weave mixin methods into services by @coryan in #630
- cleanup(auth): use mock credentials in gax unit test by @dbolduc in #631
- cleanup(auth): simpler test credentials by @dbolduc in #632
- fix(wkt): extract
EmptyfromAnyby @coryan in #639 - fix: serialization of
oneoffields by @coryan in #637 - feat(wkt): make
any::AnyErrorSendandSyncby @coryan in #641 - feat(wkt): supporting traits for better
Anyby @coryan in #643 - ci: update
typos-cliby @coryan in #644 - feat(generator/rust): implement
Messagetrait by @coryan in #646 - feat(wkt): validate message typenames by @coryan in #642
- chore(deps): update axum to 0.8.1 by @coryan in #647
- chore(deps): update golang auth dependency by @coryan in #649
- feat(gax):
Statusfrom arpc::model::Statusby @coryan in #650 - cleanup(gax): move
convert_headers()by @coryan in #648 - cleanup(gax): remove unused function by @coryan in #654
- impl(gax): introduce
ServiceErrorby @coryan in #657 - refactor(auth): prepare to support quota project in UC by @dbolduc in #656
- feat(gax): use
ServiceErrorfor responses by @coryan in #659 - cleanup(gax): simplify
ReqwestClientdebug by @coryan in #660 - feat(auth): support quota project in UserCredentials by @dbolduc in #661
- refactor(auth): simplify error creation by @dbolduc in #662
- impl(internal/language): make TestRust_ParseOptions deterministic by @julieqiu in #665
- impl(internal/language): refactor TestGo_MessageNames by @julieqiu in #664
- impl(sidekick): move TemplateData to package language and create license package by @julieqiu in #667
- impl(language): delete GenerateClientRequest by @julieqiu in #668
- impl(language): remove Codec interface by @julieqiu in #669
- impl(language): unexport unnecessary fields by @julieqiu in #670
- impl(language): delete unused Go methods by @julieqiu in #671
- impl(language): delete unused Rust methods by @julieqiu in #672
- impl(language): delete Go codec by @julieqiu in #673
- fix(generator): more mixins with streaming feature by @coryan in #663
- impl(language): remove unnecessary dependency on Rust Codec by @julieqiu in #676
- refactor(auth): provide default implementation for get_universe_domain by @harkamaljot in #678
- chore(deps): bump google.golang.org/protobuf from 1.36.1 to 1.36.2 in /generator by @dependabot in #682
- chore(deps): bump thiserror from 2.0.10 to 2.0.11 by @dependabot in #680
- chore(deps): bump github.com/pb33f/libopenapi from 0.19.1 to 0.20.0 in /generator by @dependabot in #681
- feat(generator/rust): named features for used pkgs by @coryan in #686
- feat(gax): a
NeverRetryretry policy by @coryan in #687 - feat(lro): new crate for LRO helper support by @coryan in #685
- impl(language): rewrite TestRust_EnumNames by @julieqiu in #675
- feat(generator): fix top-level links by @coryan in #691
- impl(language): convert Rust codec methods to functions by @julieqiu in #677
- impl(language): refactor loadWellKnownTypes by @julieqiu in #692
- impl: use
gcp-sdk-lroas a named feature by @coryan in #689 - refactor(gax): move
ExponentialBackoffby @coryan in #699 - impl(auth): more retrying? by @dbolduc in #700
- feat(gax): options have polling backoff policy by @coryan in #701
- feat(generator): create poller functions by @coryan in #698
- cleanup(gcb): manage IAM policies elsewhere by @coryan in #704
- feat(generator): make LRO examples testable by @coryan in #702
- refactor(gax): move and rename
RetryFlowby @coryan in #703 - impl(language): refactor resolveUsedPackages by @julieqiu in #695
- feat(gax): polling policies by @coryan in #706
- impl(gax): make polling policies accessible by @coryan in #707
- impl(language): convert rustCodec.validate to a function by @julieqiu in #696
- impl(auth): Implement service account credentials by @harkamaljot in #674
- impl(language): convert rustCodec.addStreamingFeature to a function by @julieqiu in #708
- impl(language): convert generatedFiles to rustGeneratedFiles by @julieqiu in #709
- feat(generator):
Pollercaptures polling policies by @coryan in #710 - ci(gcb): use
sccacheand GCS to speed up build by @coryan in #711 - feat(gax): limit polling loops on success too by @coryan in #718
- feat(lro): use polling policy on errors by @coryan in #719
- feat(generator): add method to change all options by @coryan in #721
- feat(generator): set options on LRO polling by @coryan in #722
- impl(config): move sidekick.Config to separate package by @julieqiu in #725
- feat(lro): use polling policy on success by @coryan in #723
- fix: use goldmark for parsing code blocks from proto comments by @mpeddada1 in #693
- chore: update googleapis circa 2025-01-17 by @coryan in #724
- feat(lro): implement
until_done()helper by @coryan in #726 - chore: add instructions for updating golden files by @mpeddada1 in #728
- feat(generator): add
until_done()examples by @coryan in #730 - test(auth): deflake jws test by @coryan in #732
- chore(deps): bump google.golang.org/protobuf from 1.36.2 to 1.36.3 in /generator by @dependabot in #751
- test(gax): update tests for query parameters by @coryan in #737
- feat(generator/r...
v0.2.0-rc1
What's Changed
- feat(generator): provide default idempotency by @coryan in #622
- feat(gax): retry policies and throttled attempts by @coryan in #623
- feat(generator): capture protobuf LRO options by @coryan in #619
- fix(auth): Credential API by @dbolduc in #618
- chore: update dependencies by @coryan in #624
- feat(auth): mockable Credentials by @dbolduc in #614
- cleanup(gax): unused code with a feature combo by @coryan in #629
- feat(gax): implement retry loop by @coryan in #565
- feat(generator): weave mixin methods into services by @coryan in #630
- cleanup(auth): use mock credentials in gax unit test by @dbolduc in #631
- cleanup(auth): simpler test credentials by @dbolduc in #632
- fix(wkt): extract
EmptyfromAnyby @coryan in #639 - fix: serialization of
oneoffields by @coryan in #637 - feat(wkt): make
any::AnyErrorSendandSyncby @coryan in #641 - feat(wkt): supporting traits for better
Anyby @coryan in #643 - ci: update
typos-cliby @coryan in #644 - feat(generator/rust): implement
Messagetrait by @coryan in #646 - feat(wkt): validate message typenames by @coryan in #642
- chore(deps): update axum to 0.8.1 by @coryan in #647
- chore(deps): update golang auth dependency by @coryan in #649
- feat(gax):
Statusfrom arpc::model::Statusby @coryan in #650 - cleanup(gax): move
convert_headers()by @coryan in #648 - cleanup(gax): remove unused function by @coryan in #654
- impl(gax): introduce
ServiceErrorby @coryan in #657 - refactor(auth): prepare to support quota project in UC by @dbolduc in #656
- feat(gax): use
ServiceErrorfor responses by @coryan in #659 - cleanup(gax): simplify
ReqwestClientdebug by @coryan in #660 - feat(auth): support quota project in UserCredentials by @dbolduc in #661
- refactor(auth): simplify error creation by @dbolduc in #662
- impl(internal/language): make TestRust_ParseOptions deterministic by @julieqiu in #665
- impl(internal/language): refactor TestGo_MessageNames by @julieqiu in #664
- impl(sidekick): move TemplateData to package language and create license package by @julieqiu in #667
- impl(language): delete GenerateClientRequest by @julieqiu in #668
- impl(language): remove Codec interface by @julieqiu in #669
- impl(language): unexport unnecessary fields by @julieqiu in #670
- impl(language): delete unused Go methods by @julieqiu in #671
- impl(language): delete unused Rust methods by @julieqiu in #672
- impl(language): delete Go codec by @julieqiu in #673
- fix(generator): more mixins with streaming feature by @coryan in #663
- impl(language): remove unnecessary dependency on Rust Codec by @julieqiu in #676
- refactor(auth): provide default implementation for get_universe_domain by @harkamaljot in #678
- chore(deps): bump google.golang.org/protobuf from 1.36.1 to 1.36.2 in /generator by @dependabot in #682
- chore(deps): bump thiserror from 2.0.10 to 2.0.11 by @dependabot in #680
- chore(deps): bump github.com/pb33f/libopenapi from 0.19.1 to 0.20.0 in /generator by @dependabot in #681
- feat(generator/rust): named features for used pkgs by @coryan in #686
- feat(gax): a
NeverRetryretry policy by @coryan in #687 - feat(lro): new crate for LRO helper support by @coryan in #685
- impl(language): rewrite TestRust_EnumNames by @julieqiu in #675
- feat(generator): fix top-level links by @coryan in #691
- impl(language): convert Rust codec methods to functions by @julieqiu in #677
- impl(language): refactor loadWellKnownTypes by @julieqiu in #692
- impl: use
gcp-sdk-lroas a named feature by @coryan in #689 - refactor(gax): move
ExponentialBackoffby @coryan in #699 - impl(auth): more retrying? by @dbolduc in #700
- feat(gax): options have polling backoff policy by @coryan in #701
- feat(generator): create poller functions by @coryan in #698
- cleanup(gcb): manage IAM policies elsewhere by @coryan in #704
- feat(generator): make LRO examples testable by @coryan in #702
- refactor(gax): move and rename
RetryFlowby @coryan in #703 - impl(language): refactor resolveUsedPackages by @julieqiu in #695
- feat(gax): polling policies by @coryan in #706
- impl(gax): make polling policies accessible by @coryan in #707
- impl(language): convert rustCodec.validate to a function by @julieqiu in #696
- impl(auth): Implement service account credentials by @harkamaljot in #674
- impl(language): convert rustCodec.addStreamingFeature to a function by @julieqiu in #708
- impl(language): convert generatedFiles to rustGeneratedFiles by @julieqiu in #709
- feat(generator):
Pollercaptures polling policies by @coryan in #710 - ci(gcb): use
sccacheand GCS to speed up build by @coryan in #711 - feat(gax): limit polling loops on success too by @coryan in #718
- feat(lro): use polling policy on errors by @coryan in #719
- feat(generator): add method to change all options by @coryan in #721
- feat(generator): set options on LRO polling by @coryan in #722
- impl(config): move sidekick.Config to separate package by @julieqiu in #725
- feat(lro): use polling policy on success by @coryan in #723
- fix: use goldmark for parsing code blocks from proto comments by @mpeddada1 in #693
- chore: update googleapis circa 2025-01-17 by @coryan in #724
- feat(lro): implement
until_done()helper by @coryan in #726 - chore: add instructions for updating golden files by @mpeddada1 in #728
- feat(generator): add
until_done()examples by @coryan in #730 - test(auth): deflake jws test by @coryan in #732
- chore(deps): bump google.golang.org/protobuf from 1.36.2 to 1.36.3 in /generator by @dependabot in #751
- test(gax): update tests for query parameters by @coryan in #737
- feat(generator/r...