1# 0.1.26 (April 30, 2021)
2
3### Fixed
4
5- **attributes**: Compatibility between `#[instrument]` and `async-trait`
6  v0.1.43 and newer ([#1228])
7- Several documentation fixes ([#1305], [#1344])
8### Added
9
10- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>` ([#1358])
11- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>` ([#1374])
12- Symmetric `From` impls for existing `Into` impls on `span::Current`, `Span`,
13  and `Option<Id>` ([#1335], [#1338])
14- `From<EnteredSpan>` implementation for `Option<Id>`, allowing `EnteredSpan` to
15  be used in a `span!` macro's `parent:` field ([#1325])
16- `Attributes::fields` accessor that returns the set of fields defined on a
17  span's `Attributes` ([#1331])
18
19
20Thanks to @Folyd, @nightmared, and new contributors @rmsc and @Fishrock123 for
21contributing to this release!
22
23[#1227]: https://github.com/tokio-rs/tracing/pull/1228
24[#1305]: https://github.com/tokio-rs/tracing/pull/1305
25[#1325]: https://github.com/tokio-rs/tracing/pull/1325
26[#1338]: https://github.com/tokio-rs/tracing/pull/1338
27[#1344]: https://github.com/tokio-rs/tracing/pull/1344
28[#1358]: https://github.com/tokio-rs/tracing/pull/1358
29[#1374]: https://github.com/tokio-rs/tracing/pull/1374
30[#1335]: https://github.com/tokio-rs/tracing/pull/1335
31[#1331]: https://github.com/tokio-rs/tracing/pull/1331
32
33# 0.1.25 (February 23, 2021)
34
35### Added
36
37- `Span::entered` method for entering a span and moving it into a guard by value
38  rather than borrowing it ([#1252])
39
40Thanks to @matklad for contributing to this release!
41
42[#1252]: https://github.com/tokio-rs/tracing/pull/1252
43
44# 0.1.24 (February 17, 2021)
45
46### Fixed
47
48- **attributes**: Compiler error when using `#[instrument(err)]` on functions
49  which return `impl Trait` ([#1236])
50- Fixed broken match arms in event macros ([#1239])
51- Documentation improvements ([#1232])
52
53Thanks to @bkchr and @lfranke for contributing to this release!
54
55[#1236]: https://github.com/tokio-rs/tracing/pull/1236
56[#1239]: https://github.com/tokio-rs/tracing/pull/1239
57[#1232]: https://github.com/tokio-rs/tracing/pull/1232
58
59# 0.1.23 (February 4, 2021)
60
61### Fixed
62
63- **attributes**: Compiler error when using `#[instrument(err)]` on functions
64  with mutable parameters ([#1167])
65- **attributes**: Missing function visibility modifier when using
66  `#[instrument]` with `async-trait` ([#977])
67- **attributes** Removed unused `syn` features ([#928])
68- **log**: Fixed an issue where the `tracing` macros would generate code for
69  events whose levels are disabled statically by the `log` crate's
70  `static_max_level_XXX` features ([#1175])
71- Fixed deprecations and clippy lints ([#1195])
72- Several documentation fixes and improvements ([#941], [#965], [#981], [#1146],
73  [#1215])
74
75### Changed
76
77- **attributes**: `tracing-futures` dependency is no longer required when using
78  `#[instrument]` on async functions ([#808])
79- **attributes**: Updated `tracing-attributes` minimum dependency to v0.1.12
80  ([#1222])
81
82Thanks to @nagisa, @Txuritan, @TaKO8Ki, @okready, and @krojew for contributing
83to this release!
84
85[#1167]: https://github.com/tokio-rs/tracing/pull/1167
86[#977]: https://github.com/tokio-rs/tracing/pull/977
87[#965]: https://github.com/tokio-rs/tracing/pull/965
88[#981]: https://github.com/tokio-rs/tracing/pull/981
89[#1215]: https://github.com/tokio-rs/tracing/pull/1215
90[#808]: https://github.com/tokio-rs/tracing/pull/808
91[#941]: https://github.com/tokio-rs/tracing/pull/941
92[#1146]: https://github.com/tokio-rs/tracing/pull/1146
93[#1175]: https://github.com/tokio-rs/tracing/pull/1175
94[#1195]: https://github.com/tokio-rs/tracing/pull/1195
95[#1222]: https://github.com/tokio-rs/tracing/pull/1222
96
97# 0.1.22 (November 23, 2020)
98
99### Changed
100
101- Updated `pin-project-lite` dependency to 0.2 ([#1108])
102
103[#1108]: https://github.com/tokio-rs/tracing/pull/1108
104
105# 0.1.21 (September 28, 2020)
106
107### Fixed
108
109- Incorrect inlining of `Span::new`, `Span::new_root`, and `Span::new_child_of`,
110  which could result in  `dispatcher::get_default` being inlined at the callsite
111  ([#994])
112- Regression where using a struct field as a span or event field when other
113  fields on that struct are borrowed mutably would fail to compile ([#987])
114
115### Changed
116
117- Updated `tracing-core` to 0.1.17 ([#992])
118
119### Added
120
121- `Instrument` trait and `Instrumented` type for attaching a `Span` to a
122  `Future` ([#808])
123- `Copy` implementations for `Level` and `LevelFilter` ([#992])
124- Multiple documentation fixes and improvements ([#964], [#980], [#981])
125
126Thanks to @nagisa, and new contributors @SecurityInsanity, @froydnj, @jyn514 and
127@TaKO8Ki for contributing to this release!
128
129[#994]: https://github.com/tokio-rs/tracing/pull/994
130[#992]: https://github.com/tokio-rs/tracing/pull/992
131[#987]: https://github.com/tokio-rs/tracing/pull/987
132[#980]: https://github.com/tokio-rs/tracing/pull/980
133[#981]: https://github.com/tokio-rs/tracing/pull/981
134[#964]: https://github.com/tokio-rs/tracing/pull/964
135[#808]: https://github.com/tokio-rs/tracing/pull/808
136
137# 0.1.20 (August 24, 2020)
138
139### Changed
140
141- Significantly reduced assembly generated by macro invocations (#943)
142- Updated `tracing-core` to 0.1.15 (#943)
143
144### Added
145
146- Documented minimum supported Rust version policy (#941)
147
148# 0.1.19 (August 10, 2020)
149
150### Fixed
151
152- Updated `tracing-core` to fix incorrect calculation of the global max level
153  filter (#908)
154
155### Added
156
157- **attributes**: Support for using `self` in field expressions when
158  instrumenting `async-trait` functions (#875)
159- Several documentation improvements (#832, #881, #896, #897, #911, #913)
160
161Thanks to @anton-dutov, @nightmared, @mystor, and @toshokan for contributing to
162this release!
163
164# 0.1.18 (July 31, 2020)
165
166### Fixed
167
168- Fixed a bug where `LevelFilter::OFF` (and thus also the `static_max_level_off`
169  feature flag) would enable *all* traces, rather than *none* (#853)
170- **log**: Fixed `tracing` macros and `Span`s not checking `log::max_level`
171  before emitting `log` records (#870)
172
173### Changed
174
175- **macros**: Macros now check the global max level (`LevelFilter::current`)
176  before the per-callsite cache when determining if a span or event is enabled.
177  This significantly improves performance in some use cases (#853)
178- **macros**: Simplified the code generated by macro expansion significantly,
179  which may improve compile times and/or `rustc` optimizatation of surrounding
180  code (#869, #869)
181- **macros**: Macros now check the static max level before checking any runtime
182  filtering, improving performance when a span or event is disabled by a
183  `static_max_level_XXX` feature flag (#868)
184- `LevelFilter` is now a re-export of the `tracing_core::LevelFilter` type, it
185  can now be used interchangably with the versions in `tracing-core` and
186  `tracing-subscriber` (#853)
187- Significant performance improvements when comparing `LevelFilter`s and
188  `Level`s (#853)
189- Updated the minimum `tracing-core` dependency to 0.1.12 (#853)
190
191### Added
192
193- **macros**: Quoted string literals may now be used as field names, to allow
194  fields whose names are not valid Rust identifiers (#790)
195- **docs**: Several documentation improvements (#850, #857, #841)
196- `LevelFilter::current()` function, which returns the highest level that any
197  subscriber will enable (#853)
198- `Subscriber::max_level_hint` optional trait method, for setting the value
199  returned by `LevelFilter::current()` (#853)
200
201Thanks to new contributors @cuviper, @ethanboxx, @ben0x539, @dignati,
202@colelawrence, and @rbtcollins for helping out with this release!
203
204# 0.1.17 (July 22, 2020)
205
206### Changed
207
208- **log**: Moved verbose span enter/exit log records to "tracing::span::active"
209  target, allowing them to be filtered separately (#833)
210- **log**: All span lifecycle log records without fields now have the `Trace`
211  log filter, to guard against `log` users enabling them by default with blanket
212  level filtering (#833)
213
214### Fixed
215
216- **log**/**macros**: Fixed missing implicit imports of the
217  `tracing::field::debug` and `tracing::field::display` functions inside the
218  macros when the "log" feature is enabled (#835)
219
220# 0.1.16 (July 8, 2020)
221
222### Added
223
224- **attributes**: Support for arbitrary expressions as fields in `#[instrument]` (#672)
225- **attributes**: `#[instrument]` now emits a compiler warning when ignoring unrecognized
226  input (#672, #786)
227- Improved documentation on using `tracing` in async code (#769)
228
229### Changed
230
231- Updated `tracing-core` dependency to 0.1.11
232
233### Fixed
234
235- **macros**: Excessive monomorphization in macros, which could lead to
236  longer compilation times (#787)
237- **log**: Compiler warnings in macros when `log` or `log-always` features
238  are enabled (#753)
239- Compiler error when `tracing-core/std` feature is enabled but `tracing/std` is
240  not (#760)
241
242Thanks to @nagisa for contributing to this release!
243
244# 0.1.15 (June 2, 2020)
245
246### Changed
247
248- **macros**: Replaced use of legacy `local_inner_macros` with `$crate::` (#740)
249
250### Added
251
252- Docs fixes and improvements (#742, #731, #730)
253
254Thanks to @bnjjj, @blaenk, and @LukeMathWalker for contributing to this release!
255
256# 0.1.14 (May 14, 2020)
257
258### Added
259
260- **log**: When using the [`log`] compatibility feature alongside a `tracing`
261  `Subscriber`, log records for spans now include span IDs (#613)
262- **attributes**: Support for using `#[instrument]` on methods that are part of
263  [`async-trait`] trait implementations (#711)
264- **attributes**: Optional `#[instrument(err)]` argument to automatically emit
265  an event if an instrumented function returns `Err` (#637)
266- Added `#[must_use]` attribute to the guard returned by
267  `subscriber::set_default` (#685)
268
269### Changed
270
271- **log**: Made [`log`] records emitted by spans much less noisy when span IDs are
272 not available (#613)
273
274### Fixed
275
276- Several typos in the documentation (#656, #710, #715)
277
278Thanks to @FintanH, @shepmaster, @inanna-malick, @zekisharif, @bkchr, @majecty,
279@ilana and @nightmared for contributing to this release!
280
281[`async-trait`]: https://crates.io/crates/async-trait
282[`log`]: https://crates.io/crates/log
283
284# 0.1.13 (February 26, 2019)
285
286### Added
287
288- **field**: `field::Empty` type for declaring empty fields whose values will be
289  recorded later (#548)
290- **field**: `field::Value` implementations for `Wrapping` and `NonZero*`
291  numbers (#538)
292- **attributes**: Support for adding arbitrary literal fields to spans generated
293  by `#[instrument]` (#569)
294- **attributes**: `#[instrument]` now emits a helpful compiler error when
295  attempting to skip a function parameter (#600)
296
297### Changed
298
299- **attributes**: The `#[instrument]` attribute was placed under an on-by-default
300  feature flag "attributes" (#603)
301
302### Fixed
303
304- Broken and unresolvable links in RustDoc (#595)
305
306Thanks to @oli-cosmian and @Kobzol for contributing to this release!
307
308# 0.1.12 (January 11, 2019)
309
310### Added
311
312- `Span::with_subscriber` method to access the subscriber that tracks a `Span`
313  (#503)
314- API documentation now shows which features are required by feature-flagged
315  items (#523)
316- Improved README examples (#496)
317- Documentation links to related crates (#507)
318
319# 0.1.11 (December 20, 2019)
320
321### Added
322
323- `Span::is_none` method (#475)
324- `LevelFilter::into_level` method (#470)
325- `LevelFilter::from_level` function and `From<Level>` impl (#471)
326- Documented minimum supported Rust version (#482)
327
328### Fixed
329
330- Incorrect parameter type to `Span::follows_from` that made it impossible to
331  call (#467)
332- Missing whitespace in `log` records generated when enabling the `log` feature
333  flag (#484)
334- Typos and missing links in documentation (#405, #423, #439)
335
336# 0.1.10 (October 23, 2019)
337
338### Added
339
340- Support for destructuring in arguments to `#[instrument]`ed functions (#397)
341- Generated field for `self` parameters when `#[instrument]`ing methods (#397)
342- Optional `skip` argument to `#[instrument]` for excluding function parameters
343  from generated spans (#359)
344- Added `dispatcher::set_default` and `subscriber::set_default` APIs, which
345  return a drop guard (#388)
346
347### Fixed
348
349- Some minor documentation errors (#356, #370)
350
351# 0.1.9 (September 13, 2019)
352
353### Fixed
354
355- Fixed `#[instrument]`ed async functions not compiling on `nightly-2019-09-11`
356  or newer (#342)
357
358### Changed
359
360- Significantly reduced performance impact of skipped spans and events when a
361  `Subscriber` is not in use (#326)
362- The `log` feature will now only cause `tracing` spans and events to emit log
363  records when a `Subscriber` is not in use (#346)
364
365### Added
366
367- Added support for overriding the name of the span generated by `#[instrument]`
368  (#330)
369- `log-always` feature flag to emit log records even when a `Subscriber` is set
370  (#346)
371
372# 0.1.8 (September 3, 2019)
373
374### Changed
375
376- Reorganized and improved API documentation (#317)
377
378### Removed
379
380- Dev-dependencies on `ansi_term` and `humantime` crates, which were used only
381  for examples (#316)
382
383# 0.1.7 (August 30, 2019)
384
385### Changed
386
387- New (curly-brace free) event message syntax to place the message in the first
388  field rather than the last (#309)
389
390### Fixed
391
392- Fixed a regression causing macro stack exhaustion when the `log` feature flag
393  is enabled (#304)
394
395# 0.1.6 (August 20, 2019)
396
397### Added
398
399- `std::error::Error` as a new primitive type (#277)
400- Support for mixing key-value fields and `format_args` messages without curly
401  braces as delimiters (#288)
402
403### Changed
404
405- `tracing-core` dependency to 0.1.5 (#294)
406- `tracing-attributes` dependency to 0.1.2 (#297)
407
408# 0.1.5 (August 9, 2019)
409
410### Added
411
412- Support for `no-std` + `liballoc` (#263)
413
414### Changed
415
416- Using the `#[instrument]` attribute on `async fn`s no longer requires a
417  feature flag (#258)
418
419### Fixed
420
421- The `#[instrument]` macro now works on generic functions (#262)
422
423# 0.1.4 (August 8, 2019)
424
425### Added
426
427- `#[instrument]` attribute for automatically adding spans to functions (#253)
428
429# 0.1.3 (July 11, 2019)
430
431### Added
432
433- Log messages when a subscriber indicates that a span has closed, when the
434  `log` feature flag is enabled (#180).
435
436### Changed
437
438- `tracing-core` minimum dependency version to 0.1.2 (#174).
439
440### Fixed
441
442- Fixed an issue where event macro invocations with a single field, using local
443  variable shorthand, would recur infinitely (#166).
444- Fixed uses of deprecated `tracing-core` APIs (#174).
445
446# 0.1.2 (July 6, 2019)
447
448### Added
449
450- `Span::none()` constructor, which does not require metadata and
451  returns a completely empty span (#147).
452- `Span::current()` function, returning the current span if it is
453  known to the subscriber (#148).
454
455### Fixed
456
457- Broken macro imports when used prefixed with `tracing::` (#152).
458
459# 0.1.1 (July 3, 2019)
460
461### Changed
462
463- `cfg_if` dependency to 0.1.9.
464
465### Fixed
466
467- Compilation errors when the `log` feature is enabled (#131).
468- Unclear wording and typos in documentation (#124, #128, #142).
469
470# 0.1.0 (June 27, 2019)
471
472- Initial release
473