• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Change Log
2
3## [Unreleased]
4
5## [0.4.17] - 2022-04-29
6
7* Update `kv_unstable` internal dependencies.
8
9## [0.4.16] - 2022-03-22
10
11* Fix a conflict with unqualified `Option` use in macros.
12
13## [0.4.15] - 2022-02-23
14
15* Silence a warning about the deprecated `spin_loop_hint`.
16* Relax ordering in the atomic `set_max_level` call.
17* Add thumbv4t-none-eabi to targets that don't support atomics
18* Allow levels to be iterated over.
19* Implement `Log` on some common wrapper types.
20* Improvements to test coverage.
21* Improvements to documentation.
22* Add key-value support to the `log!` macros.
23* Tighten `kv_unstable` internal dependencies so they don't bump past their current alpha.
24* Add a simple visit API to `kv_unstable`.
25* Support `NonZero*` integers as values in structured logging
26* Support static strings as keys in structured logging
27
28## [0.4.14] - 2021-01-27
29
30* Remove the `__private_api_log_lit` special case.
31* Fixed incorrect combination of `kv_unstable` and `std` features causing compile failures.
32* Remove unstable `Value::to_*` conversions that were incorrectly using `as`.
33* Rename unstable `Value::to_error` to `Value::to_borrowed_error`.
34
35## [0.4.13] - 2021-01-11
36
37* This is the same as `0.4.11`, except with a `kv_unstable_std` feature added to aid migrating current dependents to `0.4.14` (which was originally going to be `0.4.13` until it was decided to create a patch from `0.4.11` to minimize disruption).
38
39## [0.4.12] - 2020-12-24
40
41### New
42
43* Support platforms without atomics by racing instead of failing to compile
44* Implement `Log` for `Box<T: Log>`
45* Update `cfg-if` to `1.0`
46* Internal reworks of the structured logging API. Removed the `Fill` API
47and added `source::as_map` and `source::as_list` to easily serialize a `Source`
48as either a map of `{key: value, ..}` or as a list of `[(key, value), ..]`.
49
50### Fixed
51
52* Fixed deserialization of `LevelFilter` to use their `u64` index variants
53
54## [0.4.11] - 2020-07-09
55
56### New
57
58* Support coercing structured values into concrete types.
59* Reference the `win_dbg_logger` in the readme.
60
61### Fixed
62
63* Updates a few deprecated items used internally.
64* Fixed issues in docs and expands sections.
65* Show the correct build badge in the readme.
66* Fix up a possible inference breakage with structured value errors.
67* Respect formatting flags in structured value formatting.
68
69## [0.4.10] - 2019-12-16 (yanked)
70
71### Fixed
72
73* Fixed the `log!` macros so they work in expression context (this regressed in `0.4.9`, which has been yanked).
74
75## [0.4.9] - 2019-12-12 (yanked)
76
77### Minimum Supported Rust Version
78
79This release bumps the minimum compiler version to `1.31.0`. This was mainly needed for `cfg-if`,
80but between `1.16.0` and `1.31.0` there are a lot of language and library improvements we now
81take advantage of.
82
83### New
84
85* Unstable support for capturing key-value pairs in a record using the `log!` macros
86
87### Improved
88
89* Better documentation for max level filters.
90* Internal updates to line up with bumped MSRV
91
92## [0.4.8] - 2019-07-28
93
94### New
95
96* Support attempting to get `Record` fields as static strings.
97
98## [0.4.7] - 2019-07-06
99
100### New
101
102* Support for embedded environments with thread-unsafe initialization.
103* Initial unstable support for capturing structured data under the `kv_unstable`
104feature gate. This new API doesn't affect existing users and may change in future
105patches (so those changes may not appear in the changelog until it stabilizes).
106
107### Improved
108
109* Docs for using `log` with the 2018 edition.
110* Error messages for macros missing arguments.
111
112## [0.4.6] - 2018-10-27
113
114### Improved
115
116* Support 2018-style macro import for the `log_enabled!` macro.
117
118## [0.4.5] - 2018-09-03
119
120### Improved
121
122* Make `log`'s internal helper macros less likely to conflict with user-defined
123  macros.
124
125## [0.4.4] - 2018-08-17
126
127### Improved
128
129* Support 2018-style imports of the log macros.
130
131## [0.4.3] - 2018-06-29
132
133### Improved
134
135* More code generation improvements.
136
137## [0.4.2] - 2018-06-05
138
139### Improved
140
141* Log invocations now generate less code.
142
143### Fixed
144
145* Example Logger implementations now properly set the max log level.
146
147## [0.4.1] - 2017-12-30
148
149### Fixed
150
151* Some doc links were fixed.
152
153## [0.4.0] - 2017-12-24
154
155The changes in this release include cleanup of some obscure functionality and a more robust public
156API designed to support bridges to other logging systems, and provide more flexibility to new
157features in the future.
158
159### Compatibility
160
161Vast portions of the Rust ecosystem use the 0.3.x release series of log, and we don't want to force
162the community to go through the pain of upgrading every crate to 0.4.x at the exact same time. Along
163with 0.4.0, we've published a new 0.3.9 release which acts as a "shim" over 0.4.0. This will allow
164crates using either version to coexist without losing messages from one side or the other.
165
166There is one caveat - a log message generated by a crate using 0.4.x but consumed by a logging
167implementation using 0.3.x will not have a file name or module path. Applications affected by this
168can upgrade their logging implementations to one using 0.4.x to avoid losing this information. The
169other direction does not lose any information, fortunately!
170
171**TL;DR** Libraries should feel comfortable upgrading to 0.4.0 without treating that as a breaking
172change. Applications may need to update their logging implementation (e.g. env-logger) to a newer
173version using log 0.4.x to avoid losing module and file information.
174
175### New
176
177* The crate is now `no_std` by default.
178* `Level` and `LevelFilter` now implement `Serialize` and `Deserialize` when the `serde` feature is
179    enabled.
180* The `Record` and `Metadata` types can now be constructed by third-party code via a builder API.
181* The `logger` free function returns a reference to the logger implementation. This, along with the
182    ability to construct `Record`s, makes it possible to bridge from another logging framework to
183    this one without digging into the private internals of the crate. The standard `error!` `warn!`,
184    etc, macros now exclusively use the public API of the crate rather than "secret" internal APIs.
185* `Log::flush` has been added to allow crates to tell the logging implementation to ensure that all
186    "in flight" log events have been persisted. This can be used, for example, just before an
187    application exits to ensure that asynchronous log sinks finish their work.
188
189### Removed
190
191* The `shutdown` and `shutdown_raw` functions have been removed. Supporting shutdown significantly
192    complicated the implementation and imposed a performance cost on each logging operation.
193* The `log_panics` function and its associated `nightly` Cargo feature have been removed. Use the
194    [log-panics](https://crates.io/crates/log-panics) instead.
195
196### Changed
197
198* The `Log` prefix has been removed from type names. For example, `LogLevelFilter` is now
199    `LevelFilter`, and `LogRecord` is now `Record`.
200* The `MaxLogLevelFilter` object has been removed in favor of a `set_max_level` free function.
201* The `set_logger` free functions have been restructured. The logger is now directly passed to the
202    functions rather than a closure which returns the logger. `set_logger` now takes a `&'static
203    Log` and is usable in `no_std` contexts in place of the old `set_logger_raw`. `set_boxed_logger`
204    is a convenience function which takes a `Box<Log>` but otherwise acts like `set_logger`. It
205    requires the `std` feature.
206* The `file` and `module_path` values in `Record` no longer have the `'static` lifetime to support
207    integration with other logging frameworks that don't provide a `'static` lifetime for the
208    equivalent values.
209* The `file`, `line`, and `module_path` values in `Record` are now `Option`s to support integration
210    with other logging frameworks that don't provide those values.
211
212### In the Future
213
214* We're looking to add support for *structured* logging - the inclusion of extra key-value pairs of
215    information in a log event in addition to the normal string message. This should be able to be
216    added in a backwards compatible manner to the 0.4.x series when the design is worked out.
217
218## Older
219
220Look at the [release tags] for information about older releases.
221
222[Unreleased]: https://github.com/rust-lang-nursery/log/compare/0.4.17...HEAD
223[0.4.17]: https://github.com/rust-lang-nursery/log/compare/0.4.16...0.4.17
224[0.4.16]: https://github.com/rust-lang-nursery/log/compare/0.4.15...0.4.16
225[0.4.15]: https://github.com/rust-lang-nursery/log/compare/0.4.13...0.4.15
226[0.4.14]: https://github.com/rust-lang-nursery/log/compare/0.4.13...0.4.14
227[0.4.13]: https://github.com/rust-lang-nursery/log/compare/0.4.11...0.4.13
228[0.4.12]: https://github.com/rust-lang-nursery/log/compare/0.4.11...0.4.12
229[0.4.11]: https://github.com/rust-lang-nursery/log/compare/0.4.10...0.4.11
230[0.4.10]: https://github.com/rust-lang-nursery/log/compare/0.4.9...0.4.10
231[0.4.9]: https://github.com/rust-lang-nursery/log/compare/0.4.8...0.4.9
232[0.4.8]: https://github.com/rust-lang-nursery/log/compare/0.4.7...0.4.8
233[0.4.7]: https://github.com/rust-lang-nursery/log/compare/0.4.6...0.4.7
234[0.4.6]: https://github.com/rust-lang-nursery/log/compare/0.4.5...0.4.6
235[0.4.5]: https://github.com/rust-lang-nursery/log/compare/0.4.4...0.4.5
236[0.4.4]: https://github.com/rust-lang-nursery/log/compare/0.4.3...0.4.4
237[0.4.3]: https://github.com/rust-lang-nursery/log/compare/0.4.2...0.4.3
238[0.4.2]: https://github.com/rust-lang-nursery/log/compare/0.4.1...0.4.2
239[0.4.1]: https://github.com/rust-lang-nursery/log/compare/0.4.0...0.4.1
240[0.4.0]: https://github.com/rust-lang-nursery/log/compare/0.3.8...0.4.0
241[release tags]: https://github.com/rust-lang-nursery/log/releases
242