tracing-core
Core primitives for application-level tracing.
0.1.36
800M downloads/mo
#90 most downloaded on crates.io
tokio-rs/tracing
What this package is like to depend on
Last release 8 months ago
18 Dec 2025
Release timing varies
gaps range from 2 weeks to 1.1 years
Nearly every release is documented
notes for 37 of 38 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
38 releases · first in 2019
2 releases in the last 12 months
see the full history below
Release timeline
38 releases · Jun 2019 to Dec 2025Releases
latest 38-
0.1.3618 Dec 2025 -
0.1.3526 Nov 2025Release notes
Open source →Added
- Switch to unconditional
no_std(#3323) - Improve code generation at trace points significantly (#3398)
Fixed
- Add missing
dynkeyword inVisitdocumentation code sample (#3387)
Documented
- Add favicon for extra pretty docs (#3351)
- Switch to unconditional
-
0.1.3406 Jun 2025Release notes
Open source →Changed
- Bump MSRV to 1.65 (#3033)
Fixed
- Do not compare references to pointers to compare pointers (#3236)
-
0.1.3325 Nov 2024Release notes
Open source →Added
Changed
Fixed
- Fix missed
register_callsiteerror (#2938) - Do not add
valuable/stdfeature as dependency unlessvaluableis used (#3002) - prefix macro calls with ::core to avoid clashing with local macros (#3024)
Documented
- Fix incorrect (incorrectly updated) docs for LevelFilter (#2767)
Thanks to new contributor @maddiemort for contributing to this release!
- Fix missed
-
0.1.3213 Oct 2023 -
0.1.3111 May 2023Release notes
Open source →This release of
tracing-corefixes a bug that caused threads which calldispatcher::get_defaultbefore a global default subscriber is set to never see the global default once it is set. In addition, it includes improvements for instrumentation performance in some cases, especially when using a global default dispatcher.Fixed
- Fixed incorrect thread-local caching of
Dispatch::noneifdispatcher::get_defaultis called beforedispatcher::set_global_default(#2593)
Changed
- Cloning a
Dispatchthat points at a global default subscriber no longer requires anArcreference count increment, improving performance substantially (#2593) dispatcher::get_defaultno longer attempts to access a thread local if the scoped dispatcher is not in use, improving performance when the default dispatcher is global (#2593)- Added
#[inline]annotations called by theevent!andspan!macros to reduce the size of macro-generated code and improve recording performance (#2555)
Thanks to new contributor @ldm0 for contributing to this release!
- Fixed incorrect thread-local caching of
-
0.1.3006 Oct 2022Release notes
Open source →This release of
tracing-coreadds a newon_register_dispatchmethod to theSubscribertrait to allow theSubscriberto perform initialization after being registered as aDispatch, and aWeakDispatchtype to allow aSubscriberto store its ownDispatchwithout creating reference count cycles.Added
Subscriber::on_register_dispatchmethod (#2269)WeakDispatchtype andDispatch::downgrade()function (#2293)
Thanks to @jswrenn for contributing to this release!
-
0.1.2929 Jul 2022Release notes
Open source →This release of
tracing-coreaddsPartialEqandEqimplementations for metadata types, and improves error messages when setting the global default subscriber fails.Added
PartialEqandEqimplementations forMetadata(#2229)PartialEqandEqimplementations forFieldSet(#2229)
Fixed
- Fixed unhelpful
fmt::Debugoutput fordispatcher::SetGlobalDefaultError(#2250) - Fixed compilation with
-Z minimal-versions(#2246)
Thanks to @jswrenn and @CAD97 for contributing to this release!
-
0.1.2824 Jun 2022Release notes
Open source →This release of
tracing-coreadds newValueimplementations, including one forString, to allow recording&Stringas a value without having to callas_str()or similar, and for 128-bit integers (i128andu128). In addition, it adds new methods and trait implementations forSubscribers.Added
Valueimplementation forString(#2164)Valueimplementation foru128andi28(#2166)downcast_refandismethods fordyn Subscriber + Sync,dyn Subscriber + Send, anddyn Subscriber + Send + Sync(#2160)Subscriber::event_enabledmethod to enable filtering based onEventfield values (#2008)Subscriberimplementation forBox<S: Subscriber + ?Sized>andArc<S: Subscriber + ?Sized>(#2161)
Thanks to @jswrenn and @CAD97 for contributing to this release!
-
0.1.2707 Jun 2022Release notes
Open source →This release of
tracing-coreintroduces a newDefaultCallsitetype, which can be used by instrumentation crates rather than implementing their own callsite types. UsingDefaultCallsitemay offer reduced overhead from callsite registration.Added
DefaultCallsite, a pre-writtenCallsiteimplementation for use in instrumentation crates (#2083)ValueSet::lenandRecord::lenmethods returning the number of fields in aValueSetorRecord(#2152)
Changed
- Replaced
lazy_staticdependency withonce_cell(#2147)
Documented
Thanks to new contributors @jamesmunns and @james7132 for contributing to this release!
-
0.1.2614 Apr 2022Release notes
Open source →This release adds a
Valueimplementation forBox<T: Value>to allow recording boxed values more conveniently. In particular, this should improve the ergonomics of the implementations fordyn std::error::Errortrait objects, including those added in v0.1.25.Added
Valueimplementation forBox<T> where T: Value(#2071)
Fixed
- Broken documentation links (#2068)
Thanks to new contributor @ben0x539 for contributing to this release!
-
0.1.2512 Apr 2022Release notes
Open source →This release adds additional
Valueimplementations forstd::error::Errortrait objects with auto trait bounds (SendandSync), as Rust will not auto-coerce trait objects. Additionally, it fixes a bug when setting scoped dispatchers that was introduced in the previous release (v0.1.24).Added
Valueimplementations fordyn Error + Send + 'static,dyn Error + Send + Sync + 'static,dyn Error + Sync + 'static(#2066)
Fixed
- Failure to use the global default dispatcher if a thread has set a scoped default prior to setting the global default, and unset the scoped default after setting the global default (#2065)
Thanks to @lilyball for contributing to this release!
-
0.1.2401 Apr 2022Release notes
Open source →This release fixes a bug where setting
NoSubscriberas the local default would not disable the global default subscriber locally.Fixed
- Setting
NoSubscriberas the local default now correctly disables the global default subscriber (#2001) - Fixed compilation warnings with the "std" feature disabled (#2022)
Changed
- Removed unnecessary use of
write!andformat_args!macros (#1988)
- Setting
-
0.1.2309 Mar 2022 -
0.1.2204 Feb 2022Release notes
Open source →This release adds experimental support for recording structured field values using the
valuablecrate. See this blog post for details onvaluable.Note that
valuablesupport currently requires--cfg tracing_unstable. See the documentation for details.Added
- field: Experimental support for recording field values using the
valuablecrate (#1608, #1888, #1887) - field: Added
ValueSet::recordmethod (#1823) - subscriber:
Defaultimpl forNoSubscriber(#1785) - metadata: New
Kind::HINTto support theenabled!macro intracing(#1883, #1891)
Fixed
Thanks to @xd009642, @Skepfyr, @guswynn, @Folyd, and @mbergkvist for contributing to this release!
- field: Experimental support for recording field values using the
-
0.1.2101 Oct 2021Release notes
Open source →This release adds support for recording
Option<T> where T: Valueas typedtracingfield values.Added
- field:
Valueimpl forOption<T> where T: Value(#1585)
Fixed
- Fixed deprecation warnings when building with
default-featuresdisabled (#1603, #1606) - Documentation fixes and improvements (#1595, #1601)
Thanks to @brianburgers, @DCjanus, and @matklad for contributing to this release!
- field:
-
0.1.2012 Sep 2021Release notes
Open source →This release adds support for
f64as one of thetracing-coreprimitive field values, allowing floating-point values to be recorded as typed values rather than withfmt::Debug. Additionally, it addsNoSubscriber, aSubscriberimplementation that does nothing.Added
- subscriber:
NoSubscriber, a no-opSubscriberimplementation (#1549) - field: Added
Visit::record_f64and support for recording floating-point values (#1507)
Thanks to new contributors @jsgf and @maxburke for contributing to this release!
- subscriber:
-
0.1.1917 Aug 2021 -
0.1.1830 Apr 2021Release notes
Open source →Added
Subscriberimpl forBox<dyn Subscriber + Send + Sync + 'static>(#1358)Subscriberimpl forArc<dyn Subscriber + Send + Sync + 'static>(#1374)- Symmetric
Fromimpls for existingIntoimpls onCurrentandOption<Id>(#1335) Attributes::fieldsaccessor that returns the set of fields defined on a span'sAttributes(#1331)
Thanks to @Folyd for contributing to this release!
-
0.1.1728 Sep 2020Release notes
Open source →Fixed
- Incorrect inlining of
Event::dispatchandEvent::child_of, which could result indispatcher::get_defaultbeing inlined at the callsite (#994)
Added
Copyimplementations forLevelandLevelFilter(#992)
Thanks to new contributors @jyn514 and @TaKO8Ki for contributing to this release!
- Incorrect inlining of
-
0.1.1608 Sep 2020Release notes
Open source →Fixed
- Added a conversion from
Option<Level>toLevelFilter. This resolves a previously unreported regression whereOption<Level>was no longer a valid LevelFilter. (#966)
- Added a conversion from
-
0.1.1523 Aug 2020Release notes
Open source →Fixed
- When combining
Interestfrom multiple subscribers, if the interests differ, the current subscriber is now always asked if a callsite should be enabled (#927)
Added
- Internal API changes to support optimizations in the
tracingcrate (#943) - docs: Multiple fixes and improvements (#913, #941)
- When combining
-
0.1.1410 Aug 2020Release notes
Open source →Fixed
- Incorrect calculation of global max level filter which could result in fast filtering paths not being taken (#908)
-
0.1.1305 Aug 2020Release notes
Open source →Fixed
- Missing
fmt::Displayimpl forfield::DisplayValuecausing a compilation failure when the "log" feature is enabled (#887)
Thanks to @d-e-s-o for contributing to this release!
- Missing
-
0.1.1231 Jul 2020Release notes
Open source →Added
LevelFiltertype andLevelFilter::current()for returning the highest level that any subscriber will enable (#853)Subscriber::max_level_hintoptional trait method, for setting the value returned byLevelFilter::current()(#853)
Fixed
- docs: Removed outdated reference to a Tokio API that no longer exists (#857)
Thanks to new contributor @dignati for contributing to this release!
-
0.1.1108 Jul 2020Release notes
Open source →Changed
- Replaced use of
inner_local_macroswith$crate::(#729)
Added
must_usewarning to guards returned bydispatcher::set_default(#686)fmt::Debugimpl todyn Values (#696)- Functions to convert between
span::IdandNonZeroU64(#770) - More obvious warnings in documentation (#769)
Fixed
- Compiler error when
tracing-core/stdfeature is enabled buttracing/stdis not (#760) - Clippy warning on vtable address comparison in
callsite::Identifier(#749) - Documentation formatting issues (#715, #771)
Thanks to @bkchr, @majecty, @taiki-e, @nagisa, and @nvzqz for contributing to this release!
- Replaced use of
-
0.1.1024 Feb 2020Release notes
Open source →Added
field::Emptytype for declaring empty fields whose values will be recorded later (#548)field::Valueimplementations forWrappingandNonZero*numbers (#538)
Fixed
- Broken and unresolvable links in RustDoc (#595)
Thanks to @oli-cosmian for contributing to this release!
-
0.1.910 Jan 2020Release notes
Open source →Added
- API docs now show what feature flags are required to enable each item (#523)
Fixed
- A panic when the current default subscriber subscriber calls
dispatcher::with_defaultas it is being dropped (#522) - Incorrect documentation for
Subscriber::drop_span(#524)
-
0.1.820 Dec 2019Release notes
Open source →Added
Defaultimpl forDispatch(#411)
Fixed
- Removed duplicate
lazy_staticdependencies (#424) - Fixed no-std dependencies being enabled even when
stdfeature flag is set (#424) - Broken link to
MetadatainEventdocs (#461)
-
0.1.721 Oct 2019Release notes
Open source →Added
- Added
dispatcher::set_defaultAPI which returns a drop guard (#388)
Fixed
- Added missing
Valueimpl foru8(#392) - Broken links in docs.
- Added
-
0.1.612 Sep 2019Release notes
Open source →Added
- Internal APIs to support performance optimizations (#326)
Fixed
- Clarified wording in
field::displaydocumentation (#340)
-
0.1.517 Aug 2019Release notes
Open source →Added
std::error::Erroras a new primitiveValuetype (#277)Event::newandEvent::new_child_ofto manually constructEvents (#281)
-
0.1.409 Aug 2019Release notes
Open source →Added
- Support for
no-std+liballoc(#256)
Fixed
- Broken links in RustDoc (#259)
Release notes
Open source →Added
- Parent option for default sampler
Fixed
- SDK tracer default span id
- Support for
-
0.1.308 Aug 2019Release notes
Open source →Added
std::fmt::Displayimplementation forLevel(#194)std::str::FromStrimplementation forLevel(#195)
Release notes
Open source →Changed
- Ensure spans are always send and sync
- Allow static lifetimes for span names
- Improve KeyValue ergonomics
-
0.1.210 Jul 2019Release notes
Open source →Deprecated
Subscriber::drop_spanin favor of newSubscriber::try_close(#168)
Added
Into<Option<&Id>>,Into<Option<Id>>, andInto<Option<&'static Metadata<'static>>>impls forspan::Current(#170)Subscriber::try_closemethod (#153)- Improved documentation for
dispatcher(#171)
-
0.1.106 Jul 2019Release notes
Open source →Added
Subscriber::current_spanAPI to return the current span (#148).span::Currenttype, representing theSubscriber's view of the current span (#148).
Fixed
- Typos and broken links in documentation (#123, #124, #128, #154)
Release notes
Open source →Added
- Documentation and API cleanup
- Tracking of active spans via thread local span stack
-
0.1.027 Jun 2019 -
0.0.020 Jun 2019Nothing published for this version