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!
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
printfs 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
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 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! 💡
- #503 Add alternate hint ('#'). Thanks to derekdreery!
1/n- Logger trait v2. Thanks to Dirbaio!
2/n- Remove code-size-costly optimizations. Thanks to Dirbaio!
impl Format for NonZero*
- #224 target_info: print ram region again
Internal Improvements 🧽
CI: Don't install MacOS dependency which is included by default
- #218 add first, user-triggered snapshot tests
- #221 Obtain git-version from macro, instead of custom build-script
cli::tests: rstest-ify tests for
CI: Run tests and clippy
- #40 Do linking test as part of
cargo test; cleanup
- #228 Remove unused file
- #18 Fix small typo
Version Update Notification 🆙
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!