PackageTrack
Sign in Get early access

tracing-attributes

Procedural macro attributes for automatically instrumenting functions.

0.1.31 691M downloads/mo #124 most downloaded on crates.io tokio-rs/tracing

What this package is like to depend on

Last release 9 months ago

26 Nov 2025

Release timing varies

gaps range from 2 weeks to 1.1 years

Nearly every release is documented

notes for 30 of 30 stable releases

2 versions withdrawn

withdrawn after publishing

7 years old

32 releases · first in 2019

1 release in the last 12 months

see the full history below

Release timeline

32 releases · Aug 2019 to Nov 2025
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 32
  1. 0.1.31 26 Nov 2025
    Release notes

    Added

    • Support constant expressions as instrument field names (#3158)
    Open source →
  2. 0.1.30 17 Jun 2025
    Release notes

    Fixed

    • Fix tracing::instrument regression around shadowing (#3311)
    Open source →
  3. 0.1.29 06 Jun 2025
    Release notes

    Changed

    • Bump MSRV to 1.65 (#3033)

    Fixed

    • Let dead_code lint work on #[instrument]ed functions (#3108)
    • Globally qualify attribute paths (#3126)
    Open source →
  4. 0.1.28 26 Nov 2024
    Release notes

    Changed

    • Bump MSRV to 1.63 (#2793)

    Fixed

    • Added missing RecordTypes for instrument (#2781)
    • Change order of async and unsafe modifier (#2864)
    • Extract match scrutinee (#2880)
    • Allow field path segments to be keywords (#2925)
    • Support const values for target and name (#2941)

    Documented

    • Fix backporting error in attributes (#2780)
    Open source →
  5. 0.1.27 13 Oct 2023
    Release notes

    Changed

    • Bump minimum version of proc-macro2 to 1.0.60 (#2732)
    • Generate less dead code for async block return type hint (#2709)

    Fixed

    • Fix a compilation error in #[instrument] when the "log" feature is enabled (#2599)
    Open source →
  6. 0.1.26 22 Jun 2023
    Release notes

    This release of tracing-attributes fixes warnings due to allow attributes in generated code that allow lints which may not exist on earlier versions of rustc.

    Fixed

    • Allow unknown_lints in macro-generated code ([#2626])

    Thanks to @mladedav for contributing to this release!

    Open source →
  7. 0.1.25 19 Jun 2023
    Release notes

    This release of tracing-attributes fixes the Clippy lint let_with_type_underscore in code generated by the #[instrument] attribute in Rust 1.70+.

    Fixed

    • Allow [clippy::let_with_type_underscore] in macro-generated code (#2609)

    Thanks to @coolreader19 for contributing to this release!

    Open source →
  8. 0.1.24 24 Apr 2023
    Release notes

    This release of tracing-attributes adds support for passing an optional level to the err and ret arguments to #[instrument], allowing the level of the generated return-value event to be overridden. For example,

    #[instrument(err(level = "info"))]
    fn my_great_function() -> Result<(), &'static str> {
        // ...
    }
    

    will emit an INFO-level event if the function returns an Err.

    In addition, this release updates the syn dependency to v2.x.x.

    Added

    • level argument to err and ret to override the level of the generated return value event (#2335)
    • Improved compiler error message when #[instrument] is added to a const fn (#2418)

    Changed

    • Updated syn dependency to 2.0 (#2516)

    Fixed

    • Fix clippy::unreachable warnings in #[instrument]-generated code (#2356)
    • Removed unused "visit" feature flag from syn dependency (#2530)

    Documented

    • Documented default level for err (#2433)
    • Improved documentation for levels in #[instrument] (#2350)

    Thanks to @nitnelave, @jsgf, @Abhicodes-crypto, @LukeMathWalker, @andrewpollack, @quad, @klensy, @davidpdrsn, and @dbidwell94 for contributign to this release!

    Open source →
  9. 0.1.23 06 Oct 2022
    Release notes

    This release of tracing-attributes fixes a bug where compiler diagnostic spans for type errors in #[instrument]ed async fns have the location of the #[instrument] attribute rather than the location of the actual error, and a bug where inner attributes in #[instrument]ed functions would cause a compiler error.

    Fixed

    • Fix incorrect handling of inner attributes in #[instrument]ed functions (#2307)
    • Add fake return to improve spans generated for type errors in async fns (#2270)
    • Updated syn dependency to fix compilation with -Z minimal-versions (#2246)

    Thanks to new contributors @compiler-errors and @e-nomem, as well as @CAD97, for contributing to this release!

    Open source →
  10. 0.1.22 01 Jul 2022
    Release notes

    This release fixes an issue where using the err or ret arguments to #[instrument] along with an overridden target, such as

    #[instrument(target = "...", err, ret)]
    

    would not propagate the overridden target to the events generated for errors/return values.

    Fixed

    • Error and return value events generated by #[instrument(err)] or #[instrument(ret)] not inheriting an overridden target (#2184)
    • Incorrect default level in documentation (#2119)

    Thanks to new contributor @tbraun96 for contributing to this release!

    Open source →
  11. 0.1.21 27 Apr 2022
    Release notes

    This release adds support for setting explicit parent and follows-from spans in the #[instrument] attribute.

    Added

    • #[instrument(follows_from = ...)] argument for setting one or more follows-from span (#2093)
    • #[instrument(parent = ...)] argument for overriding the generated span's parent (#2091)

    Fixed

    • Extra braces around async blocks in expanded code (causes a Clippy warning) (#2090)
    • Broken documentation links (#2068, #2077)

    Thanks to @jarrodldavis, @ben0x539, and new contributor @jswrenn for contributing to this release!

    Open source →
  12. 0.1.20 08 Mar 2022
    Release notes

    Fixed

    • Compilation failure with --minimal-versions due to a too-permissive syn dependency (#1960)

    Changed

    • Bumped minimum supported Rust version (MSRV) to 1.49.0 (#1913)

    Thanks to new contributor @udoprog for contributing to this release!

    Open source →
  13. 0.1.19 04 Feb 2022
    Release notes

    This release introduces a new #[instrument(ret)] argument to emit an event with the return value of an instrumented function.

    Added

    • #[instrument(ret)] to record the return value of a function (#1716)
    • added err(Debug) argument to cause #[instrument(err)] to record errors with Debug rather than `Display (#1631)

    Fixed

    • incorrect code generation for functions returning async blocks (#1866)
    • incorrect diagnostics when using rust-analyzer (#1634)

    Thanks to @Swatinem, @hkmatsumoto, @cynecx, and @ciuncan for contributing to this release!

    Open source →
  14. 0.1.18 05 Oct 2021
    Release notes

    This release fixes issues introduced in v0.1.17.

    Fixed

    • fixed mismatched types compiler error that may occur when using #[instrument] on an async fn that returns an impl Trait value that includes a closure (#1616)
    • fixed false positives for clippy::suspicious_else_formatting warnings due to rust-lang/rust-clippy#7760 and rust-lang/rust-clippy#6249 (#1617)
    • fixed clippy::let_unit_value lints when using #[instrument] (#1614)
    Open source →
  15. 0.1.17 01 Oct 2021 withdrawn
    Release notes

    This release significantly improves performance when #[instrument]-generated spans are below the maximum enabled level.

    Added

    • improve performance when skipping #[instrument]-generated spans below the max level (#1600, #1605)

    Thanks to @oli-obk for contributing to this release!

    Open source →
  16. 0.1.16 13 Sep 2021
    Release notes

    This release adds a new #[instrument(skip_all)] option to skip recording all arguments to an instrumented function as fields. Additionally, it adds support for recording arguments that are tracing primitive types as typed values, rather than as fmt::Debug.

    Added

    • add skip_all option to #[instrument] (#1548)
    • record primitive types as primitive values rather than as fmt::Debug (#1378)
    • added support for f64s as typed values (#1522)

    Thanks to @Folyd and @jsgf for contributing to this release!

    Open source →
  17. 0.1.15 12 Mar 2021
    Release notes

    Fixed

    • #[instrument] on functions returning Box::pinned futures incorrectly skipping function bodies prior to returning a future (#1297)

    Thanks to @nightmared for contributing to this release!

    Open source →
  18. 0.1.14 10 Mar 2021
    Release notes

    Fixed

    • Compatibility between #[instrument] and async-trait v0.1.43 and newer (#1228)

    Thanks to @nightmared for lots of hard work on this fix!

    Open source →
  19. 0.1.13 17 Feb 2021
    Release notes

    Fixed

    • Compiler error when using #[instrument(err)] on functions which return impl Trait (#1236)
    Open source →
  20. 0.1.12 04 Feb 2021
    Release notes

    Fixed

    • Compiler error when using #[instrument(err)] on functions with mutable parameters (#1167)
    • Missing function visibility modifier when using #[instrument] with async-trait (#977)
    • Multiple documentation fixes and improvements (#965, #981, #1215)

    Changed

    • tracing-futures dependency is no longer required when using #[instrument] on async functions (#808)

    Thanks to @nagisa, @Txuritan, @TaKO8Ki, and @okready for contributing to this release!

    Open source →
  21. 0.1.11 18 Aug 2020
    Release notes

    Fixed

    • Corrected wrong minimum supported Rust version note in docs (#941)
    • Removed unused syn features (#928)

    Thanks to new contributor @jhpratt for contributing to this release!

    Open source →
  22. 0.1.10 10 Aug 2020 withdrawn
    Release notes

    Added

    • Support for using self in field expressions when instrumenting async-trait functions (#875)
    • Several documentation improvements (#832, #897, #911, #913)

    Thanks to @anton-dutov and @nightmared for contributing to this release!

    Open source →
  23. 0.1.9 08 Jul 2020
    Release notes

    Added

    • Support for arbitrary expressions as fields in #[instrument] (#672)

    Changed

    • #[instrument] now emits a compiler warning when ignoring unrecognized input (#672, #786)
    Open source →
  24. 0.1.8 14 May 2020
    Release notes

    Added

    • Support for using #[instrument] on methods that are part of async-trait trait implementations (#711)
    • Optional #[instrument(err)] argument to automatically emit an event if an instrumented function returns Err (#637)

    Thanks to @ilana and @nightmared for contributing to this release!

    Open source →
  25. 0.1.7 26 Feb 2020
    Release notes

    Added

    • Support for adding arbitrary literal fields to spans generated by #[instrument] (#569)
    • #[instrument] now emits a helpful compiler error when attempting to skip a function parameter (#600)

    Thanks to @Kobzol for contributing to this release!

    Open source →
  26. 0.1.6 20 Dec 2019
    Release notes

    Added

    • Updated documentation (#468)
    Open source →
  27. 0.1.5 23 Oct 2019
    Release notes

    Added

    • Support for destructuring in arguments to #[instrument]ed functions (#397)
    • Generated field for self parameters when #[instrument]ing methods (#397)
    Open source →
    Release notes

    Added

    • trace-context propagator

    Changed

    • Prometheus API cleanup
    Open source →
  28. 0.1.4 26 Sep 2019
    Release notes

    Added

    • Optional skip argument to #[instrument] for excluding function parameters from generated spans (#359)
    Open source →
    Release notes

    Added

    • Parent option for default sampler

    Fixed

    • SDK tracer default span id
    Open source →
  29. 0.1.3 12 Sep 2019
    Release notes

    Fixed

    • Fixed #[instrument]ed async functions not compiling on nightly-2019-09-11 or newer (#342)
    Open source →
    Release notes

    Changed

    • Ensure spans are always send and sync
    • Allow static lifetimes for span names
    • Improve KeyValue ergonomics
    Open source →
  30. 0.1.2 20 Aug 2019
    Release notes

    Changed

    • Updated syn and quote dependencies to 1.0 (#292)
    • Removed direct dependency on proc-macro2 to avoid potential version conflicts (#296)

    Fixed

    • Outdated idioms in examples (#271, #273)
    Open source →
    Release notes

    Added

    • Implement global provider
    Open source →
  31. 0.1.1 09 Aug 2019
    Release notes

    Changed

    • Using the #[instrument] attribute on async fns no longer requires a feature flag (#258)

    Fixed

    • The #[instrument] macro now works on generic functions (#262)
    Open source →
    Release notes

    Added

    • Documentation and API cleanup
    • Tracking of active spans via thread local span stack
    Open source →
  32. 0.1.0 08 Aug 2019
    Release notes
    • Initial release
    Open source →
    Release notes

    Initial debug alpha

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive