- Remove
urlencodingcrate dependency. #1613
- Deprecate
versioned_logger()in favor oflogger_builder()1567.
Before:
let logger = provider.versioned_logger(
"my-logger-name",
Some("X.Y.Z"),
Some("https://opentelemetry.io/schema/1.0.0"),
Some(vec![KeyValue::new("key", "value")]),
);
After:
let logger = provider
.logger_builder("my-tracername")
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(semcov::SCHEMA_URL)
.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("X.Y.Z"),
Some("https://opentelemetry.io/schema/1.0.0"),
Some(vec![KeyValue::new("key", "value")]),
);
After:
let tracer = provider
.tracer_builder("my-tracername")
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(semcov::SCHEMA_URL)
.with_attributes(vec![KeyValue::new("key", "value")])
.build();
-
#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.
- 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
OrderMaptype as there was no requirement to use this over regularHashMap. #1353 - Remove API for Creating Histograms with signed integers. #1371
- Remove
global::shutdown_meter_provider, useSdkMeterProvider::shutdowndirectly instead #1412.
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.
- 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.
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.
- 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)
OtelString::OwnedcarriesBox<str>instead ofString#1096
- 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
- Fix
SpanRef::set_attributesmutability requirement. #1038 - Move OrderMap module to root of otel-api crate. #1061
- Use the browser-only js-sys workaround only when actually targeting a browser #1008
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.
- Implement
DisplayonBaggage#921. - Bump MSRV to 1.57 #953.
- Update dependencies and bump MSRV to 1.60 #969.
This release is the first beta release of the trace API and SDK. If no other
breaking changes are necessary, the next release will be 1.0. The metrics API
and SDK are still unstable.
- 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
- 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
- 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
- Remove
serializefeature #738 - Remove
StatusCode::as_str#741 - Remove
Tracer::with_span#746
- 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
- Fix default resource detection for tracer provider #641
- Detect
service.namefromOTEL_SERVICE_NAMEandOTEL_RESOURCE_ATTRIBUTES#662 - Fix
TraceState::valid_keycrashes #665
- 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
- Small performance boost for
Resource::get#579
- More resource detectors #573
- 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
- Fix debug loop, add notes for
#[tokio::test]#552 TraceStatecannot insert new key-value pairs #567
- Adding a dynamic dispatch to Aggregator Selector #497
- Add
global::force_flush_tracer_provider#512 - Add config
max_attributes_per_eventandmax_attributes_per_link#521 - Add dropped attribute counts to events and links #529
- Remove unnecessary clone in
Keytype #491 - Remove
#[must_use]fromset_tracer_provider#501 - Rename remaining usage of
default_samplertosampler#509 - Use current span for SDK-less context propagation #510
- Always export span batch when limit reached #519
- Rename message events to events #530
- Update resource merge behaviour #537
- Ignore links with invalid context #538
- Remove remote span context #508
- Remove metrics quantiles #525
- Allow users to use custom export kind selector #526
- Improve simple span processor performance #502
- Local span perf improvements #505
- Reduce string allocations where possible #506
Upgrade note: exporter pipelines do not return an uninstall guard as of #444,
use opentelemetry::global::shutdown_tracer_provider explicitly instead.
- Pull configrations from environment variables by default when creating BatchSpanProcessor #445
- Convert doc links to intra-doc #466
- Switch to Cow for event names #471
- Use API to configure async runtime instead of features #481
- Rename trace config with_default_sampler to with_sampler #482
- Removed tracer provider guard #444
- Removed
from_envand use environment variables to initialize the configurations by default #459
- Instrumentation library support #402
- Batch observer support #429
with_unitmethods in metrics #431- Clone trait for noop tracer/tracer provider/span #479
- Abstracted traits for different runtimes #480
- Dependencies updates #410
- Add
Send,SynctoAsyncInstrumentin metrics #422 - Add
Send,SynctoInstrumentCorein metrics #423 - Replace regex with custom logic #411
- Update tokio to v1 #421
- Moved
httpdependencies into a new opentelemetry-http crate #415 - Remove
tonicdependency #414
- Fix possible deadlock when dropping metric instruments #407
- Fix remote implicit builder context sampling #405
- Add
force_flushmethod to span processors #358 - Add timeout for
force_flushandshutdown#362
- Implement Display trait for Key and Value types #353
- Remove Option from Array values #359
- Update
ShouldSample's parent parameter to beContext#368 - Consolidate error types in
tracemodule intoTraceError#371 - Add
#[must_use]to uninstall structs #372 - Move 3rd party propagators and merge exporter into
sdk::export#375 - Add instrumentation version to instrument config #392
- Use instrumentation library in metrics #393
start_from_contextrenamed tostart_with_context#399- Removed
build_with_contextas full context is now stored in builder #399 - SpanBuilder's
with_parentrenamed towith_parent_context#399
- Fix parent based sampling in tracer #354
- StatusCode enum value ordering #377
- Counter adding the delta from last collection #395
HistogramAggregatorreturning sum vs count #398
- Add support for baggage metadata #287
- Remove
apiprefix from modules #305 - Move
mark_as_active_spanandget_active_spanfunctions into trace module #310 - Revert renaming of
SpanContexttoSpanReference#299 - Default trace propagator is now a no-op #329
- Return references to span contexts instead of clones #325
- Update exporter errors to be
Box<dyn Error + Send + Sync + 'static>#284 - Rename
GenericProvidertoGenericTracerProvider#313 - Reduce
SpanStatusenum toOk,Error, andUnsetvariants #315 - update B3 propagator to more closely match spec #319
- Export missing pub global trace types #313
- Ensure kv array values are homogeneous #333
- Implement
Displaytrait forKeyandValuetypes #353 - Move
SpanProcessortrait intosdkmodule #334 - Ensure
is_recordingisfalseand span is no-op afterend#341 - Move binary propagator and base64 format to contrib #343
- Ensure metrics noop types go through constructors #345
- Change
ExportResultto usestd::result::Result#347 - Change
SpanExporter::exportto take&mut selfinstead of&self#350 - Add MSRV 1.42.0 #296
- Fix parent based sampling #354
- Remove support for
u64andbyteskv values #323 - Remove kv value conversion from
&str#332
- Allow metric instruments to be cloned #280
- Fix single threaded runtime tokio feature bug #278
- Add resource detector #174
- Add
fieldsmethod to TextMapFormat #178 - Add support for
tracestateinTraceContextPropagator#191 - Propagate valid span context in noop tracer #197
- Add end_with_timestamp method for trace span #199
- Add ID methods for hex and byte array formatting #200
- Add AWS X-Ray ID Generator #201
- AWS X-Ray Trace Context Propagator #202
- Add instrumentation library information to spans #207
- Add keys method to extractors #209
- Add
TraceStatetoSpanContext#217 - Add
from_envconfig option forBatchSpanProcessor#228 - Add pipeline uninstall mechanism to shut down trace pipelines #229
- Re-write metrics sdk to be spec compliant #179
- Rename
Sampler::ProbabilitytoSampler::TraceIdRatioBased#188 - Rename
HTTPTextPropagatortoTextMapPropagator#192 - Ensure extractors are case insensitive #193
- Rename
ProvidertoTracerProvider#206 - Rename
CorrelationContextintoBaggage#208 - Pipeline builder for stdout trace exporter #224
- Switch to async exporters #232
- Allow
ShouldSampleimplementation to modify trace state #237 - Ensure context guard is
!Send#239 - Ensure trace noop structs use
newconstructor #240 - Switch to w3c
baggageheader #246 - Move trace module imports from
apitoapi::trace#255 - Update
tonicfeature to use version0.3.x#258 - Update exporters to receive owned span data #264
- Move propagators to
sdk::propagation#266 - Rename SpanContext to SpanReference #270
- Rename
SamplingDecision'sNotRecord,RecordandRecordAndSampledtoDropRecordOnlyandRecordAndSample#247
- Add custom span processors to
Provider::Builder#166
- Separate
CarrierintoInjectorandExtractor#164 - Change the default sampler to be
ParentOrElse(AlwaysOn)#163 - Move the
Samplerinterface to the SDK #169
- 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
- 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
- Add
httpandtonicfeatures to implCarrierfor common types.
- Removed
span_idfrom sampling parameters when implementing custom samplers.
- Make
ContextSend + Syncin #127
- 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
- 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
- Update the probability sampler to match the spec
- Rename
Traceparentheader totraceparent
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
- New async batch span processor
- New stdout exporter
- Add
trace_idtoSpanBuilder
- 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
- Call
shutdowncorrectly when span processors and exporters are dropped
- New Base64 propagator
- New SpanBuilder api
- Zipkin Exporter crate
- Switch to
SpanIdandTraceIdfromu64andu128 - Remove
&mut selfrequirements forSpanAPI
- circular Tracer debug impl
- Make trace and metrics features optional
- ExportResult as specified in the specification
- Add Futures compatibility API
- Added serde serialise support to SpanData
- Separate OpenTelemetry Jaeger crate
- 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
- Remove add_link from spans
- trace-context propagator
- Prometheus API cleanup
- Parent option for default sampler
- SDK tracer default span id
- Ensure spans are always send and sync
- Allow static lifetimes for span names
- Improve KeyValue ergonomics
- Implement global provider
- Documentation and API cleanup
- Tracking of active spans via thread local span stack
Initial debug alpha