Knurling-rs changelog #4

This is the fourth 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!

Organizational

  • We have surpassed the halfway point towards our sponsorship income goal of $5000 🎉 This means we can now allot about 9 days of Ferrous Engineer Time per month to build knurling tools and knurling-sessions.
  • We've re-dedicated the knurling meta repository as the place for (non-immediately-actionable) discussions about future tools (gathering requirements, gauging interest, etc.). Originally, the meta repository contained an overview about what knurling is about and what's coming next. However, this was hard to find and browse, so we created the knurling website instead that was launched last week.
  • The knurling website is now much more mobile-friendly.

New knurling-sessions content

Knurling Sessions are quarterly embedded projects that explore specific projects using generally available hardware, building full systems and components using microcontrollers, sensors, and actuators. Every week, we're releasing a new lesson to advance the project. Currently, we're building a CO2 measuring device step by step!

This week we're learning how to:

Sponsors can find the lesson contents at the CO2 project book.

Remember: you can find the access credentials to all knurling-sessions materials in our sponsors team announcements.

Improvements

  • #78 adds a bug report template for probe-run to make reporting and resolving issues a smoother process ✨

New features

  • #211 defmt can now print arrays of Formats. Thank you @Dirbaio!

Fixes

  • #212 the defmt docs have been updated to reflect the changes of the last weeks in slice formatting, format character limitations and standard integer types.
  • #215, #216 fix errors when linking applications using defmt with GNU LD. #215 prevents defmt's elf2table from trying to parse a trailing .defmt section as JSON included when linking with GNU LD. #216 explicitly sets the start address of the .defmt section to 0, since GNU LD puts it at some arbitrary address otherwise.

Internal improvements

We're still working towards the crates.io release of defmt. The scope of things to do before the release has grown by three issues since the last changelog, two of which have been fixed now. We've also tackled some older issues to reach this milestone:

  • #191, #207, #81 clean up defmt for crates.io and fix two oversights made during this change. If you've hand trouble installing probe-run in the past week, this is probably why.
  • #218 Hides all of defmts Formatter methods now.
  • #211, #215, #216 have already been mentioned in previous sections, but are also a contribution towards the crates.io release.

  • #12 fixes a hickup in flip-link's nightlies.

  • #83 includes commit hashes in the output of probe-run --version. This helps identify git installs of probe-run.
  • #84 updates the defmt-decoder and defmt-elf2table version used by probe-run to one that includes the aforementioned changes and enables their new unstable feature to access them.

Sponsor this work

Knurling 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!