This is the seventh changelog for Knurling-rs, our push to sustainably build better tooling for developing and debugging Rust software for embedded systems. Knurling-rs includes a suite of tools that make it easier to develop, log, debug, and test your embedded Rust libraries and applications!
Knurling-rs is supported by our sponsors on GitHub. If you're interested in seeing more projects like this, consider becoming a sponsor today!
Highlights
defmt-test is now on crates.io
defmt-test is a no_std test harness that helps you write unit tests that will run on your microcontroller.

The latest version of app-template, the easiest to get started with the knurling tools, comes with defmt-test-based test suite already set up.
If you are using a previous version of app-template check out defmt-test's README for upgrade instructions.
defmt v0.1.1 and probe-run v0.1.5 have been released
This new release of defmt, the resource efficient logging framework for embedded devices, ships a single fix. The bug that was fixed probably only affected a small number of new users but we considered that high priority so we quickly released a new patch version to fix the issue.
The new version of probe-run – a tool for running, testing and debugging Rust firmware that integrates into your Cargo workflow – brings some fixes and as well as some improvements.
More details about the fixes and improvements can be found below.
Improvements
probe-run
- #106
probe-runnow reports the program size
$ cargo run --bin hello
(HOST) INFO flashing program (7.64 KiB)
(HOST) INFO success!
───────────────────────────────────────────
0.000000 INFO Hello, world!
- #105
probe-run's--defmtflag is now optional.probe-runwill auto-detect the use of thedefmtcrate so the flag is no longer needed.
app-template
- #29
app-templatenow ships a test suite set up to use thedefmt-testtest harness
Fixes
probe-run
- #259 building the crates.io version of
probe-runno longer depends on thegitcommand line tool (fixed #256) - #264
probe-rundoesn't panic if log message is not UTF-8
defmt
- #259 building the crates.io version of
defmtno longer depends on thegitcommand line tool
app-template
- #28 instances
app-templateno longer includes funding information about knurling
Internal improvements
defmt
- #265 updated the 'how we deal with duplicated format strings' section of our implementation notes.
Did you know we store JSON in the ELF file produced by rustc? This JSON doesn't end up in you microcontroller Flash but our tooling relies on it to decode log messages sent by the microcontroller.
Sponsor this work
Knurling is mainly funded through GitHub sponsors. Sponsors get early access to the tools we are building and help us to support and grow the knurling tools and courses. Thank you to all of the people already sponsoring our work through the Knurling project!