Update all non-major dependencies #2
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/all-minor-patch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
1.0.100→1.0.1044.5.53→4.6.70.31.0→0.33.00.31.0→0.33.00.31.0→0.33.00.31.0→0.33.00.31.0→0.33.00.3.44→0.3.551.48.0→1.53.1Release Notes
dtolnay/anyhow (anyhow)
v1.0.104Compare Source
syndev-dependency to version 3v1.0.103Compare Source
Error::downcast_mut(#451, #452)v1.0.102Compare Source
v1.0.101Compare Source
clap-rs/clap (clap)
v4.6.7Compare Source
Features
#[command(defer = <bool>)]attribute to opt-in to lazy initialisation of subcommandsv4.6.6Compare Source
Features
Command::get_overridden_usagev4.6.5Compare Source
Fixes
value_namesare optional withnum_argsv4.6.4Compare Source
Internal
v4.6.3Compare Source
Fixes
"literal".function()as attribute valuesv4.6.2Compare Source
Fixes
aliaswhen there is only onev4.6.1Compare Source
Fixes
v4.6.0Compare Source
Compatibility
v4.5.61Compare Source
Internal
v4.5.60Compare Source
Fixes
v4.5.59Compare Source
Fixes
Command::ignore_errorsno longer masks help/version on subcommandsv4.5.58Compare Source
v4.5.57Compare Source
Fixes
.value_terminator("--")caused problems with an argument with.last(true)v4.5.56Compare Source
Fixes
v4.5.55Compare Source
Fixes
value_terminator("--")and escapes (--) where./foo -- barmeans the first arg is empty, rather than escaping future argsv4.5.54Compare Source
Fixes
[default]to its own paragraph whenPossibleValue::helpis present in--helpopen-telemetry/opentelemetry-rust (opentelemetry)
v0.33.0Compare Source
Released 2026-Sep-18
TraceStateaccepting more than the 32 list-members the W3C trace-contextspecification allows.
from_str,from_key_valueandinsertnow keep at most32, dropping members from the end of the list as the specification prescribes, so
neither a parsed nor a locally built
tracestatecan exceed the limit.ContextObservercan be registered viaGlobalContextObserver::setto benotified of context transitions through the
on_context_enterandon_context_exitcallbacks. This feature is primarily intended to publish adifferent view of the current context (the
ObserverContextView) throughalternative channels that let external readers (e.g. an eBPF profiler) track
the current context. See the associated
OTEP.
Gated behind the
experimental_context_observerfeature flag.otel_info!,otel_warn!,otel_debug!, andotel_error!macros now accept quoted-key fields(e.g.
"otel.component.type" = "value") for dotted attribute names.BoundGauge<T>andBoundUpDownCounter<T>types (and thecorresponding
Gauge::bind()/UpDownCounter::bind()methods), completingthe experimental bound-instrument API across all sync instruments
(
Counter,UpDownCounter,Histogram,Gauge). Gated behind theexperimental_metrics_bound_instrumentsfeature flag.Context::with_value()callsContext::current()from itsDropimplementation.v0.32.0Compare Source
Released 2026-May-08
BoundCounter<T>andBoundHistogram<T>types that cache resolvedaggregator references for a fixed attribute set. Created via
Counter::bind()and
Histogram::bind(), bound instruments bypass per-call attribute lookup,providing significant performance improvements for hot paths where the same
attributes are used repeatedly. Both types implement
Cloneso a single boundstate can be shared across threads or modules without re-binding. Also adds
the
SyncInstrument::bind()trait method andBoundSyncInstrument<T>traitfor SDK implementors; the trait method has a no-op default so custom
SyncInstrumentimpls degrade gracefully without panicking. Gated behind theexperimental_metrics_bound_instrumentsfeature flag.reservemethod toopentelemetry::propagation::Injectorto hint at the number of elements that will be added to avoid multiple resize operations of the underlying data structure. Has an empty default implementation.SpanBuilder#3227:trace_id,span_id,end_time,status,sampling_resultwith_trace_id,with_span_id,with_end_time,with_status,with_sampling_result#[must_use]attribute toopentelemetry::metrics::AsyncInstrumentBuilderto add compile time warning when.build()is not called on observable instrument builders, preventing silent failures where callbacks are never registered and metrics are never reported.opentelemetry::tracetoopentelemetry_sdk::trace#3277:SamplingDecision,SamplingResultopentelemetry_sdk::traceinstead.backing specification) is now stable and is enabled by default.
3278
tracingevents emitted via theinternal-logsfeatureContext::current()fromDropimplementations triggered byContextGuardcleanup (#3262).open-telemetry/opentelemetry-rust (opentelemetry-otlp)
v0.33.0Compare Source
Released 2026-Sep-18
Exporter builder usage and environment configuration are unchanged.
Breaking for callers parsing compression strings:
Compression::from_str(including
.parse::<Compression>()) now returns the opaqueParseConfigErrorinstead of
ExporterBuildError. Update explicit result types and error handlingthat expects
ExporterBuildError::UnsupportedCompressionAlgorithm. The new errorimplements
Displayandstd::error::Error; its message is for diagnostics.Accepted strings and parsing behavior are unchanged.
Interpret protocol, compression, and metrics temporality environment values
case-insensitively. Treat empty values as unset, and warn and ignore invalid,
non-Unicode, or feature-unavailable enum values so resolution can continue
to the next environment variable or default. Compression
noneexplicitlydisables compression, including when a generic compression value is set.
Programmatic configuration remains strict.
Retry
policy uses exponential backoff and jitter with up to 3 retries (4 attempts
total). Use
.with_retry_policy(RetryPolicy::disabled())to disable retries,or provide a custom
RetryPolicyto change the behavior.Cargo.tomlenablesexperimental-grpc-retryorexperimental-http-retry, remove those feature flags. No migration action isrequired for users who did not enable them.
#3621
retryandretry_classificationmodules crate-private,removing their retry engine, error type, and protocol classifiers from the
public API.
RetryPolicyremains available from the crate root with privatefields and fluent configuration methods. Replace imports from
opentelemetry_otlp::retrywithopentelemetry_otlp::RetryPolicy, and replacestruct literals with its
with_*methods.#3672
Retry fixes
The following fixes apply to retry behavior that was experimental before this
release:
specification. The exporter now also honors
Retry-Afteron 503 responses.RetryInfodelays returned withUnavailableresponses.RetryInfoandRetry-Afterdelays when subsequent export attempts fail.Other changes
Exporter compression configuration and behavior are unchanged; users of
.with_compression(...)need no changes. Breaking only for direct conversioncallers: removed
TryFrom<Compression>fortonic::codec::CompressionEncoding. Code explicitly converting between theseenums must map the variants itself.
Return an exporter build error when construction of a built-in reqwest HTTP
client fails instead of silently falling back to a client without the
exporter-configured timeout. Failure to spawn the blocking client's setup
thread, or a panic in that thread, is also returned instead of panicking.
Breaking Removed
Defaultfrom theTonicExporterBuilderSetandHttpExporterBuilderSettypestate markers. This also removesDefaultfromthe transport-selected exporter builders (e.g.
SpanExporterBuilder<TonicExporterBuilderSet>). Use the intended builderflow instead:
Also removed the unused
#[doc(hidden)]NoExporterConfigtype.Breaking Mark
ProtocolandCompressionas non-exhaustive so new OTLPprotocols, encodings, and compression algorithms can be added without
breaking downstream users. External exhaustive matches must add a wildcard
arm. Constructing existing variants and passing them to exporter builders is
unchanged.
Breaking Make
Protocol::from_env()crate-private. Exporter buildersalready resolve
OTEL_EXPORTER_OTLP_PROTOCOLwhen built; applications thatneed to inspect the raw environment setting should read the variable
directly.
Breaking Remove
OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT, which always heldthe HTTP default (
http://localhost:4318) despite gRPC usinghttp://localhost:4317. Omit.with_endpoint(...)to let the selectedtransport use its correct default, or provide the appropriate URL explicitly.
#3690
Breaking Restrict
MetricExporterBuilder::with_http()andwith_tonic()to builders where no transport has been selected, matching the span and log
exporter builders. Select a transport once;
with_temporality()remainsavailable before or after transport selection.
Breaking Remove the public
HttpExporterBuilderandTonicExporterBuildertransport-first APIs. Configure transports through thesignal builders instead:
HttpExporterBuilder::default()with the corresponding signalexporter builder followed by
.with_http(), then replace.build_span_exporter()or.build_log_exporter()with.build()..build_metrics_exporter(temporality)with.with_temporality(temporality).build().TonicExporterBuilder::default()with the corresponding signalexporter builder followed by
.with_tonic().Transport-specific configuration methods remain available after
.with_http()or.with_tonic().Breaking Removed the deprecated
tlsfeature alias. Replacetlswithtls-ring, or selecttls-aws-lcortls-provider-agnosticexplicitly.Exporter builder usage is unchanged. Breaking for code matching or constructing
removed error variants: Simplified
ExporterBuildErrorto the exhaustiveInvalidConfiguration(String)andInternalFailure(String)variants.The enum is no longer marked
#[non_exhaustive].Configuration errors such as invalid endpoints, missing HTTP clients,
transport/protocol mismatches, and missing compression features now use
InvalidConfiguration. Replace implementation-specific, non-exhaustivematches such as:
with an exhaustive match over the two stable categories:
Code that propagates build errors with
?without inspecting their variantsneeds no changes.
Tonic endpoint errors identify the originating environment variable when
validating the URI or reporting endpoint-related TLS setup failures.
#3691
Return an exporter build error for invalid OTLP/HTTP endpoint environment
variables instead of silently falling back to another endpoint or localhost.
Empty endpoint environment variables are now treated as unset.
Return an exporter build error for invalid OTLP/gRPC endpoint environment
variables instead of silently falling back to another endpoint or localhost.
Empty endpoint environment variables are now treated as unset.
Add
WithHttpConfig::with_max_request_body_sizeto configure the HTTP requestbody limit. OTLP/HTTP request bodies are now limited to 64 MiB by default, before and
after compression; oversized requests are discarded without being sent or
retried.
Breaking Seal
WithExportConfig,WithHttpConfig, andWithTonicConfig. These traits remain public for calling configurationmethods on OTLP builders, but can no longer be implemented for external
types.
Add support for INSECURE environment variables for gRPC (env-var-only, no builder method, per spec):
OTEL_EXPORTER_OTLP_INSECURE(generic),OTEL_EXPORTER_OTLP_TRACES_INSECURE,OTEL_EXPORTER_OTLP_METRICS_INSECURE,OTEL_EXPORTER_OTLP_LOGS_INSECURE.Per the spec, these only apply to gRPC connections. When an endpoint has no explicit scheme,
INSECURE=trueuseshttp://,INSECURE=false(default) useshttps://with auto-TLS.Breaking: Schemeless endpoints (e.g.,
collector.example.com:4317) now default tohttps://instead of being passed as-is. Set
OTEL_EXPORTER_OTLP_INSECURE=truefor plaintext connections.Endpoints with an explicit scheme (e.g.,
http://,https://,unix://) are unaffected.#774
#984
Breaking Removed the
serializefeature flag and its implicitserdedependency. This feature gated
Serialize/Deserializederives onProtocolandCompression, but the derived representations were incorrect(Rust variant names instead of spec values) and the feature only covered
these two enums. The equivalent feature was removed from the core
opentelemetrycrate in 2022.Migration: Remove
serialize(andserde, if listed) from your featurelist. If these values are part of serialisable app config, define a local
config enum or wrapper and convert it to
ProtocolorCompressionwhenbuilding the exporter.
#3711
Breaking Removed
reqwest-rustls-webpki-rootsfeature. Thewebpki-rootscargo feature wasremoved from
reqwestin v0.13.0, making this feature broken for anyone resolvingreqwest >= 0.13.0.Migration: Use
reqwest-rustlsinstead (now correctly usesreqwest/rustlswith platform nativetrust roots). If you specifically need Mozilla's embedded CA bundle, construct a custom client:
Allow to provide http client wrapped in Arc when configuring HTTP exporter. 3468
v0.32.0Compare Source
Released 2026-May-08
tls-provider-agnosticfeature flag for environments that require a custom crypto backend (e.g., OpenSSL for FIPS compliance). Enables TLS code paths without bundlingringoraws-lc-rs.build()directly onSpanExporterBuilder,MetricExporterBuilder, andLogExporterBuilder(before selecting a transport), which auto-selects the transport based on the
OTEL_EXPORTER_OTLP_PROTOCOLenvironment variable or enabled features.#3394
ExportConfig,HasExportConfig,with_export_config(),HasTonicConfig,HasHttpConfig,TonicConfig, andHttpConfigfrom public API.Use the public
WithExportConfig,WithTonicConfig, andWithHttpConfigtrait methods instead, which remain unchanged.an
https://endpoint is configured but no TLS feature (tls-ringortls-aws-lc) is enabled, instead ofsilently sending unencrypted traffic. When a TLS feature is enabled and an
https://endpoint is used withoutan explicit
.with_tls_config(), a defaultClientTlsConfigis automatically applied.#3182
exporter errors no longer include potentially sensitive server responses
(e.g., authentication tokens echoed back). Error messages returned to SDK
processors contain only the gRPC status code or HTTP status code. Full
details are logged at DEBUG level only.
#3021
grpc-tonicOTLP export fails due to a local misconfiguration. When the returned
tonic::Statuswraps a local transport error (invalid URL, connect failure,DNS), its source chain (e.g.,
"transport error: invalid URI") is appendedto the returned error so SDK processors surface it at ERROR without
requiring DEBUG logging. Server-returned gRPC status messages remain
DEBUG-only to preserve the auth-token leak safeguards from
#3021.
#3331
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL,OTEL_EXPORTER_OTLP_METRICS_PROTOCOL,OTEL_EXPORTER_OTLP_LOGS_PROTOCOL. These allow configuring different transport protocolsper signal type. Signal-specific vars take precedence over generic
OTEL_EXPORTER_OTLP_PROTOCOL.The auto-select
build()method on each exporter builder now respects the full priority chain:signal-specific env var > generic env var > feature-based default.
InvalidConfigwhen gRPC protocolis requested; gRPC transport returns
InvalidConfigwhen an HTTP protocol is requested.Protocol::default()no longer consults theOTEL_EXPORTER_OTLP_PROTOCOLenvironment variable. It now returns only the feature-based default (http-json > http-proto >
grpc-tonic). Protocol resolution from environment variables is handled internally by the
exporter builders. Users who relied on
Protocol::default()to read env vars should useProtocol::from_env()instead.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEenvironment variableto configure metrics temporality. Accepted values:
cumulative(default),delta,lowmemory(case-insensitive). Programmatic.with_temporality()overrides the env var.NoHttpClienterror when multiple HTTP client features are enabled by using priority-based selection (reqwest-client>hyper-client>reqwest-blocking-client). #2994internal-logsfeature inopentelemetry-otlpto reduce unnecessary dependencies3191shutdown_with_timeout()when usinggrpc-tonic.tlsfeature in favor of explicittls-ringandtls-aws-lcfeatures.Migration: Replace
tlswithtls-ring(ortls-aws-lc). Users oftls-rootsortls-webpki-rootsmust now also enable one of these.v0.31.1: opentelemetry-otlp 0.31.1Compare Source
What's Changed
Full Changelog: https://github.com/open-telemetry/opentelemetry-rust/compare/v0.31.0...opentelemetry-otlp-0.31.1
open-telemetry/opentelemetry-rust (opentelemetry-semantic-conventions)
v0.33.0Compare Source
Released 2026-Sep-18
v0.32.1Compare Source
Released 2026-Jun-26
v0.32.0Compare Source
Released 2026-May-08
open-telemetry/opentelemetry-rust (opentelemetry-stdout)
v0.33.0Compare Source
Released 2026-Sep-18
v0.32.0Compare Source
Released 2026-May-08
open-telemetry/opentelemetry-rust (opentelemetry_sdk)
v0.33.0Released 2026-Sep-18
OTEL_*/OTEL_*_DEFAULTenvironment variable name anddefault value constants for
BatchSpanProcessor(opentelemetry_sdk::trace),BatchLogProcessor(opentelemetry_sdk::logs), andPeriodicReader(
opentelemetry_sdk::metrics), so downstream configuration systems can readthe SDK's spec-defined defaults programmatically instead of duplicating
them. As part of this,
PeriodicReader's previously-privateDEFAULT_INTERVAL/METRIC_EXPORT_INTERVAL_NAMEconstants were renamedto
OTEL_METRIC_EXPORT_INTERVAL_DEFAULT/OTEL_METRIC_EXPORT_INTERVALtomatch the naming convention already used elsewhere.
(#3623)
experimental_metrics_bound_instruments:otel.sdk.log.createdcounts logrecords submitted to the SDK;
otel.sdk.processor.log.processedandotel.sdk.processor.span.processedcount records and spans submitted to anexporter by batch and simple processors, with
error.typereporting itemsdropped before submission; and
otel.sdk.processor.log.queue.capacityreports the configured
BatchLogProcessorqueue capacity.(#3514,
#3608,
#3609,
#3611)
futures-channel,futures-executor,futures-util, andthiserroroptional, enabling a minimal SDK build. With
default-features = false, theSDK's only dependency is the
opentelemetryAPI crate.(#3593)
GaugeandUpDownCountervia thenew
BoundGauge<T>andBoundUpDownCounter<T>types exposed by theopentelemetrycrate. Requires theexperimental_metrics_bound_instrumentsfeature.
BatchSpanProcessorandBatchLogProcessorwhere aspan/log enqueued just before
force_flush()orshutdown()could bemissed by the flush and dropped at shutdown: the pending-item counter is
now incremented before enqueueing (and reverted if the queue is full), so
the worker's counter snapshot can no longer under-count items already in
the queue (#3453).
unknown_serviceunderMiri instead of calling
std::env::current_exe(), avoiding an abort in Miriisolation mode while preserving the normal
unknown_service:<process.executable.name>fallback outside Miri.ObservableCounter,ObservableUpDownCounter)using delta temporality reporting incorrect deltas when observed attributes
were recorded in an unsorted key order.
v0.32.1Released 2026-May-23
BaggagePropagatornow enforces the W3C Baggage maximum header length(8192 bytes) and maximum list-member count (64) when extracting an inbound
baggageheader. Headers exceeding 8192 bytes are dropped at thepropagator boundary; headers with more than 64 list members are
truncated to the first 64 entries. The change keeps the propagator from
parsing attacker-controlled input beyond the W3C limits instead of doing
per-entry parse, decode, and allocation work only to discard the excess
on
Baggageinsert. See https://www.w3.org/TR/baggage/#limits.SimpleSpanProcessortelemetry suppression added in 0.32.0(see #3494), which caused a
RefCell already borrowedpanic when a spanwas started and dropped inside a
get_active_span(orContext::map_current)closure. Tracked in #3510. A proper fix for the underlying
Context::map_currentre-entrancy will be investigated separately, afterwhich the suppression can be safely re-applied.
name(set viaStream::builder().with_name(...))is no longer validated against the instrument name syntax, per
spec clarification.
unitand other stream parameters continue to be validated.v0.32.0Compare Source
Released 2026-May-08
SimpleSpanProcessornow suppresses telemetry during export, preventingtelemetry-induced-telemetry feedback loops. This aligns with the existing
behavior in
BatchSpanProcessorandSimpleLogProcessor.SimpleConcurrentLogProcessorand theexperimental_logs_concurrent_log_processorfeature flag. The use cases it was designed for (ETW/user_events exporters) are
better served by modeling those exporters as processors directly.
Counter::bind()andHistogram::bind()SDK implementations thatreturn pre-bound measurement handles (
BoundCounter<T>,BoundHistogram<T>).Bound instruments resolve the attribute-to-aggregator mapping once at bind time
and cache the result, eliminating per-call HashMap lookups. View attribute
filtering is applied at bind time so the hot path stays free of per-call
attribute processing. Bound and unbound recordings with the same (post-view)
attribute set always aggregate into the same data point, including the empty
attribute set. Bound entries are never evicted during delta collection while
a handle exists — idle cycles produce no export but the tracker persists. If
bind()is called at the cardinality limit, the handle binds directly tothe overflow tracker — its writes stay on the same direct (no-lookup) hot
path and consistently land in the
otel.metric.overflow=truebucket forthe lifetime of the handle. To recover a bound handle after delta collection
frees space, drop the existing handle and call
bind()again. Gated behindthe
experimental_metrics_bound_instrumentsfeature flag. Benchmarks show~28x speedup for counter operations and ~9x for histograms.
HashMap on every collect cycle. Stale attribute sets that received no measurements
since the last collection are evicted. Note: recovery from cardinality overflow
now requires 2 collect cycles — the first marks entries as stale, the second
evicts them.
testingfeature is now runtime agnostic. #3407TokioSpanExporterandnew_tokio_test_exporterhave been renamed toTestSpanExporterandnew_test_exporter.tokio/rt,tokio/time,tokio/macros,tokio/rt-multi-thread,tokio-stream,experimental_async_runtimeInstrumentationScopeinArcinternally inSdkTracer, making tracer clones cheaper (Arc refcount increment instead of deep copy).portable-atomicforAtomicI64andAtomicU64in the metrics module. This enables compilation on 32-bit ARM targets (e.g.,armv5te-unknown-linux-gnueabi,armv7-unknown-linux-gnueabihf).Aggregationenum andStreamBuilder::with_aggregation()are now stable and no longer require thespec_unstable_metrics_viewsfeature flag.service.nameResource attribute fallback to follow OpenTelemetryspecification by using
unknown_service:<process.executable.name>format whenservice name is not explicitly configured. Previously, it only used
unknown_service.SpanExporter::shutdown()default timeout from 5 nanoseconds to 5 seconds.SpanExportertrait methodsshutdown,shutdown_with_timeout, andforce_flushnow take&selfinstead of&mut selffor consistency withLogExporterandPushMetricExporter. Implementers using interior mutability (e.g.,Mutex,AtomicBool) require no changes.Resource::get_ref(&self, key: &Key) -> Option<&Value>to allow retrieving a reference to a resource value without cloning.SdkTracer#3227:id_generator,should_sampleopentelemetry::tracetoopentelemetry_sdk::trace#3277:SamplingDecision,SamplingResultopentelemetry_sdk::traceinstead.StreamBuilder::build()now rejectsusize::MAXas a cardinality limitwith a validation error. #3506
TracerProviderBuilder::with_samplerallows to pass boxed instance ofShouldSample[#3313][3313]SpanProcessor::on_endcallsContext::current()(#3262).SpanProcessor::on_enddocumentation to clarify thatContext::current()returns the parent context, not the span's contexttraceparentheaders with unknown flags (e.g. W3C random-trace-id flag0x02) being incorrectly rejected. Unknown flags are now accepted and zeroed out as required by the W3C trace-context spec. #3435InMemoryExporterErrorhas been removed and replaced byOTelSdkError, and a newJaegerRemoteSamplerBuildErrorintroduced to replace last uses ofTraceError. #3458backing specification) is now stable and is enabled by default. #3278
time-rs/time (time)
v0.3.55Compare Source
Fixed
DateIter::nth, ensuring correct behavior.led to some valid values being parsed incorrectly and others being rejected.
UtcOffset.OffsetDateTime::from_unix_timestamp_nanosandUtcDateTime::from_unix_timestamp_nanoscorrectlyreturn
Nonefor all out-of-range values, rather than unexpectedly panicking in some situations.OffsetDateTime::checked_to_offsetandUtcDateTime::checked_to_offsetcorrectly returnNonefor all out-of-range values, rather than unexpectedly panicking in some situations.
v0.3.54Compare Source
Added
PrimitiveDateTimehas been renamed toPlainDateTime.Durationhas been renamed toSignedDuration.Date,Month, andWeekday. Relevant iterator methods have beenoverridden to ensure maximum performance.
For both
PlainDateTimeandSignedDuration, a non-deprecated type alias has been added forbackwards compatibility. The new names should be preferred.
Changed
powerfmtimplementations) for various types has been changedto
()and made public. This guarantees that no additional metadata will be present.Performance
v0.3.53Compare Source
There are no publicly-facing changes in this release. It solely works around the
cookiecraterelying on an implementation detail of
timethat was never part of the public API (and thussubject to semver guarantees). The internal API has been reverted to the extent necessary for
cookieto compile. This measure is temporary; the internal change will be re-applied in anyet-to-be-determined future release.
v0.3.52Compare Source
Fixed
time!macro are parsed using the textual representation, ensuringaccuracy. Previously, they were parsed using the floating point representation, which could result
in a loss of precision and even invalid values.
date!macro could previously create an invalid value that would then panic at compile time.The macro now emits a proper error instead.
returns an error as intended.
Added
v0.3.51Compare Source
Fixed
timecompiles withmacrosenabled. This version is otherwise identical to v0.3.50.v0.3.50Compare Source
Fixed
timecompiles withmacrosenabled. This version is otherwise identical to v0.3.50.v0.3.49Compare Source
Fixed
compiling. A patch has been added that avoids triggering the bug.
v0.3.48Compare Source
Security
[subsecond digits:1+]is capped at 32 to avoid parsing unboundeduser input. Digits after the 9th have no semantic meaning.
#[repr]forWeekday. The value of the variants is relied upon in multiplelocations for soundness. The practical effect of this change is nothing, as Rust has always mapped
C-like
enums to 0..N in memory.Compatibility
format and parse valid UTF-8.
format_description::parseis deprecated. It is recommended to useformat_description::parse_borrowed::<3>orformat_description::parse_owned::<3>.Added
unitmodule have a generic parameter, though this is currently not used formuch. Usage will be expanded in the future.
unitmodule and the genericUnittype are permitted.rand0.10[ignore]requires that the remaining inputnot begin mid-codepoint.
format:falseis supported on[optional]components. This is not possible in version 1 andversion 2 format descriptions due to API compatibility.
time::serde::format_description!macro uses a new, clearer syntax for version 3.time::serde::format_description!(mod foo [Date] = "[year]-[month]-[day]");scope. You must import it yourself.
case-sensitivity when parsing a numerical month.
[year]defaults torange:standardChanged
convertmodule has been renamed tounit.Fixed
Tin ISO 8601unintentionally prohibited this.
strftimeformat descriptions but the component is not. Thiswould previously panic.
Performance
Huge performance gains across multiple areas, including:
DurationDisplayimpls for all major typesstrftimeparsingDepending on the area, gains range from 3× to even 11×.
v0.3.47Compare Source
Security
The possibility of a stack exhaustion denial of service attack when parsing RFC 2822 has been
eliminated. Previously, it was possible to craft input that would cause unbounded recursion. Now,
the depth of the recursion is tracked, causing an error to be returned if it exceeds a reasonable
limit.
This attack vector requires parsing user-provided input, with any type, using the RFC 2822 format.
Compatibility
error at compile time if the type being formatted does not provide sufficient information. This
would previously fail at runtime. Similarly, attempting to format a value with ISO 8601 that is
only configured for parsing (i.e.
Iso8601::PARSING) will error at compile time.Added
when done manually.
date!(2026-W01-2)is now supported. Previously, a space was required betweenWand01.[end]now has atrailing_inputmodifier which can either beprohibit(the default) ordiscard. When it isdiscard, all remaining input is ignored. Note that if there are componentsafter
[end], they will still attempt to be parsed, likely resulting in an error.Changed
Fixed
This has been fixed such that the number of bytes written is always correct.
eliminated. This would previously wrap when overflow checks were disabled. Instead of storing the
depth as
u8, it is stored asu32. This would require multiple gigabytes of nested input tooverflow, at which point we've got other problems and trivial mitigations are available by
downstream users.
v0.3.46Compare Source
Added
All possible panics are now documented for the relevant methods.
The need to use
#[serde(default)]when using customserdeformats is documented. This appliesonly when deserializing an
Option<T>.Duration::nanoseconds_i128has been made public, mirroringstd::time::Duration::from_nanos_u128.Various methods for truncating components have been added, avoiding the need to call the fallible
replacemethods multiple times.For
PrimitiveDateTime,UtcDateTime, andOffsetDateTime:truncate_to_dayFor
Time,PrimitiveDateTime,UtcDateTime, andOffsetDateTime:truncate_to_hourtruncate_to_minutetruncate_to_secondtruncate_to_millisecondtruncate_to_microsecondChanged
part of this.
error::ComponentRange, along with types that contain it, has been significantlyreduced.
Fixed
PartialOrdandOrdimplementations ofUtcOffsetnow return the expected result.v0.3.45Compare Source
Added
time::format_description::StaticFormatDescriptiontype alias for&'static [BorrowedFormatItem<'static>]. This is the type returned by thetime::macros::format_description!macro.Changed
Durationare nowconst fn.Parsedare nowconst fn.serdedependency has been replaced withserde_core, This reduces compile times by notincluding unused parts of
serde.Date::from_julian_dayuses a new algorithm, resulting in an approximately 16% performanceimprovement. This method is used internally by numerous other methods.
util::is_leap_yearuses a new algorithm, resulting in an approximately 8% performanceimprovement.
tokio-rs/tokio (tokio)
v1.53.1: Tokio v1.53.1Compare Source
1.53.1 (July 20th, 2026)
Fixed
OnceLock::waitfrom the Windows handler (#8300)Fixed (unstable)
Documented
v1.53.0: Tokio v1.53.0Compare Source
1.53.0 (July 17th, 2026)
Added
From<OwnedFd>andFrom<OwnedHandle>forFile(#8266)SocketAddrmethods to Unix sockets (#8144)Changed
#[inline]to IO trait impls for in-memory types (#8242)mpsc::{Receiver,UnboundedReceiver}now drops waker on drop, even if there are still senders (#8095)#[track_caller]totimeout_at()(#8077)Sleep(#8132)Fixed
Chain(#8251)FastRand(#8078)reserve[_many]returns permits (#8260)Trace::capture/Trace::trace_with(#8043).reset()(#8169)IO uring (unstable)
fs::try_exists(#8080)Documented
create_dir_allsucceeds if path exists (#8149)try_read*/try_write*readiness behavior (#8032)yield_nowdefers its waker (#8254)timeout_at()(#8077)v1.52.4: Tokio v1.52.4Compare Source
1.52.4 (July 16th, 2026)
Fixed
before_parkschedules work (#8222)Fixed (unstable)
v1.52.3: Tokio v1.52.3Compare Source
1.52.3 (May 8th, 2026)
Fixed
len()(#8062)OwnedPermit::release()method (#8075)RwLockhasmax_readers != 0(#8076)Emptyfromtry_recv()when mpsc is closed with outstanding permits (#8074)v1.52.2: Tokio v1.52.2Compare Source
1.52.2 (May 4th, 2026)
This release reverts the LIFO slot stealing change introduced in 1.51.0 (#7431), due to its performance impact. (#8100)
v1.52.1: Tokio v1.52.1Compare Source
1.52.1 (April 16th, 2026)
Fixed
spawn_blockingto hang (#8057)v1.52.0: Tokio v1.52.0Compare Source
1.52.0 (April 14th, 2026)
Added
AioSource::register_borrowedfor I/O safety support (#7992)try_iofunction tounix::pipesender and receiver types (#8030)Added (unstable)
Builder::enable_eager_driver_handoffsetting enable eager hand off of the I/O and time drivers before polling tasks (#8010)trace_with()for customized task dumps (#8025)impl FnMut()intrace_withinstead of justfn()(#8040)io_uringinAsyncReadforFile(#7907)Changed
spawn_blockingscalability with sharded queue (#7757)compare_exchange_weak()in worker queue (#8028)Fixed
Documented
oneshot::Sender::senddocs (#8026)sync::watch(#8035)ConnectionRefusederrors with UDP sockets (#7870)v1.51.4: Tokio v1.51.4Compare Source
1.51.4 (July 16th, 2026)
Fixed
before_parkschedules work (#8222)v1.51.3: Tokio v1.51.3Compare Source
1.51.3 (May 8th, 2026)
Fixed
len()(#8062)OwnedPermit::release()method (#8075)RwLockhasmax_readers != 0(#8076)Emptyfromtry_recv()when mpsc is closed with outstanding permits (#8074)v1.51.2: Tokio v1.51.1Compare Source
1.51.2 (May 4th, 2026)
This release reverts the LIFO slot stealing change introduced in 1.51.0 (#7431), due to its performance impact. (#8100)
v1.51.1: Tokio v1.51.1Compare Source
1.51.1 (April 8th, 2026)
Fixed
SO_ERRORonrecvfor UDP sockets on Linux (#8001)Fixed (unstable)
worker_local_schedule_counttest (#8008)v1.51.0: Tokio v1.51.0Compare Source
1.51.0 (April 3rd, 2026)
Added
get_peer_credon Hurd (#7989)tokio::runtime::worker_index()(#7921)LocalRuntime(#7557)Changed
Fixed
notify_waiterspriority inNotify(#7996)Chan::recv_manywhen called with non-empty vector on closed channel (#7991)v1.50.0: Tokio v1.50.0Compare Source
1.50.0 (Mar 3rd, 2026)
Added
TcpStream::set_zero_linger(#7837)is_rt_shutdown_err(#7771)Changed
memchrreturns in-bounds pointer (#7792)write_buf(#7871)event_intervalis set to 0 (#7838)SetConsoleCtrlHandler(#7833)Registry(#7885)Fixed
AsyncFdregistration list on deregister (#7773)usedeclarations intokio::select!(#7929)GET_BUF_SIZEconstant fortarget_os = "android"(#7889)current_threadifbefore_parkdefers waker (#7835)block_in_place(#7879)num_idle_threadson shutdown (#7910, #7918, #7922)Unstable
Documented
AsyncWriteExt::shutdown()(#7908)AsyncWritedocumentation (#7875)Runtime::spawn(#7803)event_intervaldoc (#7932)recvreturnsNoneonce closed and no more messages (#7920)spawn_blockingvs dedicated threads (#7923)JoinHandlecompletion (#7825)None(#7869)Builder::spawn_local(#7828)v1.49.0: Tokio v1.49.0Compare Source
1.49.0 (January 3rd, 2026)
Added
TCLASSoption on IPv6 (#7781)runtime::id::Id(#7125)ExtendforJoinSet(#7195)LocalSet::id()(#7776)Changed
{TcpStream,TcpSocket}::set_linger(#7752)Fixed
join!andtry_join!(#7766)TryRecvError::DisconnectedfromReceiver::try_recvafterReceiver::close(#7686)Debugimplementation (#7720)Unstable
EINTRinfs::writefor io-uring (#7786)tokio::fs::read(#7696)EPERM(#7724)Documented
bounded.rsandpark.rs(#7817)SyncIoBridgecross-references tocopyandcopy_buf(#7798)AsyncWritedoes not inherit fromstd::io::Write(#7705)num_alive_tasksis not strongly consistent (#7614)TcpStream::peek(#7305)unix::OwnedWriteHalf(#7742)TcpSocketdocs (#7738)LocalRuntimeinnew_current_threaddocs (#7820)mpsc::Sender::try_senddocs (#7721)oneshot::Receiver(#7780)errorsof mpsc (#7722)spawn_localusage on local runtime (#7689)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.
9c5c8448d6tob5bc42f235b5bc42f235to3729b86e4c3729b86e4ctodc5c8ef2cedc5c8ef2cetoc5aa84e19fc5aa84e19ftoc51f380918c51f380918to9b04b6501a9b04b6501ato4657a8e4984657a8e498toc240fe6ff7c240fe6ff7to6007b379eb6007b379ebtof21ffc752cf21ffc752cto04caccf4af04caccf4aftob12df3bde4b12df3bde4to003a348438003a348438to364f3d508c364f3d508cto4abb2133f24abb2133f2to447117e9a7447117e9a7to56b19c59ce56b19c59cedba3d84a1cdba3d84a1cto65c1f217f965c1f217f9toa3f43386a9a3f43386a9toc3686865bdc3686865bdtof0d4f439adf0d4f439adto3f60dec6983f60dec698to72641cba7e72641cba7eto4ed7b96ea34ed7b96ea3tob57ad63b41b57ad63b41to7917f76cef7917f76ceftob59c5bcbbcb59c5bcbbctoac4e02f580ac4e02f580toad9f355137ad9f355137to67c785984b67c785984bto25cd21e05d25cd21e05dto9591f16e9b8749e43e35to9c46d99ac79c46d99ac7toed215dc239ed215dc239afefd0e9c1afefd0e9c1toa3f7a065b4a3f7a065b4to6f79e0b841View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.