NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2868 most downloaded on crates.io
Client runtime for TypeSpec-generated libraries.
Last release 1 months ago
05 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 17 of 17 stable releases
1 version withdrawn
withdrawn after publishing
2 years old
19 releases · first in 2025
One column per month.
Added azure-deprecating to the default allowed HTTP header list so shared debug and logging paths stop redacting it.
Tracer::start_span_with_options, Tracer::start_span_with_parent_and_options, and Span::end_at, along with a SpanOptions struct, to allow reconstructing spans with explicit (backdated) start and end timestamps. These are additive with default implementations, so existing Tracer/Span implementations continue to work unchanged.DeserializeWith::deserialize_from with a body-only default, allowing custom model decoders to inspect response headers without requiring serde deserialization.stream::ReadStream and stream::SeekableReadStream adapters, along with RequestContent::from_reader and RequestContent::from_seekable_reader, to build request bodies from futures::io::AsyncRead sources.tokio) async runtime now cancels its worker thread immediately instead of leaving it blocked until the original deadline.azure-deprecating to the default allowed HTTP header list so shared debug and logging paths stop redacting it.Error now captures a std::Backtrace at construction time and includes it in Debug output (e.g., {:?}) when RUST_BACKTRACE=1 is set.
Error now captures a std::backtrace::Backtrace at construction time and includes it in Debug output (e.g., {:?}) when RUST_BACKTRACE=1 is set.#[must_use] to AsyncRuntime functions.Added #[non_exhaustive] to AttributeArray, AttributeValue, SpanStatus, and SpanKind.
#[non_exhaustive] to AttributeArray, AttributeValue, SpanStatus, and SpanKind.new_http_client() now panics if the reqwest feature is not enabled.Added the reqwest_rustls feature to use aws-lc-rs as the default TLS provider.
reqwest_rustls feature to use aws-lc-rs as the default TLS provider.reqwest_native_tls feature in favor of reqwest_rustls.new_http_client() now takes an Option<HttpClientOptions> to disable automatic decompression - still enabled by default if reqwest_gzip or reqwest_deflate features are enabled.SeekableStream::len() and Body::len() now return Option instead of usize to support streams with unknown length and to align with std::Metadata::len()
From<BytesStream> for Body.SeekableStream::len() and Body::len() now return Option<u64> instead of usize to support streams with unknown length and to align with std::fs::Metadata::len() for large file sizes.SeekableStream::is_empty() and Body::is_empty() now return Option<bool>.tokio feature to default features.async_runtime::spawn to return a SpawnedTask trait (supports abort()) instead of a raw future.Added ErrorKind::Connection for connection errors.
ErrorKind::Connection for connection errors.reqwest HTTP client now classifies connection errors as ErrorKind::Connection.wasm32-unknown-unknown has been removed (#3377)tracing::FutureExt and tracing::WithContext.Changed our minimum supported Rust version (MSRV) from 1.85 to 1.88.
Added UrlExt::set_query_pair() to simplify overwriting query parameter key values.
Body::take().Request::body_mut().UrlExt::set_query_pair() to simplify overwriting query parameter key values.QueryBuilder.Increment version for re-release following a fix to publishing.
Added Context::to_owned() to create a static lifetime copy of an existing Context.
Context::to_owned() to create a static lifetime copy of an existing Context.PipelineOptions::retry_status_codes for configuring which status codes should trigger a retry.Response<T, F>::body(&self) -> &ResponseBody.Response<T, F>::to_raw_response() function to create a RawResponse from cloned data.UrlExt::append_path().fmt::empty_as_null containing some serde helpers for empty/null string values.serde_json::Value as typespec_client_core::Value (#1687)S type parameter to xml::from_xml congruent with json::from_json().base64::option module. base64 module now deserializes or serializes non-optional fields congruent with the time module.CustomHeaders policy.ErrorKind::MockFramework.xml::read_xml_str().BufResponse to AsyncRawResponse so that AsyncRawResponse is to RawResponse as AsyncIterator is to Iterator.BufResponseBody to AsyncResponseBody so that AsyncResponseBody is to ResponseBody as AsyncIterator is to Iterator.Response<T, F>::into_body(self) -> Result<Response<T>> to into_model(self) -> Result<Response<T>>. into_body(self) now returns a ResponseBody.xml::read_xml() to xml::from_xml() congruent with json::from_json().### Bugs Fixed - Fix feature documentation
Added AsyncResponse for responses that may stream the body outside the HTTP pipeline. This replaces Response requiring an async read of the body that
AsyncResponse<T> for responses that may stream the body outside the HTTP pipeline. This replaces Response<T, F> requiring an async read of the body that occurred outside the HTTP pipeline.Error::with_error_fn().http::response::BufResponseBody, which also implements Stream.RawResponse::deconstruct().ResponseBody::into_string().ResponseBody::from_bytes().Pipeline::stream() to return a Result<BufResponse>.AsRef<[u8]> and Deref<Target = [u8]> for ResponseBody.ClientOptions::retry from Option<RetryOptions> to RetryOptions.DeserializeWith::deserialize_with() to be sync.Pipeline::send() to return a Result<RawResponse>.RawResponse::body() to return a &ResponseBody instead of &Bytes. ResponseBody wraps &Bytes, and implements AsRef<[u8]> and Deref<Target = [u8]>.RawResponse::into_body() to return a ResponseBody instead of Bytes. ResponseBody wraps &Bytes, and implements AsRef<[u8]> and Deref<Target = [u8]>.RawResponse::json() from async to a sync function. The body was already buffered.RawResponse::xml() from async to a sync function. The body was already buffered.Response<T, F> to fully sync; it holds a RawResponse that was already buffered entirely from the service so no longer needs or defines async functions.ResponseBody::json() and xml() to borrow self.create_extensible_enum and create_enum macros.BufResponse::json().BufResponse::xml().CustomHeadersPolicy from public API.ErrorKind::http_response(). Construct an ErrorResponse::HttpResponse variant instead.ExponentialRetryPolicy from public API.FixedRetryPolicy from public API.LoggingPolicy from public API.NoRetryPolicy from public API.Stream for ResponseBody.TransportOptions::new_custom_policy() to Transport::with_policy().TransportOptions to Transport.Error to align with guidelines
Error::full() to Error::with_error().Error::with_message() to Error::with_message_fn().Error::message() to Error::with_message().Error::with_context() to Error::with_context_fn().Error::context() to Error::with_context().ResultExt::map_kind() to ResultExt::with_kind().ResultExt::with_context() to ResultExt::with_context_fn().ResultExt::context() to ResultExt::with_context().From<BufResponse> for Response<T, F> to From<RawResponse>.From<Response<T, F>> for BufResponse to From<AsyncResponse<T>>.Added RequestContent::from_slice().
RequestContent::from_slice().TryFrom<T> for RequestContent<T, JsonFormat> for JSON primitives.async_runtime module.PipelineOptions) to typespec_client_core::http::Pipeline::new() to enable customization of the options for an HTTP pipeline.FromStr for RequestContent<T, F> to RequestContent::from_str().TryFrom<&'static str> for RequestContent<T, F> to RequestContent::from_static().TryFrom<Bytes> for RequestContent<T, F> to From<Bytes> for RequestContent<T, F> because it was already infallible.TryFrom<Vec<u8>> for RequestContent<T, F> since RequestContent::from() already exists.reqwest_rustls_tls. See README.md for alternative HTTP client configuration.fs module including the FileStream and FileStreamBuilder types. Moved to examples/ to copy if needed.setters macro.RawResponse to BufResponse. New RawResponse contains complete body as Bytes used in ErrorKind::HttpResponse.Added TryFrom<> for RequestContent implementations for a wider variety of types.
TryFrom<> for RequestContent<T> implementations for a wider variety of types.Added Format to RequestContent<T> making it RequestContent<T, F>. This provides parity with Response<T, F> added in version 0.4.0.
When a retry policy receives a response whose status code indicates the policy shouldn't retry the request, it now returns that response instead of an error
Added get_async_runtime() and set_async_runtime() to allow customers to replace the default asynchronous runtime with another.
get_async_runtime() and set_async_runtime() to allow customers to replace
the default asynchronous runtime with another.Request::set_method() to allow changing the HTTP method of a request.Pipeline::replace_policy.typespec_client_core::date to typespec_client_core::time and added typespec_client_core::time::DurationCustomHeadersPolicy is executed after the retry policy in the Pipeline.Added #[safe] attribute helper for SafeDebug derive macro to show or hide types and members as appropriate.
#[safe] attribute helper for SafeDebug derive macro to show or hide types and members as appropriate.fmt::as_string which is used to (de)serialize types in string format.Response<T, F> type to represent a response with a specific format and model type.RawResponse type to represent a raw response without a specific model.Model trait and replaced it with Response<T, F>, which moves the "format" information (JSON/XML/etc.) from the model to the service client method's return type. This allows for more flexibility in handling different response formats and user data types in Responses.Response into Response<T, F> and RawResponse (which carries the raw response data without a specific format).The reqwest_rustls feature enables rustls-tls-native-roots-no-provider instead of rustls-tls-native-roots to remove the dependency on the ring crate.
reqwest_rustls feature enables rustls-tls-native-roots-no-provider instead of rustls-tls-native-roots to remove the dependency on the ring crate.SafeDebug formats non-exhaustive types by default. Enable debug feature to format normal Debug output.Recreated by explicit maintainer request after unpublished pipeline run 6908412 failed due to test isolation. Includes the merged fix from #5397 . Sup
tokio features into a single feature named tokio. Traits remain separate but tokio support is enabled with a single feature.Header re-export from http module. It is still defined in the http::headers module.http-types dependency and implemented Method instead.Pager.parsing module.std::sync::LazyLock added in rustc 1.80 instead of once_cell::sync::Lazy.### Features Added - Initial supported release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →