This is the 27th 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 🎉
How to shrink defmt? 🐁
So far the impact of defmt
on the code size of your firmware has not been great and has been subject to discussion (defmt#456). Currently defmt
might increase your code size by a factor of 3.5 to 10 compared to using plain printf
s from C. 🤯
Dirbaio proposed various changes to improve this situation and make defmt
a better fit for code-size critical setups. Their "RFC: Traits and wire format 2.0" tackles this goal A) through simplifying the formatting process by changing how defmt
encodes and compresses the wire data and B) through overhauling the trait
s Logger
and Format
.
They started their work in the already-landed pull requests defmt#505 & defmt#507 and are continuing it in defmt#508. 🛬
We are very much looking forward to the further development and to see the benchmarks after this effort is finished successfully! 📉
A new release is dawning on the horizon 🌅
The recently released defmt 0.2.3
marks the last planned patch release of defmt
before defmt 0.3
. Over the last weeks we discussed various breaking changes in the issue trackers and internally, but didn't pursue them so far, because we wanted to avoid bumping the minor version. After the last release, we are now ready to focus on these breaking changes and land them for the next minor version. 💪
A big part of the upcoming enhancements will be the effort from dirbaio. Some other interesting ones will likely be around the question of log-level configuration, i.e. replacing the current cargo-feature system (defmt#255) and also having more fine-grained control over which logs to enable (defmt#459). See our work-in-progress list for the 0.3 milesteone here.
If you have an idea to improve defmt
, may it be crazy or not, now is the time to raise them! 💡
Improvements 🦀
defmt
- #503 Add alternate hint ('#'). Thanks to derekdreery!
- #505
1/n
- Logger trait v2. Thanks to Dirbaio! - #507
2/n
- Remove code-size-costly optimizations. Thanks to Dirbaio! - #509
impl Format for NonZero*
probe-run
- #224 target_info: print ram region again
Internal Improvements 🧽
defmt
- #510
CI
: Don't install MacOS dependency which is included by default
probe-run
- #218 add first, user-triggered snapshot tests
- #221 Obtain git-version from macro, instead of custom build-script
- #225
cli::tests
: rstest-ify tests forfn extract_git_hash
- #226
CI
: Run tests and clippy
flip-link
- #40 Do linking test as part of
cargo test
; cleanup
Fixes 🔨
probe-run
- #228 Remove unused file
utils.rs
knurling-session-20q4
- #18 Fix small typo
Version Update Notification 🆙
defmt-parser v0.2.2
defmt-decoder v0.2.2
defmt-print v0.2.2
defmt-macros v0.2.3
defmt 0.2.3
probe-run v0.2.4
Sponsor this work
Knurling-rs 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!