All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
We have several packages which live in this repository. Changes are tracked separately.
- defmt
- defmt-macros
- defmt-print
- defmt-decoder
- defmt-parser
- defmt-rtt
- defmt-itm
- defmt-semihosting
- panic-probe
- defmt-test
- defmt-test-macros
- defmt-json-schema
- defmt-elf2table
- defmt-logger
A highly efficient logging framework that targets resource-constrained devices, like microcontrollers
defmt-v0.3.10 (2024-11-29)
- #902 Minor change to Format impl for
core::panic::PanicInfo
, eliding a lifetime specifier to satisfy Clippy 1.83. - #899 Pin the defmt-macro crate to avoid incompatible versions being used together
defmt-v0.3.9 (2024-11-27)
- #889 Add script for book hosting
- #887 Fix interning example in the book
- #884 Upgrade dependencies: notify is now at v7, thiserror is now at v2
- #883 Mark decoder and parser not as unstable anymore
- #880 Merge function calls emitted by the macro to save space.
- #874
defmt
: Fix doc test - #872
defmt
: Addexpect!
as alias forunwrap!
for discoverability - #871 Set MSRV to Rust 1.76
- #869
macros
: Add missing type hints - #865
defmt
: Replace proc-macro-error with proc-macro-error2 - #858
defmt
: Implement "passthrough" trait impls for *2Format wrappers - #857 Add an octal display hint (
:o
) - #856
defmt
: Add aFormat
impl forPanicInfo
and related types. - #852
CI
: Update mdbook to v0.4.40 - #848
decoder
: add optional one-line format - #847
decoder
: Fix log format width specifier not working as expected - #845
decoder
: fix println!() records being printed with formatting - #843
defmt
: Sort IDs of log msgs by severity to allow runtime filtering by severity - #822
CI
: Runcargo semver-checks
on every PR
defmt-v0.3.8 (2024-05-17)
- #840
defmt
: Support pre-1.77 - #839
CI
: Fix tests - #838
defmt
: Switch to Cargo instruction compatible with older versions of Cargo
defmt-v0.3.7 (2024-05-13 (yanked))
- #831
CI
: Fix CI - [#830]
book
: Add section about feature-gated derive Format - #821 Clean up
- #813 doc: add note for the alloc feature flag
- #812
defmt
: Add a feature to stop linking a default panic handler - #811
book
: Add some examples for byte slice/array hints as well - #805
defmt
: Drop ip_in_core feature and re-enable nightly snapshot tests
defmt-v0.3.6 (2024-02-05)
- #804
CI
: Remove mdbook strategy - #803
CI
: Disable nightly qemu-snapshot tests - #789
defmt
: Add support for new time-related display hints
defmt-v0.3.5 (2023-06-19)
- #758
defmt-print
: Tidy up - #757
defmt-print
: Allow reading from a tcp port - #756
CI
: Switch from bors to merge queue - #753
demft
AddFormat
impls forcore::ptr::NonNull
andfn(Args...) -> Ret
(up to 12 arguments)
defmt-v0.3.4 (2023-04-05)
- #747 Bump wire version
defmt-v0.3.3 (2023-03-29 (yanked))
- #744
defmt-parser
: Clean and simplify - #743
defmt-parser
: Simplify tests withrstest
- #740 Snapshot tests for
core::net
- #739
xtask
: Clean up - #737
panic-probe
: Addhard_fault()
for use indefmt::panic_handler
- #733
defmt
: Add formatting forcore::net
with theip_in_core
feature - #603
defmt
: Raw pointers now print as0x1234
instead of1234
- #536
defmt-parser
: Switch to using an enum for errors, and add some help text pointing you to the defmt docs if you use the wrong type specifier in a format string.
defmt-v0.3.2 (2022-05-31)
- [#669] Refine docs for
--json
flag
defmt-v0.3.1 (2022-03-10)
- #662
#[derive(Format)]
now accepts attribute fields to format fields using theDebug2Format
adapter instead of aFormat
implementation. - #661 Add tests for Cell types
- #656 Implement
defmt::Format
forCell
andRefCell
- #630 Add test instructions to README.md
- #659 mark extern::acquire() and extern::release() as unsafe. this is not a breaking change; this is an internal API
- #640 use crate critical-section in defmt-rtt
- #634 update ELF parsing dependencies
- #633 make RTT buffer size configurable
- #626 Make errror message more meaningful in case of version-mismatch
defmt-v0.3.0 (2021-11-09)
- #618 Support #[ignore] attribute in defmt_test
- #621 Readme Diagram: Replace duplicate defmt-itm with defmt-rtt
- #617 Add display hint to output
u64
as ISO8601 time - #620 Tidy up: remove unused code and dependencies
- #619 Update all crates to rust edition 2021! 🎉
- #610
defmt-print
: Log if malformed frame gets skipped - #547 Migration guide
v0.2.x
tov0.3.0
- #604 defmt-test:
#[cfg(test)]
the#[defmt_test::tests]
module - #616 Update user guide part of the book
- #615 Document how to deal with backward compatibility breakage
- #614 Bugfix: decoder breaks with pipe symbol
- #605 Properly handle the
off
pseudo-level in presence of nested logging directives - #611 Fix
cargo doc
-warnings - #608
decoder
: Fix thatdefmt::println!
shows leading space when timestamps are disabled - #601 Move crate
defmt
todefmt/
- #600 Run snapshot & backcompat tests in dev mode only
- #519 Target-side
env_logger
-like env filter - #592 xtask: add backward compability test
- #598
defmt-print
: Recover from decoding-errors - #569 Add defmt
println!
macro - #580 Structure
defmt::export
- #594 panic-probe: use UDF instruction on nested panics
- #591 Remove timestamps from snapshot test
- #585 Add xtask option to run a single snapshot test by name
- #589 Implement
Format
for arrays of any length - #587 Tweak inline attributes to remove machine code duplication
- #574 Refactor rtt [1/2]
- #584 Remove outdated doc "you may only call write! once"
- #581 Add impl for
alloc::Layout
- #579 defmt-rtt: fix check for blocking RTT
- #577 Fix typo in
cfg
of encoding-feature-compile_error!
- #578
qemu
: Allow dead code - #550 Added
defmt::flush()
- #570 Support referring to
Self
in bitflags constants - #568 Encoding docs.
- #564 Make order of bitflags values deterministic
- #561 Remove unused cortex-m-rt in panic-probe a=Dirbaio
- #562 Remove call to fill in user survey from
README
- #560 Update cortex-m-rt crate from
0.6
to0.7
- #557 Add impl for TryFromSliceError
- #556 Add impl for TryFromIntError
- #551 Display git version & date to introduction section
- #540 Separate "crate version" from "wire format version
- #545 Revert "
build.rs
: Obtain version from macro; simplify" - #539 Add optional rzCOBS encoding+framing
- #518
build.rs
: Obtain version from macro; simplify - #543
CI
: Temporarily drop backward-compatibility check - #542
snapshot-tests
: Test alternate hint for bitfields - #538 Fix wrong bit count in comment.
- #537
snapshot-tests
: Delete:?
hint without impact - #531 refactor the
macros
crate - #534 Attribute test progress message to the test in question;
- #535 Don't print leading space when timestamp is absent
- #529 Refactor user-guide of
book
- #528 Support bitflags
- #533 Adds add for user survey into readme.
- #527
book
: Add logo and support text to introduction - #526
decoder
: Simplify tests - #359 Implement precedence of inner display hint
- #523 Minimize dependencies
- #508 [5/n] Format trait v2
- #522 Replace
µs
hint withus
- #521 [3/n] Remove u24
- #516
xtask
: Only install additional targets for tests that require them - #512 Add overwrite option for xtask cross results.
- #514 extend raw pointer implementation to include !Format types
- #513 book/duplicates.md: discriminator -> disambiguator
- #507 [2/n] - Remove code-size-costly optimizations
- #505 [1/n] - Logger trait v2.
defmt-v0.2.3 (2021-06-17)
- #499 Illustrate structure of the defmt crates
- #503 Add alternate hint ('#')
- #509
impl Format for NonZero*
- #488 Structure
impl Format
s into multiple files - #496 Bump build-dep
semver
to1.0
- #489 Structure lib
- #500 book: fix leftover old formatting syntax; typos
- #510
CI
: Don't install MacOS dependency which is included by default
- #497
macros
: match unused vars if logging is disabled
defmt-v0.2.2 (2021-05-20)
- #446 Add usage examples for
Debug2Format
,Display2Format
- #464
impl<T> Format for {*const, *mut} T where T: Format + ?Sized
- #472
impl Format for
the core::{iter, ops, slice} structs - #473
impl Format for
all theCow
s - #478 add
dbg!
macro
- #477 Disable logging calls via conditional compilation when all defmt features are disabled
defmt-v0.2.1 (2021-03-08)
- #403 Add knurling logo to API docs
- #413 Fix docs-rs build, by disabling feature "unstable-test"
- #427 Drop outdated note about
defmt v0.2.0
from book
defmt-v0.2.0 (2021-02-19)
- #284 Implement support for
i128
andu128
types - #291 Allows using
defmt
on x86 platforms by making the test suite use an internal Cargo feature - #293 Make
defmt
attributes forward input attributes - #294 Permits
use
items inside#[defmt_test::tests]
modules - #296 Allows skipping the
defmt
version check in order to make development easier - #302
derive(Format)
now supports more than 256 variants - #304 impl
Format
forchar
s - #313 Add display hints
- #323 Merge
Uxx(u64)
(Ixx(i64)
) andU128(u128)
(u128(i128)
) data variants - #327
impl<T> Format for PhantomData<T>
- #329 Document safety of implementation detail functions
- #335 Add the
defmt-itm
crate - #338 Add
defmt-logger
anddefmt-print
crates - #343 Customizable timestamps
- #347 Document the grammar of
defmt
s current format parameter syntax - #351 Allow tools to distinguish user-controlled format strings from generated ones
- #354 Add
f64
support - #376 Make
defmt-logger
more configurable, removeprobe-run
strings - #377
defmt-test
: support returningResult
from tests - #382
impl Format for Infallible
- #391
impl Format for core::time::Duration
- #297 Improves the output formatting and includes a progress indicator
- #299 Test embedded test runner (
defmt-test
) as part of our CI setup - #300
#[derive]
now uses built-in primitive formatting for primitive references - #303 Employ the help of [bors]
- #305
Formatter
is now passed by value, i.e. consumed during formatting - #308 compile-fail test new
Formatter
move semantics - #312
str
fields in structs are now treated as a native type by the encoder instead of going through theFormat
trait - #325 Update our UI tests to work with the latest stable release
- #331 Add more compile-fail tests
- #332 Improve
Format
trait docs - #333 Hide
Formatter
'sinner
field - #334 Fix dead link in parser docs
- #337 Improve diagnostics on double
write!
- #339 Make leb64 encoding fully safe (while at the same time reducing its code footprint)
- #340 Stream
core::fmt
adapters - #345 Reduce code size by avoiding 64-bit arithmetic in LEB encoding
- #350
panic-probe
now usesdefmt
sDisplay2Format
to log panic messages. In consequence, panic messages won't get truncated anymore. - #355 Clarify the docs on
Write::write
- #352 Do not display full version with
--help
. Thanks to [Javier-varez]! - #354 Support
f64
floating point numbers. - #355 Clarify docs on
Write::write
. - #363 Improve test coverage on basic
defmt
usage onstd
rust - #364 Split firmware code into separate workspace
- #368
defmt-itm
: Raise compile error onarmv6m
- #369 Move
bors.toml
to.github/
- #371 Link to git version of
defmt
book - #372 Update
Printers
section indefmt
book - #373 Improve information in
Cargo.toml
- #379 Make link to
defmt
book clickable - #380 Merge crates
elf2table
andlogger
intodecoder
- #383
defmt-test
: Modify attributes in place and handle#[cfg]
- #384 pin unstable path dependencies
- #385 defmt_decoder: Skip allocation of datastructure for raw symbols of the table entries in
fn get_locations
- #386, #392 Refactor decoder
- rename
mod logger
tolog
- make
fn parse_*
,fn get_locations
,fn decode
methods ofstruct Table
- various simplifications and restructuring of internal code
- rename
- #387 CI: bump timeout to 20 minutes
- #389 defmt_decoder: Bump deps
object
andgimli
- #301 Fix the nightly builds after a
linked_list_allocator
feature change - #310, #311 remove the runtime check (and matching tests) if the
write!
macro was called multiple times as this can no longer happen sincewrite!
now consumes theFormatter
due to #305. - #321 ASCII hint (
:a
) is now respected when used together with theFormat
trait (=?
and=[?]
). - #342 Fix a data corruption issue when using
bool
s inwrite!
- #357 Fix issue preventing
defmt
from compiling on MacOS.
defmt-v0.1.3 (2020-11-30)
- #290 fixed cross compilation to ARMv6-M and other targets that have no CAS (Compare-and-Swap) primitives when the "alloc" feature is enabled
defmt-v0.1.2 (2020-11-26)
- #263 #276 add and document
write!
macro - #273 #280 add and document
unwrap!
macro - #266 add
panic!
-like andassert!
-like macros which will log the panic message usingdefmt
and then callcore::panic!
(by default) - #267, #281 add
Debug2Format
andDisplay2Format
adapters - #279 started adding notes about feature availability (e.g. "defmt 0.1.2 and up")
- #257 code size optimizations
- #265 updated the 'how we deal with duplicated format strings' section of our implementation notes
- #264
probe-run
doesn't panic if log message is not UTF-8 - #269 fixes compiler error that was thrown when using
defmt::panic
within e.g. a match expression - #272 braces in format args passed to the new
defmt::panic!
anddefmt::assert!
macros do not cause unexpected errors anymore
defmt-v0.1.1 (2020-11-16)
- #259 crates.io version of
defmt
crates no longer requiregit
to be built
defmt-v0.1.0 (2020-11-11)
Initial release
Macros for defmt
defmt-macros-v0.4.0 (2024-11-29)
- #899 Just a major version bump to stop it being used by older defmt versions.
defmt-macros-v0.3.10 (2024-11-27)
defmt-macros-v0.3.9 (2024-05-14)
- [#835]
macros
: Fix somedefmt
crate name usage
defmt-macros-v0.3.8 (2024-05-13)
defmt-macros-v0.3.7 (2024-03-05)
defmt-macros-v0.3.6 (2023-08-01)
defmt-macros-v0.3.5 (2023-05-05)
- #750 Add support for decoding wire format version 3
defmt-macros-v0.3.4 (2023-03-29)
defmt-macros-v0.3.3 (2022-10-07)
defmt-macros-v0.3.2 (2022-03-10)
defmt-macros-v0.3.1 (2021-11-26)
defmt-macros-v0.3.0 (2021-11-26)
defmt-macros-v0.2.3 (2021-06-21)
defmt-macros-v0.2.2 (2021-06-01)
defmt-macros-v0.2.1 (2021-05-21)
defmt-macros-v0.2.0 (2021-02-19)
defmt-macros-v0.1.1 (2020-11-26)
defmt-macros-v0.1.0 (2020-11-30)
Initial release
A tool that decodes defmt logs and prints them to the console
defmt-print-v0.3.13 (2024-11-27)
- #807 Add
watch_elf
flag to allow ELF file reload without restartingdefmt-print
- #855
defmt-print
: Now uses tokio to make tcp and stdin reads async (in preparation for awatch elf
flag)
defmt-print-v0.3.12 (2024-05-13)
defmt-print-v0.3.11 (2024-03-05)
defmt-print-v0.3.10 (2023-10-04)
defmt-print-v0.3.9 (2023-08-01)
defmt-print-v0.3.8 (2023-08-01)
defmt-print-v0.3.7 (2023-05-05)
- #750 Add support for decoding wire format version 3
defmt-print-v0.3.6 (2023-04-05)
defmt-print-v0.3.5 (2023-03-29)
defmt-print-v0.3.4 (2023-01-24)
- #719
defmt-print
: Fix panic
defmt-print-v0.3.3 (2022-10-07)
defmt-print-v0.3.2 (2022-03-10)
defmt-print-v0.3.0 (2021-11-10)
defmt-print-v0.2.2 (2021-06-21)
defmt-print-v0.2.1 (2021-05-21)
defmt-print-v0.2.0 (2021-02-19)
Initial release
Decodes defmt log frames
- #902 Minor change to
impl StreamDecoder
forRaw
andRzcobs
, eliding a lifetime specifier to satisfy Clippy 1.83. No observable change.
defmt-decoder-v0.4.0 (2024-11-27)
defmt-decoder-v0.3.11 (2024-05-13)
defmt-decoder-v0.3.10 (2024-03-05)
defmt-decoder-v0.3.9 (2023-10-04)
defmt-decoder-v0.3.8 (2023-08-01)
defmt-decoder-v0.3.7 (2023-05-05)
defmt-decoder-v0.3.6 (2023-04-05)
defmt-decoder-v0.3.5 (2023-03-29)
defmt-decoder-v0.3.4 (2023-01-24)
defmt-decoder-v0.3.3 (2022-08-09)
- #681 Make use of i/o locking being static since rust
1.61
.
defmt-decoder-v0.3.2 (2022-03-10)
defmt-decoder-v0.3.1 (2021-11-26)
defmt-decoder-v0.3.0 (2021-11-10)
defmt-decoder-v0.2.2 (2021-06-21)
defmt-decoder-v0.2.1 (2021-05-21)
defmt-decoder-v0.2.0 (2021-02-19)
defmt-decoder-v0.1.4 (2020-11-26)
defmt-decoder-v0.1.3 (2020-11-30)
defmt-decoder-v0.1.0 (2020-11-30)
Initial release
Parsing library for defmt format strings
defmt-parser-v0.4.1 (2024-11-27)
- #897 Added its own README
defmt-parser-v0.4.0 (2024-11-27)
defmt-parser-v0.3.4 (2024-03-05)
defmt-parser-v0.3.3 (2023-05-05)
defmt-parser-v0.3.2 (2023-03-29)
defmt-parser-v0.3.1 (2022-03-10)
defmt-parser-v0.3.0 (2021-11-10)
defmt-parser-v0.2.2 (2021-06-21)
defmt-parser-v0.2.1 (2021-05-21)
defmt-parser-v0.2.0 (2021-02-19)
defmt-parser-v0.1.0 (2020-11-30)
Initial release
Transmit defmt log messages over the RTT (Real-Time Transfer) protocol
- #902 Use
core::ptr::addr_of_mut!
instead of&mut
on mutable statics. No observable change. - #901
defmt-rtt
: Update to critical-section 1.2
defmt-rtt-v0.4.1 (2024-05-13)
defmt-rtt-v0.4.0 (2022-10-07)
- #701
defmt-rtt
: Pre-relase cleanup - #695
defmt-rtt
: Refactor rtt [3/2] - #689
defmt-rtt
: Update to critical-section 1.0 - #683
defmt-rtt
: Make sure the whole RTT structure is in RAM
defmt-rtt-v0.3.2 (2022-03-10)
defmt-rtt-v0.3.1 (2021-11-26)
defmt-rtt-v0.3.0 (2021-11-26)
defmt-rtt-v0.2.0 (2021-02-20)
defmt-rtt-v0.1.0 (2020-11-30)
Initial release
Transmit defmt log messages over the ITM (Instrumentation Trace Macrocell) stimulus port
- #902 Switch to using critical-section, and copy implementation over from defmt-rtt.
defmt-itm-v0.3.0 (2021-11-26)
defmt-itm-v0.2.0 (2021-02-20)
Initial release
Transmit defmt log messages over the semihosting (Instrumentation Trace Macrocell) stimulus port
defmt-semihosting-v0.1.0 (2024-11-27)
Initial release
Panic handler that exits
probe-run
with an error code
panic-probe-v0.3.2 (2024-05-13)
panic-probe-v0.3.1 (2023-03-29)
panic-probe-v0.3.0 (2021-11-26)
panic-probe-v0.2.1 (2021-09-17)
panic-probe-v0.2.0 (2021-02-20)
panic-probe-v0.1.0 (2020-11-30)
Initial release
A test harness for embedded devices
defmt-test-v0.3.2 (2024-03-05)
defmt-test-v0.3.1 (2023-10-11)
defmt-test-v0.3.0 (2021-11-26)
defmt-test-v0.2.3 (2021-05-21)
defmt-test-v0.2.2 (2021-04-29)
defmt-test-v0.2.1 (2021-02-26)
defmt-test-v0.2.0 (2021-02-20)
defmt-test-v0.1.1 (2020-12-03)
defmt-test-v0.1.0 (2020-11-30)
Initial release
Macros for defmt-test
defmt-test-macros-v0.3.1 (2024-03-05)
defmt-test-macros-v0.3.0 (2021-11-26)
defmt-test-macros-v0.2.1 (2021-05-21)
defmt-test-macros-v0.2.0 (2021-02-26)
defmt-test-macros-v0.1.1 (2020-11-30)
defmt-test-macros-v0.1.0 (2020-11-30)
Initial release
JSON schema for defmt
defmt-json-schema-v0.1.0 (2022-03-10)
Initial release
Reads ELF metadata and builds a defmt interner table
Now defunct - lives in defmt-decoder
defmt-elf2table-v0.1.0 (2020-11-30)
Initial release
Now defunct - lives in defmt-decoder
defmt-logger-v0.1.0 (2021-01-15)
Initial release