Knurling-rs changelog #27

Published on 3 min read
Knurling icon
A tool set to develop embedded applications faster.
Details ❤️ Sponsor

    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 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 traits 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 🦀



    • #224 target_info: print ram region again

    Internal Improvements 🧽


    • #510 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
    • #225 cli::tests: rstest-ify tests for fn extract_git_hash
    • #226 CI: Run tests and clippy
    • #40 Do linking test as part of cargo test; cleanup

    Fixes 🔨


    • #228 Remove unused file


    • #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!