opentelemetry
OpenTelemetry API for Rust
0.32.0
246M downloads/mo
#425 most downloaded on crates.io
open-telemetry/opentelemetry-rust
What this package is like to depend on
Last release 3 months ago
08 May 2026
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 41 of 42 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
42 releases · first in 2019
2 releases in the last 12 months
see the full history below
Release timeline
42 releases · Nov 2019 to May 2026Releases
latest 42-
0.32.008 May 2026Release notes
Open source →Released 2026-May-08
- Added
BoundCounter<T>andBoundHistogram<T>types that cache resolved aggregator references for a fixed attribute set. Created viaCounter::bind()andHistogram::bind(), bound instruments bypass per-call attribute lookup, providing significant performance improvements for hot paths where the same attributes are used repeatedly. Both types implementCloneso a single bound state can be shared across threads or modules without re-binding. Also adds theSyncInstrument::bind()trait method andBoundSyncInstrument<T>trait for SDK implementors; the trait method has a no-op default so customSyncInstrumentimpls degrade gracefully without panicking. Gated behind theexperimental_metrics_bound_instrumentsfeature flag. - Add
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. - Breaking Removed the following public fields and methods from the
SpanBuilder#3227:trace_id,span_id,end_time,status,sampling_resultwith_trace_id,with_span_id,with_end_time,with_status,with_sampling_result
- Added
#[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. - Breaking Moved the following SDK sampling types from
opentelemetry::tracetoopentelemetry_sdk::trace#3277:SamplingDecision,SamplingResult- These types are SDK implementation details and should be imported from
opentelemetry_sdk::traceinstead.
- "spec_unstable_logs_enabled" feature flag is removed. The capability (and the backing specification) is now stable and is enabled by default. 3278
- Remove the empty "message" field from
tracingevents emitted via theinternal-logsfeature - Fix panic when calling
Context::current()fromDropimplementations triggered byContextGuardcleanup (#3262).
- Added
-
0.31.025 Sep 2025Release notes
Open source →Released 2025-Sep-25
- Breaking Change return type of
opentelemetry::global::set_tracer_providerto Unit to align with metrics counterpart - Add
get_allmethod toopentelemetry::propagation::Extractorto return all values of the given propagation key and provide a default implementation. - Add an
IntoIteratorimplementation foropentelemetry::trace::TraceStateto allow iterating through its key-value pair collection.
- Breaking Change return type of
-
0.30.023 May 2025Release notes
Open source →Released 2025-May-23
#2821 Context based suppression capabilities added: Added the ability to prevent recursive telemetry generation through new context-based suppression mechanisms. This feature helps prevent feedback loops and excessive telemetry when OpenTelemetry components perform their own operations.
New methods added to
Context:is_telemetry_suppressed()- Checks if telemetry is suppressed in this contextwith_telemetry_suppressed()- Creates a new context with telemetry suppression enabledis_current_telemetry_suppressed()- Efficiently checks if the current thread's context has telemetry suppressedenter_telemetry_suppressed_scope()- Convenience method to enter a scope where telemetry is suppressed
These methods allow SDK components, exporters, and processors to temporarily disable telemetry generation during their internal operations, ensuring more predictable and efficient observability pipelines.
- re-export
tracingforinternal-logsfeature to remove the need of addingtracingas a dependency
-
0.29.102 Apr 2025Release notes
Open source →Release 2025-Apr-01
- Bug Fix: Re-export
WithContextatopentelemetry::trace::context::WithContext#2879 to restore backwards compatibility- The new path for
WithContextandFutureExtare inopentelemetry::contextas they are independent of the trace signal. Users should prefer this path.
- The new path for
- Bug Fix: Re-export
-
0.29.022 Mar 2025Release notes
Open source →Released 2025-Mar-21
- Breaking Moved
ExportErrortrait fromopentelemetry::trace::ExportErrortoopentelemetry_sdk::export::ExportError - Breaking Moved
TraceErrorenum fromopentelemetry::trace::TraceErrortoopentelemetry_sdk::trace::TraceError - Breaking Moved
TraceResulttype alias fromopentelemetry::trace::TraceResulttoopentelemetry_sdk::trace::TraceResult - Bug Fix:
InstrumentationScopeimplementation forPartialEqandHashfixed to include Attributes also. - Breaking changes for baggage users: #2717
- Changed value type of
BaggagefromValuetoStringValue - Updated
Baggageconstants to reflect latest standard (MAX_KEY_VALUE_PAIRS- 180 -> 64,MAX_BYTES_FOR_ONE_PAIR- removed) and increased insert performance see #2284. - Align
Baggage.remove()signature with.get()to take the key as a reference Baggagecan't be retrieved from theContextdirectly anymore and needs to be accessed viacontext.baggage()with_baggage()andcurrent_with_baggage()override any existingBaggagein theContextBaggagekeys can't be empty and only allow ASCII visual chars, except"(),/:;<=>?@[\]{}(see RFC7230, Section 3.2.6)KeyValueMetadatadoes not publicly expose its fields. This should be transparent change to the users.
- Changed value type of
- Changed
Contextto use a stack to properly handle out of order dropping ofContextGuard. This imposes a limit of65535nested contexts on a single thread. See #2378 and #1887. - Added additional
name: Option<&str>parameter to theevent_enabledmethod on theLoggertrait. This allows implementations (SDK, processor, exporters) to leverage this additional information to determine if an event is enabled.
- Breaking Moved
-
0.28.010 Feb 2025Release notes
Open source →Released 2025-Feb-10
- Bump msrv to 1.75.0.
- Breaking
opentelemetry::global::shutdown_tracer_provider()Removed from this crate, should now usetracer_provider.shutdown()see #2369 for a migration example. - Breaking Removed unused
opentelemetry::PropagationErrorstruct.
Release notes
Open source →Released 2025-Feb-10
- Update to v1.29.0 of the semantic conventions.
- Bump msrv to 1.75.0.
-
0.27.127 Nov 2024 -
0.27.012 Nov 2024Release notes
Open source →Released 2024-Nov-11
- Bump MSRV to 1.70 #2179
- Add
LogRecord::set_trace_context; an optional method conditional on thetracefeature for setting trace context on a log record. - Removed unnecessary public methods named
as_anyfromAsyncInstrumenttrait and the implementing instruments:ObservableCounter,ObservableGauge, andObservableUpDownCounter#2187 - Introduced
SyncInstrumenttrait to replace the individual synchronous instrument traits (SyncCounter,SyncGauge,SyncHistogram,SyncUpDownCounter) which are meant for SDK implementation. #2207 - Ensured that
observemethod on asynchronous instruments can only be called inside a callback. This was done by removing the implementation ofAsyncInstrumenttrait for each of the asynchronous instruments. #2210 - Removed
PartialOrdandOrdimplementations forKeyValue. #2215 - Breaking change for exporter authors: Marked
KeyValuerelated structs and enums asnon_exhaustive. #2228 - Breaking change for log exporter authors: Marked
AnyValueenum asnon_exhaustive. #2230 - Breaking change for Metrics users: The
initmethod used to create instruments has been renamed tobuild. Also,try_init()method is removed from instrument builders. The return types ofInstrumentProvidertrait methods modified to return the instrument struct, instead ofResult. #2227
Before:
let counter = meter.u64_counter("my_counter").init();Now:
let counter = meter.u64_counter("my_counter").build();-
Breaking change: #2220
- Removed deprecated method
InstrumentationLibrary::new - Renamed
InstrumentationLibrarytoInstrumentationScope - Renamed
InstrumentationLibraryBuildertoInstrumentationScopeBuilder - Removed deprecated methods
LoggerProvider::versioned_loggerandTracerProvider::versioned_tracer - Removed methods
LoggerProvider::logger_builder,TracerProvider::tracer_builderandMeterProvider::versioned_meter - Replaced these methods with
LoggerProvider::logger_with_scope,TracerProvider::logger_with_scope,MeterProvider::meter_with_scope - Replaced
global::meter_with_versionwithglobal::meter_with_scope - Added
global::tracer_with_scope - Refer to PR description for migration guide.
- Removed deprecated method
-
Breaking change: replaced
InstrumentationScopepublic attributes by getters #2275 -
Breaking change: #2260
- Removed
global::set_error_handlerandglobal::handle_error. global::handle_errorusage inside the opentelemetry crates has been replaced withglobal::otel_info,otel_warn,otel_debugandotel_errormacros based on the severity of the internal logs.- The default behavior of
global::handle_errorwas to log the error usingeprintln!. With otel macros, the internal logs get emitted viatracingmacros of matching severity. Users now need to configure atracinglayer/subscriber to capture these logs. - Refer to PR description for migration guide. Also refer to self-diagnostics example to learn how to view internal logs in stdout using
tracing::fmtlayer.
- Removed
-
Breaking change for exporter/processor authors: #2266
- Moved
ExportErrortrait fromopentelemetry::ExportErrortoopentelemetry_sdk::export::ExportError - Created new trait
opentelemetry::trace::ExportErrorfor trace API. This would be eventually be consolidated with ExportError in the SDK. - Moved
LogErrorenum fromopentelemetry::logs::LogErrortoopentelemetry_sdk::logs::LogError - Moved
LogResulttype alias fromopentelemetry::logs::LogResulttoopentelemetry_sdk::logs::LogResult - Moved
MetricErrorenum fromopentelemetry::metrics::MetricErrortoopentelemetry_sdk::metrics::MetricError - Moved
MetricResulttype alias fromopentelemetry::metrics::MetricResulttoopentelemetry_sdk::metrics::MetricResultThese changes shouldn't directly affect the users of OpenTelemetry crate, as these constructs are used in SDK and Exporters. If you are an author of an sdk component/plug-in, like an exporter etc. please use these types from sdk. Refer CHANGELOG.md for more details, under same version section.
- Moved
-
Breaking 2291 Rename
logs_level_enabled flagtospec_unstable_logs_enabled. Please enable this updated flag if the feature is needed. This flag will be removed once the feature is stabilized in the specifications.
Release notes
Open source → -
0.26.001 Oct 2024Release notes
Open source →Released 2024-Sep-30
-
BREAKING Public API changes:
-
Removed:
Key.bool(),Key.i64(),Key.f64(),Key.string(),Key.array()#2090. These APIs were redundant as they didn't offer any additional functionality. The existingKeyValue::new()API covers all the scenarios offered by these APIs. -
Removed:
ObjectSafeMeterProviderandGlobalMeterProvider#2112. These APIs were unnecessary and were mainly meant for internal use. -
Modified:
MeterProvider.meter()andMeterProvider.versioned_meter()argument types have been updated to&'static strinstead ofimpl Into<Cow<'static, str>>>#2112. These APIs were modified to enforce the Metername,version, andschema_urlto be&'static str. -
Renamed:
NoopMeterCoretoNoopMeter
-
-
Added
with_boundariesAPI to allow users to provide custom bounds for Histogram instruments. #2135
Release notes
Open source →Released 2024-Sep-30
Changed
- Starting with this version, this crate will use Weaver for the generation of the semantic conventions.
- Breaking Introduced a new feature
semconv_experimentalto enable experimental semantic conventions. This feature is disabled by default.
-
-
0.25.009 Sep 2024Release notes
Open source →- BREAKING #1993 Box complex types in AnyValue enum Before:
#[derive(Debug, Clone, PartialEq)] pub enum AnyValue { /// An integer value Int(i64), /// A double value Double(f64), /// A string value String(StringValue), /// A boolean value Boolean(bool), /// A byte array Bytes(Vec<u8>), /// An array of `Any` values ListAny(Vec<AnyValue>), /// A map of string keys to `Any` values, arbitrarily nested. Map(HashMap<Key, AnyValue>), }After:
#[derive(Debug, Clone, PartialEq)] pub enum AnyValue { /// An integer value Int(i64), /// A double value Double(f64), /// A string value String(StringValue), /// A boolean value Boolean(bool), /// A byte array Bytes(Box<Vec<u8>>), /// An array of `Any` values ListAny(Box<Vec<AnyValue>>), /// A map of string keys to `Any` values, arbitrarily nested. Map(Box<HashMap<Key, AnyValue>>), }So the custom log appenders should box these types while adding them in message body, or attribute values. Similarly, the custom exporters should dereference these complex type values before serializing.
Breaking : #2015 Removed the ability to register callbacks for Observable instruments on Meter directly. If you were using
meter.register_callbackto provide the callback, provide them usingwith_callbackmethod, while creating the Observable instrument itself. 1715 shows the exact changes needed to make this migration. If you are starting new, refer to the examples to learn how to provide Observable callbacks. -
0.24.015 Jul 2024Release notes
Open source →-
Add "metrics", "logs" to default features. With this, default feature list is "trace", "metrics" and "logs".
-
When "metrics" feature is enabled,
KeyValueimplementsPartialEq,Eq,PartialOrder,Order,Hash. This is meant to be used for metrics aggregation purposes only. -
Removed
Unitstruct for specifying Instrument units. Unit is treated as an opaque string. Migration: Replace.with_unit(Unit::new("myunit"))with.with_unit("myunit"). -
1869 Introduced the
LogRecord::set_target()method in the log bridge API. This method allows appenders to set the target/component emitting the logs.
-
-
0.23.015 May 2024Release notes
Open source →Added
- #1640 Add
PropagationError - #1701
Gaugeno longer requiresotel-unstablefeature flag, as OpenTelemetry specification forGaugeinstrument is stable.
Removed
- Remove
urlencodingcrate dependency. #1613 - Remove global providers for Logs $1691 LoggerProviders are not meant for end users to get loggers from. It is only required for the log bridges. Below global constructs for the logs are removed from API: - opentelemetry::global::logger - opentelemetry::global::set_logger_provider - opentelemetry::global::shutdown_logger_provider - opentelemetry::global::logger_provider - opentelemetry::global::GlobalLoggerProvider - opentelemetry::global::ObjectSafeLoggerProvider For creating appenders using Logging bridge API, refer to the opentelemetry-tracing-appender example
Changed
-
BREAKING Moving LogRecord implementation to the SDK. 1702.
- Relocated
LogRecordstruct to SDK. - Introduced the
LogRecordtrait in the API for populating log records. This trait is implemented by the SDK. This is the breaking change for the authors of Log Appenders. Refer to the opentelemetry-appender-tracing for more details.
- Relocated
-
Deprecate
versioned_logger()in favor oflogger_builder()1567.
Before:
let logger = provider.versioned_logger( "my-logger-name", Some(env!("CARGO_PKG_VERSION")), Some("https://opentelemetry.io/schemas/1.0.0"), Some(vec![KeyValue::new("key", "value")]), );After:
let logger = provider .logger_builder("my-logger-name") .with_version(env!("CARGO_PKG_VERSION")) .with_schema_url("https://opentelemetry.io/schemas/1.0.0") .with_attributes(vec![KeyValue::new("key", "value")]) .build();- Deprecate
versioned_tracer()in favor oftracer_builder()1567.
Before:
let tracer = provider.versioned_tracer( "my-tracer-name", Some(env!("CARGO_PKG_VERSION")), Some("https://opentelemetry.io/schemas/1.0.0"), Some(vec![KeyValue::new("key", "value")]), );After:
let tracer = provider .tracer_builder("my-tracer-name") .with_version(env!("CARGO_PKG_VERSION")) .with_schema_url("https://opentelemetry.io/schemas/1.0.0") .with_attributes(vec![KeyValue::new("key", "value")]) .build(); - #1640 Add
-
0.22.025 Feb 2024Release notes
Open source →Added
-
#1410 Add experimental synchronous gauge. This is behind the feature flag, and can be enabled by enabling the feature
otel_unstablefor opentelemetry crate. -
#1410 Guidelines to add new unstable/experimental features.
Changed
- Modified
AnyValue.Mapto be backed byHashMapinstead of customOrderMap, which internally usedIndexMap. There was no requirement to maintain the order of entries, so moving fromIndexMaptoHashMapoffers slight performance gains, and avoidsIndexMapdependency. This affectsbodyandattributesofLogRecord. #1353 - Add
TextMapCompositePropagator#1373 - Turned off events for
NoopLoggerto save on operations #1455
Removed
-
-
0.21.006 Nov 2023Release notes
Open source →This release should been seen as 1.0-rc4 following 1.0-rc3 in v0.20.0. Refer to CHANGELOG.md in individual creates for details on changes made in different creates.
Changed
- Bump MSRV to 1.65 #1318
- Bump MSRV to 1.64 #1203
opentelemetrycrate now only carries the API types #1186. Use theopentelemetry_sdkcrate for the SDK types.trace::noop::NoopSpanno longer implementsDefaultand instead exposes aconst DEFAULTvalue. #1270- Updated crate documentation and examples. #1256
- Breaking
SpanBuilderattributes changed fromOrderMap<Key, Value>toVec<KeyValue>andwith_attributes_mapmethod is removed fromSpanBuilder. This implies that OpenTelemetry API will no longer perform de-dup of attribute Keys. #1293. Please share feedback here, if you are affected.
-
0.20.030 Jul 2023Release notes
Open source →This release should been seen as 1.0-rc3 following 1.0-rc2 in v0.19.0. Refer to CHANGELOG.md in individual creates for details on changes made in different creates.
Added
- Add
newmethod toBoxedTracer#1009 - Add js-sys as dependency for api crate when building wasm targets #1078
- Create tracer using a shared instrumentation library #1129
- Add
Context::map_current#1140 - Add unit/doc tests for metrics #1213
- Add
opentelemetry::sdk::logs::config()for parity withopentelemetry::sdk::trace::config()(#1197)
Changed
OtelString::OwnedcarriesBox<str>instead ofString#1096
Removed
- Drop include_trace_context parameter from Logs API/SDK. #1133
- Synchronous instruments no longer accepts
Contextwhile reporting measurements. #1076. - Fallible conversions from
futures-channelerror types toLogErrorandTraceErrorremoved. #1201
Fixed
- Add
-
0.19.026 Mar 2023Release notes
Open source →This release should been seen as 1.0-rc2 following 1.0-rc1 in v0.18.0. Refer to CHANGELOG.md in individual creates for details on changes made in different creates.
Added
Changed
-
0.18.013 Sep 2022Release notes
Open source →This release is the first beta release of the
traceAPI and SDK. If no other breaking changes are necessary, the next release will be 1.0. ThemetricsAPI and SDK are still unstable.Added
- Pull sampling probability from
OTEL_TRACES_SAMPLER_ARGin default sdk config #737 - Add
schema_urltoTracer#743 - Add
schema_urltoResource#775 - Add
Span::set_attributes#638 - Support concurrent exports #781
- Add jaeger remote sampler #797
- Allow Custom Samplers #833
- Add
SpanExporter::force_flushand default implementation #845
Changed
- Deprecate metrics
ValueRecorderin favor ofHistogram#728 - Move
IdGeneratorto SDK, rename toRandomIdGenerator#742 meter_with_versionaccepts optional parameter forversionandschema_url#752- Unify
EventandLinkaccess patterns #757 - move
SpanKinddisplay format impl to jaeger crate #758 - make
TraceStateErrorprivate #755 - rename
Span::record_exceptiontoSpan::record_error#756 - Replace
StatusCodeandmessagewithStatus#760 - Move
TracerProvider::force_flushto SDK #658 - Switch to static resource references #790
- Allow O(1) get operations for
SpanBuilder::attributes[breaking] #799 - Allow ref counted keys and values #821
- Bump MSRV from 1.49 to 1.55 #811
- bump MSRV to 1.56 #866
- Update metrics API and SDK for latest spec #819
- Switch to
pin-project-lite#830
Fixed
- Update dashmap to avoid soundness hole #818
- Perform sampling as explained in the specification #839
- Remove internal message queue between exporter and exporting tasks #848
- Fix span processor exporting unsampled spans #871
Removed
- Remove
serializefeature #738 - Remove
StatusCode::as_str#741 - Remove
Tracer::with_span#746
- Pull sampling probability from
-
0.17.022 Jan 2022Release notes
Open source →Changed
- Implement
Serialize&DeserializeforSampler,SpanLimits#622, #626 - Allow
&'static strandstringin span methods #654 - Allow
Stringdata in instrumentation library. #670 - Remove
std::fmt::Debugand'staticrequirements fromTracerProvider,Tracer, andSpan#664 - Remove unused
Tracer::invalidmethod #683 - Split
TracerProvider::tracerandTracerProvider::versioned_tracermethods #682 - Reduce dependency on
futurescrate #684 - Switch to parent context references #687
- Spec-compliant trace and span ids #689
- Optimize span creation internals #693
- Add instrumentation library to
ShouldSampleparameters #695
Fixed
- Fix default resource detection for tracer provider #641
- Detect
service.namefromOTEL_SERVICE_NAMEandOTEL_RESOURCE_ATTRIBUTES#662 - Fix
TraceState::valid_keycrashes #665
- Implement
-
0.16.007 Aug 2021Release notes
Open source →Changed
- Add default resource in
TracerProvider#571 - Rename
get_tracertotracer#586 - Extract
trace::noopmodule and update docs #587 - Add
Hashimpl for span context and allow spans to clone and export current state #592 - Enforce span status code's order #593
- Make
SpanRefpublic #600 - Make
SpanProcessor::on_starttake a mutable span #601 - Renamed
labeltoattributeto align with otel specification #609
Performance
- Small performance boost for
Resource::get#579
Release notes
Open source →Changed
- Breaking Moved duplicated (and unrelated) attributes from
opentelemetry_semantic_conventions::traceandopentelemetry_semantic_conventions::resourceintoopentelemetry_semantic_conventions::attribute(which now contains all semantic attributes).traceandresourcenow only contain references to attributes which fall under their respective category.
Added
- Created
opentelemetry_semantic_conventions::metricto store metric semantic conventions.
- Add default resource in
-
0.15.017 Jun 2021Release notes
Open source →Added
- More resource detectors #573
Changed
- Expose the Error type to allow users to set custom error handlers #551
- Allow users to use different channels based on runtime in batch span processor #560
- Move
Unitintometricsmodule #564 - Update trace flags to match spec #565
Fixed
- Fix debug loop, add notes for
#[tokio::test]#552 TraceStatecannot insert new key-value pairs #567
-
0.14.010 May 2021Release notes
Open source →Changed
- Breaking Replaced Key constants with &'static str for tracing compatibility #1334
-
0.13.024 Mar 2021Release notes
Open source →Upgrade note: exporter pipelines do not return an uninstall guard as of #444, use
opentelemetry::global::shutdown_tracer_providerexplicitly instead. -
0.12.022 Jan 2021 -
0.11.201 Jan 2021 -
0.11.129 Dec 2020 -
0.11.028 Dec 2020 -
0.10.010 Nov 2020 -
0.9.117 Oct 2020Nothing published for this version
-
0.9.016 Oct 2020 -
0.8.014 Aug 2020 -
0.7.027 Jul 2020Release notes
Open source →Added
- New
ParentOrElsesampler for fallback logic if parent is not sampled. #128 - Attributes can now have array values #146
- Added
record_exceptionandrecord_exception_with_stacktracemethods toSpan#152
Changed
- Update sampler types #128
Alwaysis nowAlwaysOn.Neveris nowAlwaysOff.Probabilitynow ignores parent sampled state.
base64andbinary_propagatorhave been moved toexperimentalmodule. #134Correlation-Contextheader has been updated tootcorrelations#145B3Propagatorhas been updated to more closely follow the spec #148
Release notes
Open source →Changed
- Update to spec version 1.4.0 #570
- Update to opentelemetry v0.15.0
- New
-
0.6.002 Jun 2020Release notes
Open source →Added
- Add
httpandtonicfeatures to implCarrierfor common types.
Changed
- Removed
span_idfrom sampling parameters when implementing custom samplers.
Fixed
- Make
ContextSend + Syncin #127
Release notes
Open source →Changed
- Update to spec version 1.3.0 #547
- Update to opentelemetry v0.14.0
- Add
-
0.5.010 May 2020Release notes
Open source →Added
- Derive
CloneforB3Propagator,SamplingResult, andSpanBuilder - Ability to configure the span id / trace id generator
- impl
From<T>for commonKeyandValuetypes - Add global
tracermethod - Add
ResourceAPI - Add
ContextAPI - Add
CorrelationsAPI - Add
HttpTextCompositePropagatorfor composingHttpTextPropagators - Add
GlobalPropagatorfor globally configuring a propagator - Add
TraceContextExtto provide methods for working with trace data in a context - Expose
EvictedQueueconstructor
Changed
- Ensure that impls of
SpanareSendandSyncwhen used inglobal - Changed
KeyandValuemethod signatures to removeCowreferences - Tracer's
startnow uses the implicit current context instead of an explicit span context.start_with_contextmay be used to specify a context if desired. with_spannow accepts a span for naming consistency and managing the active state of a more complex span (likely produced by a builder), and the previous functionality that accepts a&strhas been renamed toin_span, both of which now yield a context to the provided closure.- Tracer's
get_active_spannow accepts a closure - The
Instrumenttrait has been renamed toFutureExtto avoid clashing with metric instruments, and instead accepts contexts viawith_context. - Span's
get_contextmethod has been renamed tospan_contextto avoid ambiguity. HttpTextPropagatorsinject the current context instead of an explicit span context. The context can be specified withinject_context.SpanData'scontexthas been renamed tospan_context
Fixed
- Update the probability sampler to match the spec
- Rename
Traceparentheader totraceparent
Removed
TracerGenericsmethods have been folded in to theTracertrait so it is longer needed- Tracer's
mark_span_as_inactivehas been removed - Exporters no longer require an
as_anymethod - Span's
mark_as_active,mark_as_inactive, andas_anyhave been removed
Release notes
Open source →Changed
- Update to opentelemetry v0.13.0
Removed
- Removed
from_envand use environment variables to initialize the configurations by default #459
- Derive
-
0.4.004 Apr 2020Release notes
Open source →Added
- New async batch span processor
- New stdout exporter
- Add
trace_idtoSpanBuilder
Changed
- Add
attributestoEvents. - Update
Span'sadd_eventandadd_event_with_timestampto accept attributes. - Record log fields in jaeger exporter
- Properly export span kind in jaeger exporter
- Add support for
Links - Add
status_messagetoSpanandSpanData - Rename
SpanStatustoStatusCode - Update
EvictedQueueinternals from LIFO to FIFO - Switch span attributes to
EvictedHashMap
Fixed
- Call
shutdowncorrectly when span processors and exporters are dropped
-
0.3.024 Mar 2020Release notes
Open source →Added
- New Base64 propagator
- New SpanBuilder api
- Zipkin Exporter crate
Changed
- Switch to
SpanIdandTraceIdfromu64andu128 - Remove
&mut selfrequirements forSpanAPI
Fixed
- circular Tracer debug impl
-
0.2.007 Feb 2020Release notes
Open source →Added
- Make trace and metrics features optional
- ExportResult as specified in the specification
- Add Futures compatibility API
- Added serde serialize support to SpanData
- Separate OpenTelemetry Jaeger crate
Changed
- Rename HttpTraceContextPropagator to TraceContextPropagator
- Rename HttpB3Propagator to B3Propagator
- Switch to Apache 2 license
- Resolve agent addresses to allow non-static IP
- Remove tracer name prefix from span name
Removed
- Remove add_link from spans
-
0.1.526 Nov 2019 -
0.1.421 Nov 2019Release notes
Open source →Added
- Parent option for default sampler
Fixed
- SDK tracer default span id
-
0.1.319 Nov 2019Release notes
Open source →Changed
- Ensure spans are always send and sync
- Allow static lifetimes for span names
- Improve KeyValue ergonomics
-
0.1.217 Nov 2019 -
0.1.115 Nov 2019Release notes
Open source →Added
- Documentation and API cleanup
- Tracking of active spans via thread local span stack
-
0.1.008 Nov 2019