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 defmt
s 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 xtask
s (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
xtask
s - #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
Internal Improvements 🧽
flip-link
- #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!