NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #528 most downloaded on crates.io
OpenTelemetry integration for tracing
Last release 15 days ago
23 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 36 of 39 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
40 releases · first in 2019
Nothing published for this version
[ breaking ] avoid deadlock when entering a span
One column per quarter.
allow OpenTelemetry context access with SpanRef
Add configuration for including target in spans
target in spans (#222)OtelData via dedicated functions. Note that thesecode.filepath, code.lineno, and code.namespace have been renamed tocode.file.path, and code.line.number, and code.module.name, to align with the opentelemetryMetricsProvider in MetricsLayer (#224)otel.status_message was changed to otel.status_description to align with themetrics_gauge_unstable feature.Upgrade from opentelemetry 0.29.0 to 0.30.0. Refer to the upstream changelog for more information.
OpenTelemetrySpanExt::add_event and OpenTelemetrySpanExt::add_event_with_timestamptracing::Span, enabling the use of dynamic attribute keysdoc: tracked inactivity default by @aimericsr in #195
Fix the example installing OpenTelemetryLayer into a global subscriber by @mzabaluev in #175
Reduce locking in the implementation of Layer::on_close by @mzabaluev in #173
Layer::on_close by @mzabaluev in #173Upgrade to opentelemetry 0.26. Refer to the upstream changelog for more information.
Upgrade to opentelemetry 0.25 by @ymgyt in #164
chore: fix on_close() comment by @Oliboy50 in #148
Upgrade to opentelemetry 0.23. Refer to the upstream changelog for more information.
Upgrade to opentelemetry 0.22. Refer to the upstream changelog for more information. In particular, i64 histograms will silently downgrade to key/valu
Upgrade to v0.21.0 of opentelemetry For list of breaking changes in OpenTelemetry, see the v0.21.0 changelog.
v0.21.0 of opentelemetry
For list of breaking changes in OpenTelemetry, see the
v0.21.0 changelog.opentelemetry requires it now. (#68)Thanks to @jesseditson, @AsmPrgmC3, and @rthomas for contributing to this release!
ab9415a
This commit was created on GitHub.com and signed with GitHub’s verified signature .
GPG key ID: B5690EEEBB952194
Verified Learn about vigilant mode .
#1410 Add experimental synchronous gauge. This is behind the feature flag, and can be enabled by enabling the feature otel_unstable for opentelemetry crate.
#1410 Guidelines to add new unstable/experimental features.
Modified AnyValue.Map to be backed by HashMap instead of custom OrderMap, which internally used IndexMap. There was no requirement to maintain the order of entries, so moving from IndexMap to HashMap offers slight performance gains, and avoids IndexMap dependency. This affects body and attributes of LogRecord. #1353
Add TextMapCompositePropagator #1373
Turned off events for NoopLogger to save on operations #1455
Removed OrderMap type as there was no requirement to use this over regular HashMap. #1353
Remove API for Creating Histograms with signed integers. #1371
Remove global::shutdown_meter_provider, use SdkMeterProvider::shutdown directly instead ( #1412 ).
#1410 Add experimental synchronous gauge
#1471 Configure batch log record processor via OTEL_BLRP_* environment variables and via OtlpLogPipeline::with_batch_config
#1503 Make the documentation for In-Memory exporters visible.
#1526 Performance Improvement : Creating Spans and LogRecords are now faster, by avoiding expensive cloning of Resource for every Span/LogRecord.
Breaking #1313 #1350 Changes how Span links/events are stored to achieve performance gains. See below for details:
Behavior Change : When enforcing max_links_per_span , max_events_per_span from SpanLimits , links/events are kept in the first-come order. The previous "eviction" based approach is no longer performed.
Breaking Change Affecting Exporter authors :
SpanData now stores links as SpanLinks instead of EvictedQueue where SpanLinks is a struct with a Vec of links and dropped_count .
SpanData now stores events as SpanEvents instead of EvictedQueue where SpanEvents is a struct with a Vec of events and dropped_count .
Breaking Remove TextMapCompositePropagator #1373 . Use TextMapCompositePropagator in opentelemetry API.
#1375 Fix metric collections during PeriodicReader shutdown
Breaking #1480 Remove fine grained BatchConfig configurations from BatchLogProcessorBuilder and BatchSpanProcessorBuilder . Use BatchConfigBuilder to construct a BatchConfig instance and pass it using BatchLogProcessorBuilder::with_batch_config or BatchSpanProcessorBuilder::with_batch_config .
Breaking #1480 Remove mutating functions from BatchConfig , use BatchConfigBuilder to construct a BatchConfig instance.
Breaking #1495 Remove Batch LogRecord&Span Processor configuration via non-standard environment variables. Use the following table to migrate from the no longer supported non-standard environment variables to the standard ones.
No longer supported Standard equivalent
OTEL_BLRP_SCHEDULE_DELAY_MILLIS OTEL_BLRP_SCHEDULE_DELAY
OTEL_BLRP_EXPORT_TIMEOUT_MILLIS OTEL_BLRP_EXPORT_TIMEOUT
OTEL_BSP_SCHEDULE_DELAY_MILLIS OTEL_BSP_SCHEDULE_DELAY
OTEL_BSP_EXPORT_TIMEOUT_MILLIS OTEL_BSP_EXPORT_TIMEOUT
Breaking 1455 Make the LoggerProvider Owned
Logger now takes an Owned Logger instead of a Weak<LoggerProviderInner>
LoggerProviderInner is no longer pub (crate)
Logger.provider() now returns &LoggerProvider instead of an Option<LoggerProvider>
1519 Performance improvements when calling Counter::add() and UpDownCounter::add() with an empty set of attributes (e.g. counter.Add(5, &[]) )
Ability to produce measurement with attributes
MetricsLayer is now generic over the its Subscriber impl to support
per-layer filtering (#43)Thanks to @ymgyt and @hdost for contributing to this release!
Upgrade to v0.20.0 of opentelemetry (#36) For list of breaking changes in OpenTelemetry, see the v0.20.0 changelog.
OpenTelemetrySpanExt::set_attribute function (#34)v0.20.0 of opentelemetry (#36)
For list of breaking changes in OpenTelemetry, see the
v0.20.0 changelog.Thanks to @ymgyt, @mladedav, @shaun-cox, and @Protryon for contributing to this release!
Upgrade to v0.19.0 of opentelemetry (#12) For list of breaking changes in OpenTelemetry, see the v0.19.0 changelog.
v0.19.0 of opentelemetry (#12)
For list of breaking changes in OpenTelemetry, see the
v0.19.0 changelog.opentelemetry requires it now (#12)Thanks to @jaysonsantos, @briankung, and @humb1t for contributing to this release!
Upgrade to v0.18.0 of opentelemetry ([#2303]) For list of breaking changes in OpenTelemetry, see the v0.18.0 changelog.
v0.18.0 of opentelemetry ([#2303])
For list of breaking changes in OpenTelemetry, see the
v0.18.0 changelog.on_event respects event's explicit parent ([#2296])Thanks to @wprzytula for contributing to this release!
This release adds optional support for recording std::Errors using [OpenTelemetry's semantic conventions for exceptions][exn-semconv].
This release adds optional support for recording std::error::Errors using
[OpenTelemetry's semantic conventions for exceptions][exn-semconv].
Layer::with_exception_fields to enable emitting exception.message and
exception.backtrace semantic-convention fields when an Error is recorded
as a span or event field (#2135)Layer::with_exception_field_propagation to enable setting exception.message and
exception.backtrace semantic-convention fields on the current span when an
event with an Error field is recorded (#2135)Thanks to @lilymara-onesignal for contributing to this release!
This release adds support for emitting thread names and IDs to OpenTelemetry, as well as recording std::Error values in a structured manner with their
This release adds support for emitting thread names and IDs to OpenTelemetry, as
well as recording std::error::Error values in a structured manner with their
source chain included. Additionally, this release fixes issues related to event
and span source code locations.
Layer::with_threads to enable recording thread names/IDs according to
OpenTelemetry semantic conventions (#2134)Error::source chain when recording std::error::Error values (#2122)Layer::with_location method (replaces Layer::with_event_location)
(#2124)std::error::Error values are now recorded using fmt::Display rather than
fmt::Debug (#2122)Layer::with_event_location not controlling whether locations are
emitted for spans as well as events (#2124)Layer::with_event_location: renamed to Layer::with_location, as it now
controls both span and event locations (#2124)Thanks to new contributors @lilymara-onesignal, @hubertbudzynski, and @DevinCarr for contributing to this release!
This release fixes [an issue][#1944] introduced in v0.17.1 where tracing-opentelemetry could not be compiled with default-features = false.
OpenTelemetryLayer can now add detailed location information to forwarded events (defaults to on) ([#1911])
OpenTelemetryLayer can now add detailed location information to
forwarded events (defaults to on) (#1911)OpenTelemetryLayer::with_event_location to control whether source locations
are recorded (#1911)Thanks to @djc for contributing to this release!
Upgrade to v0.17.0 of opentelemetry (#1853) For list of breaking changes in OpenTelemetry, see the v0.17.0 changelog.
v0.17.0 of opentelemetry (#1853)
For list of breaking changes in OpenTelemetry, see the
v0.17.0 changelog.Nothing published for this version
Upgrade to v0.17.1 of opentelemetry (#1497) For list of breaking changes in OpenTelemetry, see the v0.17.1 changelog.
v0.17.1 of opentelemetry (#1497)
For list of breaking changes in OpenTelemetry, see the
v0.17.1 changelog.Upgrade to v0.15.0 of opentelemetry ([#1441]) For list of breaking changes in OpenTelemetry, see the v0.14.0 changelog.
v0.15.0 of opentelemetry (#1441)
For list of breaking changes in OpenTelemetry, see the
v0.14.0 changelog.code.namespace, code.filepath, and
code.lineno attributes (#1411)Vecs (#1327)Thanks to @Drevoed, @lilymara-onesignal, and @Folyd for contributing to this release!
Upgrade to v0.14.0 of opentelemetry (#1394) For list of breaking changes in OpenTelemetry, see the v0.14.0 changelog.
v0.14.0 of opentelemetry (#1394)
For list of breaking changes in OpenTelemetry, see the
v0.14.0 changelog.Upgrade to v0.13.0 of opentelemetry (#1322) For list of breaking changes in OpenTelemetry, see the v0.13.0 changelog.
v0.13.0 of opentelemetry (#1322)
For list of breaking changes in OpenTelemetry, see the
v0.13.0 changelog.Upgrade to v0.12.0 of opentelemetry (#1200) For list of breaking changes in OpenTelemetry, see the v0.12.0 changelog.
v0.12.0 of opentelemetry (#1200)
For list of breaking changes in OpenTelemetry, see the
v0.12.0 changelog.Upgrade to v0.11.0 of opentelemetry (#1161) For list of breaking changes in OpenTelemetry, see the v0.11.0 changelog.
v0.11.0 of opentelemetry (#1161)
For list of breaking changes in OpenTelemetry, see the
v0.11.0 changelog.OpenTelemetrySpanExt::set_parent to take a context by value as it is
now stored and propagated. (#1161)PreSampledTracer::sampled_span_context to
PreSampledTracer::sampled_context as it now returns a full otel context. (#1161)Upgrade to v0.10.0 of opentelemetry (#1049) For list of breaking changes in OpenTelemetry, see the v0.10.0 changelog.
with_tracked_inactivity (#1096)v0.10.0 of opentelemetry (#1049)
For list of breaking changes in OpenTelemetry, see the
v0.10.0 changelog.Implement additional record types (bool, i64, u64)
PreSampledTracer interface, removes need to specify sampler (#962)Upgrade to v0.8.0 of opentelemetry (#932) For list of breaking changes in OpenTelemetry, see the v0.8.0 changelog.
v0.8.0 of opentelemetry (#932)
For list of breaking changes in OpenTelemetry, see the
v0.8.0 changelog.Upgrade to v0.7.0 of opentelemetry (#867) For list of breaking changes in OpenTelemetry, see the v0.7.0 changelog.
v0.7.0 of opentelemetry (#867)
For list of breaking changes in OpenTelemetry, see the
v0.7.0 changelog.Support tracing-log special values
tracing-log special values (#735)Span::follows_from creating otel span links (#723)otel.name field (#732)v0.6.0 of opentelemetry (#745)tracing_opentelemetry::layer() method to construct a default layer.
tracing_opentelemetry::layer() method to construct a default layer.OpenTelemetryLayer::with_sampler method to configure the opentelemetry
sampling behavior.OpenTelemetryLayer::new method to configure both the tracer and sampler.OpenTelemetrySpanExt::set_parent now accepts a reference to an extracted
parent Context instead of a SpanContext to match propagators.OpenTelemetrySpanExt::context now returns a Context instead of a
SpanContext to match propagators.OpenTelemetryLayer::with_tracer now takes &self as a parameterv0.5.0 of opentelemetry.Change span status code to unknown on error event
Span extension for injecting and extracting opentelemetry span contexts into tracing spans
opentelemetry span contexts
into tracing spansmetrics feature of the opentelemetry as it is unused.Update tracing-subscriber to 0.2.0 stable
tracing-subscriber to 0.2.0 stableopentelemetry 0.2.0Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →