Blog coding article

Knurling-rs changelog #23

Johann
Article

Knurling-rs changelog #23

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

    This is the 23th 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 🎉

    smoltcp adds logging with defmt!

    smoltcp, a standalone, event-driven TCP/IP stack that is designed for bare-metal, real-time systems, adopts defmt as an alternative logging system, next to the ubiquitous log crate. See smoltcp-rs/smoltcp#455.

    Thank you Dirbaio for spreading the word (and the code 😉)!

    msrv

    The previous effort also opened a discussion about defmts minimum supported rust version (MSRV). Our current policy is that defmt works on the latest stable rust release, which is ensured by our CI.

    It still might work on older versions, but this isn't ensured. At the time of this writing defmt successfully builds with rust 1.45.0 and newer.

    xtask

    Talking about our CI: We moved our test suite to use xtasks (read more about the idea here). This enables to run all the tests against various target platforms locally, just as it happens in the actual CI.

    See all available tests and options with: $ cargo xtask --help

    To run all tests invoke: $ cargo xtask test-all Finished dev [unoptimized + debuginfo] target(s) in 0.03s Running `target/debug/xtask test-all` 🧪 host 🏃 cargo check --workspace Compiling defmt v0.2.1 (/defmt) Finished dev [unoptimized + debuginfo] target(s) in 0.37s 🏃 cargo check --workspace --features unstable-test Compiling defmt v0.2.1 (/defmt) Compiling defmt-macros v0.2.0 (/defmt/macros) Finished dev [unoptimized + debuginfo] target(s) in 2.09s ...

    knurling-session-20q4

    Since we published our first knurling session to the public in march, there has been some activity going on in the repository knurling-rs/knurling-session-20q4 and it's issue tracker. One major change is that we added example code for the whole course, to support you if you are stuck!

    Have fun learning embedded rust, and feel free to pass by, in case you have any question or suggestions!

    Improvements 🦀

    defmt

    • #393 Implement CI tests as xtasks
    • #444 Link Application setup for visibility in README.md
    • #446 Add usage examples for Debug2Format, Display2Format
    • #447 Document MSRV. Thanks to Dirbaio for raising this question!

    probe-run

    • #181 Add copypasteable example how to run from repo to README.md

    knurling-session-20q4

    • #4 Add example code

    Fixes 🔨

    knurling-session-20q4

    • #5 Corrected circuit diagram. Thanks to kellda for reporting!

    Internal Improvements 🧽

    • #30 Simplify linker invocations + argument parsing + struct LinkerScript
    • #32 Minimize deps to decrease build time by up to 27%

    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!