<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Ferrous Systems Blog</title>
  <subtitle>All about Rust Technology</subtitle>
  <id>https://ferrous-systems.com/blog</id>
  <link href="https://ferrous-systems.com/blog"/>
  <link href="https://ferrous-systems.com/blog/feed.xml" rel="self"/>
  <updated>2026-03-31T22:00:00+00:00</updated>
  <entry>
    <title>Callgraph analysis</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/callgraph-analysis/"/>
    <id>https://ferrous-systems.com/blog/callgraph-analysis/</id>
    <published>2026-03-31T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jynn</name>
    </author>
    <summary type="html">&lt;h1 id="callgraph-analysis"&gt;Callgraph analysis&lt;/h1&gt;

&lt;p&gt;Say you have a region of a program where users &lt;a href="https://faultlore.com/blah/linear-rust/#:~:text=Rust%20users%20Want%20Static%20Verification"&gt;Want Static Verification&lt;/a&gt; that some function is never called. For simplicity, let's say you want to make sure you never call &lt;code&gt;panic!&lt;/code&gt; so your program doesn't crash.&lt;/p&gt;

&lt;p&gt;In this post we talk...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Accessing Hardware in Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/hardware-access-rust/"/>
    <id>https://ferrous-systems.com/blog/hardware-access-rust/</id>
    <published>2026-03-17T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;

&lt;p&gt;At Ferrous Systems, we write a lot of Rust code that runs on bare-metal - the code that is first to run when the processor comes out of reset, and code that has no higher power to call upon for assistance. Some of this we do &lt;a href="https://github.com/ferrous-systems/rust-training/tree/main/example-code"&gt;as example code...&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene for Air-Gapped Environments</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/air-gapped-environments/"/>
    <id>https://ferrous-systems.com/blog/air-gapped-environments/</id>
    <published>2026-03-09T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Brigitte</name>
    </author>
    <summary type="html">&lt;h2 id="ferrocene-and-vetted-crates-going-offline"&gt;Ferrocene and vetted crates going offline&lt;/h2&gt;

&lt;p&gt;See it in action at embedded world, Hall 4, Booth 4-402&lt;/p&gt;

&lt;p&gt;We at &lt;a href="https://www.ferrous-systems.com/"&gt;Ferrous Systems&lt;/a&gt; are excited to share insights into a new feature in development, designed to enable &lt;a href="https://ferrocene.dev/"&gt;Ferrocene&lt;/a&gt; and Rust crates in high-risk environments...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 26.02.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-26-02-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-26-02-0/</id>
    <published>2026-02-14T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Ana</name>
    </author>
    <summary type="html">&lt;p&gt;Today we're announcing the release of Ferrocene 26.02.0, the latest update to our qualified Rust toolchain. 
This release arrives with an additional certification, ISO 26262 (ASIL B), for the certified subset of the Rust core library (&lt;code&gt;core&lt;/code&gt;)!&lt;/p&gt;

&lt;p&gt;Now,...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrous Systems Achieves IEC 61508 (SIL 2) Certification for Rust Core Library Subset</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-libcore-news-release/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-libcore-news-release/</id>
    <published>2025-12-02T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;strong&gt;BERLIN – December 3, 2025&lt;/strong&gt; – &lt;a href="https://ferrous-systems.com"&gt;Ferrous Systems&lt;/a&gt;, the leader in Rust-based software solutions for embedded and safety-critical systems, has achieved TÜV SÜD certification for a subset of the Rust core library (core) according to IEC 61508 (SIL 2). The core...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 25.11.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-25-11-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-25-11-0/</id>
    <published>2025-12-02T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Ana</name>
    </author>
    <summary type="html">&lt;p&gt;Today we're announcing the release of Ferrocene 25.11.0, the latest update to our qualified Rust toolchain. 
This release is particularly special to us as it arrives with our first IEC 61508 (SIL 2) certified subset of the Rust core library (&lt;code&gt;core&lt;/code&gt;)...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 25.08.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-25-08-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-25-08-0/</id>
    <published>2025-09-30T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Ana</name>
    </author>
    <summary type="html">&lt;p&gt;Today we're announcing the release of Ferrocene 25.08.0, the latest update to our qualified Rust toolchain. 
This release includes a compiler version bump, and a preview of our &lt;code&gt;core&lt;/code&gt; certification.&lt;/p&gt;

&lt;h2 id="what-is-ferrocene"&gt;What is Ferrocene?&lt;/h2&gt;

&lt;p&gt;Developed as an open-source, downstream...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Rust: Who, What and Why for ESA SW PA Workshop</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-who-what-why/"/>
    <id>https://ferrous-systems.com/blog/rust-who-what-why/</id>
    <published>2025-09-18T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;p&gt;We are attending the European Space Agency's bi-ennial &lt;a href="https://learninghub.esa.int/software-product-assurance-conference-2025"&gt;Software Product
Assurance Conference&lt;/a&gt; in September, at the &lt;a href="https://www.esa.int/About_Us/ESTEC/European_Space_Research_and_Technology_Centre_ESTEC2"&gt;European Space Research and
Technology Centre&lt;/a&gt; in Noordwijk, The Netherlands. At the event, we have been
invited to present a 4-hour workshop...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrous Systems Joins SOAFEE Initiative</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/soafee/"/>
    <id>https://ferrous-systems.com/blog/soafee/</id>
    <published>2025-07-30T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;strong&gt;BERLIN – July 31, 2025&lt;/strong&gt; – &lt;a href="https://ferrous-systems.com/"&gt;Ferrous Systems&lt;/a&gt;, the leading provider of Rust-based software solutions for embedded and safety-critical systems, today announced it has joined the Scalable Open Architecture for Embedded Edge (SOAFEE) initiative. SOAFEE is...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 25.05.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-25-05-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-25-05-0/</id>
    <published>2025-06-29T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Ana</name>
    </author>
    <summary type="html">&lt;p&gt;Today we're announcing the release of Ferrocene 25.05.0, the latest update to our qualified Rust toolchain.
This version includes improvements from upstream Rust and two new qualified targets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ferrocene.dev"&gt;Ferrocene&lt;/a&gt; is the first Rust compiler toolchain qualified...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Where to Meet Us in 2025: Upcoming Events &amp; Conferences</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/where-to-meet-us-2025/"/>
    <id>https://ferrous-systems.com/blog/where-to-meet-us-2025/</id>
    <published>2025-04-27T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;p&gt;Ever wondered where you can meet our team? We’ve put together a list of events we’ll be attending this year, and we're speaking at most of them! If you’re planning to be at any of these, don’t hesitate to &lt;a href="https://ferrous-systems.com/contact/"&gt;reach out&lt;/a&gt; - we’d love to connect!&lt;/p&gt;

&lt;h2 id="upcoming-events"&gt;Upcoming...&lt;/h2&gt;</summary>
  </entry>
  <entry>
    <title>defmt is now 1.0</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/defmt-1-0-released/"/>
    <id>https://ferrous-systems.com/blog/defmt-1-0-released/</id>
    <published>2025-04-08T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;p&gt;A few months ago, we announced our intent to stablize a &lt;a href="/blog/defmt-1-0/"&gt;1.0 of defmt&lt;/a&gt;. Over the last few months
we've been collaborating with users and community members to work through the last remaining pieces, and now it's finally time.&lt;/p&gt;

&lt;p&gt;As of today, &lt;a href="https://crates.io/crates/defmt"&gt;defmt&lt;/a&gt; is now...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>SEGGER J-Trace and Ferrocene</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/segger-jtrace-ferrocene/"/>
    <id>https://ferrous-systems.com/blog/segger-jtrace-ferrocene/</id>
    <published>2025-03-10T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;h2 id="ferrous-systems-demonstrates-seggers-j-trace-system-for-analyzing-rust-applications-compiled-with-qualified-ferrocene-toolchain"&gt;Ferrous Systems Demonstrates SEGGER’s J-Trace System for Analyzing Rust Applications Compiled with Qualified Ferrocene Toolchain&lt;/h2&gt;

&lt;p&gt;See it in action at embedded world, Hall 4, Booth 4-402&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;embedded world 2025 – Nuremberg, Germany – March 11, 2025&lt;/strong&gt; - &lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Rust on Cortex-R52</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-cortex-r52/"/>
    <id>https://ferrous-systems.com/blog/rust-cortex-r52/</id>
    <published>2025-03-10T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;h2 id="ferrous-systems-first-to-run-rust-on-cortex-r52-under-open-source-license"&gt;Ferrous Systems First to Run Rust on Cortex-R52 Under Open Source License&lt;/h2&gt;

&lt;p&gt;See it in action at embedded world, Hall 4, Booth 4-402&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;embedded world 2025 – Nuremberg, Germany – March 11, 2025&lt;/strong&gt; – &lt;a href="https://www.ferrous-systems.com/"&gt;Ferrous
Systems&lt;/a&gt;, the leader in Rust solutions for
safety...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>How we built our 2025 Embedded World Demos</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/embedded-world-2025-demos/"/>
    <id>https://ferrous-systems.com/blog/embedded-world-2025-demos/</id>
    <published>2025-03-10T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;h2 id="background"&gt;Background&lt;/h2&gt;

&lt;p&gt;At Embedded World 2025, we are presenting two demos based around Rust on Arm.&lt;/p&gt;

&lt;p&gt;The first is our Rust for Microcontrollers demonstration, showing the power of
&lt;a href="https://www.segger.com"&gt;SEGGER&lt;/a&gt;'s &lt;a href="https://www.segger.com/products/debug-probes/j-trace/"&gt;J-Trace&lt;/a&gt; system in analysing the performance of the Knurling
Project's...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 25.02.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-25-02-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-25-02-0/</id>
    <published>2025-02-25T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aïssata</name>
    </author>
    <summary type="html">&lt;p&gt;We’re glad to announce the release of Ferrocene 25.02.0, the latest update to our qualified Rust toolchain. 
This version includes new Rust improvements and five new experimental targets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ferrocene.dev"&gt;Ferrocene&lt;/a&gt; is the first fully open-source Rust compiler toolchain...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Defmt is going to 1.0</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/defmt-1-0/"/>
    <id>https://ferrous-systems.com/blog/defmt-1-0/</id>
    <published>2025-01-26T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="/blog/defmt-1-0-released/"&gt;Defmt 1.0 has been released.&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="what-is-defmt"&gt;What is defmt?&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://crates.io/crates/defmt"&gt;&lt;code&gt;defmt&lt;/code&gt;&lt;/a&gt; library is described in the &lt;a href="https://defmt.ferrous-systems.com"&gt;&lt;code&gt;defmt&lt;/code&gt; book&lt;/a&gt; as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A highly efficient logging framework that targets resource-constrained devices, like microcontrollers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's important to note that, despite...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene Achieves IEC 62304 Qualification</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-achieves-iec-62304-qualification/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-achieves-iec-62304-qualification/</id>
    <published>2025-01-13T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;blockquote&gt;
  &lt;p&gt;Ferrocene Becomes First Rust Toolchain to Achieve IEC 62304 Qualification 
Enables medical device developers to leverage the unmatched safety and reliability of Rust while streamlining compliance&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;BERLIN — January 14, 2025&lt;/strong&gt; — &lt;a href="https://www.ferrous-systems.com"&gt;Ferrous Systems&lt;/a&gt;, the...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 24.11.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-24-11-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-24-11-0/</id>
    <published>2024-11-25T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Ana</name>
    </author>
    <summary type="html">&lt;p&gt;We’re proud to announce the release of Ferrocene 24.11.0, the latest update
to our qualified Rust toolchain. This version includes new Rust improvements,
medical qualification, a new host platform, and qualification of our existing
QNX toolchains.&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Security in hickory-dns</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/hickory-dns-client/"/>
    <id>https://ferrous-systems.com/blog/hickory-dns-client/</id>
    <published>2024-11-18T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sebastian</name>
    </author>
    <summary type="html">&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;

&lt;p&gt;About a year ago, the ISRG's &lt;a href="https://www.memorysafety.org/"&gt;Prossimo&lt;/a&gt; project approached us to help them to work on a
memory safety initiative called &lt;a href="https://github.com/hickory-dns/hickory-dns/"&gt;&lt;code&gt;hickory-dns&lt;/code&gt;&lt;/a&gt;, a suite of DNS tools to run authoritative name servers and recursive resolvers.
Prossimo is a project of...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 24.08.0 now available!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-24-08-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-24-08-0/</id>
    <published>2024-08-26T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Pietro</name>
    </author>
    <summary type="html">&lt;p&gt;We’re excited to announce the release of Ferrocene 24.08.0, the latest update
to our qualified Rust toolchain. This version includes the latest Rust
improvements, increased target support, and a preview of the first
off-the-shelf QNX toolchain for...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>SBOM support in Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/stackable-client/"/>
    <id>https://ferrous-systems.com/blog/stackable-client/</id>
    <published>2024-07-29T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sebastian</name>
    </author>
    <summary type="html">&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Last year Lars Francke, the co-founder and CTO of &lt;a href="https://stackable.tech/en/" target="_blank"&gt;Stackable&lt;/a&gt;, approached us with a project proposal to improve the generation of Software Bill of Materials (SBOM) in the Rust eco-system. One particular task was to find a way to expand...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Improving 64-bit RISC-V Linux support in Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/improving-64-bit-risc-v-support/"/>
    <id>https://ferrous-systems.com/blog/improving-64-bit-risc-v-support/</id>
    <published>2024-07-01T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sabine</name>
    </author>
    <summary type="html">&lt;p&gt;Ferrous Systems is partnering with &lt;a href="https://www.codethink.co.uk/"&gt;Codethink&lt;/a&gt; to propose lifting the 64-bit RISC-V Linux (&lt;code&gt;riscv64gc-unknown-linux-gnu&lt;/code&gt;) target to Tier 1 though work funded by the &lt;a href="https://wiki.riseproject.dev/display/HOME/Project+RP004%3A+Support+64-bit+RISC-V+Linux+port+of+Rust+to+Tier-1"&gt;RISE Project&lt;/a&gt;. While we at Ferrous Systems are fully convinced by Rust’s versatility and...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>The New Safety-Critical Rust Consortium: We’re in!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/new-safety-critical-rust-consortium/"/>
    <id>https://ferrous-systems.com/blog/new-safety-critical-rust-consortium/</id>
    <published>2024-06-11T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jessie</name>
    </author>
    <summary type="html">&lt;p&gt;We’re excited to be part of the Rust Foundation’s new &lt;a href="https://foundation.rust-lang.org/news/announcing-the-safety-critical-rust-consortium"&gt;Safety-Critical Rust Consortium&lt;/a&gt;. The primary objective of this group will be to support the responsible use of the Rust programming language in safety-critical software — systems whose failure can...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene 24.05.0 now available for purchase</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-24-05-0/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-24-05-0/</id>
    <published>2024-05-26T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Pietro</name>
    </author>
    <summary type="html">&lt;p&gt;We’ve got major updates: We've qualified Ferrocene 24.05.0 based on Rust 1.76.0
and CriticalUp 1.0.0: Ferrocene's installer and toolchain manager. And last,
but not least: Ferrocene can now be &lt;a href="https://ferrocene.dev" target="_blank"&gt;purchased online as an individual license&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ferrocene is...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Storing borrowed data in trait objects</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rustls-borrow-checker-p3/"/>
    <id>https://ferrous-systems.com/blog/rustls-borrow-checker-p3/</id>
    <published>2024-02-29T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;h1 id="recap-of-the-second-post"&gt;Recap of the second post&lt;/h1&gt;

&lt;p&gt;In the &lt;a href="https://ferrous-systems.com/blog/rustls-borrow-checker-p2/" target="_blank"&gt;second post&lt;/a&gt;, we finished working through the pipeline that decodes and decrypts incoming TLS records.
To remove the heap allocations in the second decoding pass, we added a generic lifetime parameter to the &lt;code&gt;Codec&lt;/code&gt; trait...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Automating Releases for Bindgen</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/automating-releases-for-bindgen/"/>
    <id>https://ferrous-systems.com/blog/automating-releases-for-bindgen/</id>
    <published>2024-02-15T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tshepang, Christian</name>
    </author>
    <summary type="html">&lt;blockquote&gt;
  &lt;p&gt;&lt;code&gt;Bindgen&lt;/code&gt; is an important tool for helping to accelerate the transition from C and C++ to Rust because it generates FFI bindings. We knew that improving the robustness of &lt;code&gt;bindgen&lt;/code&gt; would advance our efforts of bringing memory safety to critical infrastructure...&lt;/p&gt;
&lt;/blockquote&gt;</summary>
  </entry>
  <entry>
    <title>Update: Position Closed - Project Manager</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/project-manager/"/>
    <id>https://ferrous-systems.com/blog/project-manager/</id>
    <published>2024-02-13T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Julia</name>
    </author>
    <summary type="html">&lt;h1 id="project-manager-all-genders---remote-workgerman-resident"&gt;Project Manager (all genders) - remote work/German resident&lt;/h1&gt;

&lt;p&gt;Ferrous Systems is an IT development service and training provider in the Rust programming language. Founded by members of the Rust project, the company engages in all aspects of Rust development...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Allocation-free decoding with traits and high-ranked trait bounds</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rustls-borrow-checker-p2/"/>
    <id>https://ferrous-systems.com/blog/rustls-borrow-checker-p2/</id>
    <published>2024-02-07T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;h1 id="recap-of-the-first-post"&gt;Recap of the first post&lt;/h1&gt;

&lt;p&gt;In the &lt;a href="https://ferrous-systems.com/blog/rustls-borrow-checker-p1/" target="_blank"&gt;first post&lt;/a&gt;, we started working through the &lt;a href="https://github.com/rustls/rustls" target="_blank"&gt;&lt;code&gt;rustls&lt;/code&gt;&lt;/a&gt;' pipeline that decodes and decrypts TLS records, removing the heap allocations we came across.
After the changes in that first post, the pipeline we covered looks like...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>rust-analyzer financial report 2023</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-financial-report-2023/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-financial-report-2023/</id>
    <published>2024-02-01T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lukas</name>
    </author>
    <summary type="html">&lt;h1 id="financial-report-2023"&gt;Financial Report 2023&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;This is the fifth financial status report of the rust-analyzer project Ferrous Systems fund (&lt;a href="https://ferrous-systems.com/blog/rust-analyzer-financial-report-4/"&gt;previous report&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We would like to say a big thank you to all the sponsors of rust-analyzer, past and present. This work is dependent...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Are you ready for Embedded Rust training?</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/are-you-ready-for-embedded-rust-training/"/>
    <id>https://ferrous-systems.com/blog/are-you-ready-for-embedded-rust-training/</id>
    <published>2024-01-22T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sabine</name>
    </author>
    <summary type="html">&lt;h1 id="are-you-ready-for-embedded-rust-training"&gt;Are you ready for Embedded Rust training?&lt;/h1&gt;

&lt;p&gt;We’re always ready to take on – and provide – more challenges through our Rust trainings. As Rust grows in adoption across various companies, demand is increasing for more advanced trainings.&lt;/p&gt;

&lt;p&gt;But that comes...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Using `mem::take` to reduce heap allocations</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rustls-borrow-checker-p1/"/>
    <id>https://ferrous-systems.com/blog/rustls-borrow-checker-p1/</id>
    <published>2024-01-15T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;h1 id="background"&gt;Background&lt;/h1&gt;

&lt;p&gt;Ferrous Systems was contracted by the Internet Security Research Group (ISRG) to work on &lt;a href="https://github.com/rustls/rustls" target="_blank"&gt;rustls&lt;/a&gt;, a modern TLS library in Rust, in 2023.
We worked on adding no-std support to rustls, as well as designing and implementing an alternative API...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Update: Position Closed - Contract Manager, remote</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/contract-manager/"/>
    <id>https://ferrous-systems.com/blog/contract-manager/</id>
    <published>2023-12-18T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Julia</name>
    </author>
    <summary type="html">&lt;h1 id="contract-manager-all-genders"&gt;Contract Manager (all genders)&lt;/h1&gt;

&lt;p&gt;Ferrous Systems is an IT development service and training provider in the Rust programming language. Founded by members of the Rust project, the company engages in all aspects of Rust development and Open-Source sustainability...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Rust and ThreadX</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-and-threadx/"/>
    <id>https://ferrous-systems.com/blog/rust-and-threadx/</id>
    <published>2023-12-06T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;h1 id="rust-and-threadx"&gt;Rust and ThreadX&lt;/h1&gt;

&lt;p&gt;ThreadX is a real-time operating system (or RTOS) written in C which &lt;a href="https://www.embedded.com/bill-lamie-story-of-a-man-and-his-real-time-operating-systems/" target="_blank"&gt;dates back to 1997&lt;/a&gt;. The developer, Express Logic, was acquired &lt;a href="https://www.forbes.com/sites/janakirammsv/2019/04/21/how-does-the-express-logic-acquisition-help-microsoft-and-the-iot-ecosystem/" target="_blank"&gt;by Microsoft in 2019&lt;/a&gt; and the product was renamed &lt;a href="https://azure.microsoft.com/en-gb/products/rtos" target="_blank"&gt;Azure RTOS&lt;/a&gt;. In November 2023, &lt;a href="https://techcommunity.microsoft.com/t5/internet-of-things-blog/microsoft-contributes-azure-rtos-to-open-source/ba-p/3986318" target="_blank"&gt;it was announced that&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Officially Qualified - Ferrocene</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/officially-qualified-ferrocene/"/>
    <id>https://ferrous-systems.com/blog/officially-qualified-ferrocene/</id>
    <published>2023-11-07T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian &amp; Pietro</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/blog/Z1_en-3D_N.png" height="200em" alt="Mark of approval called `TÜV SÜD Mark P`"&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It’s official: Ferrocene is ISO 26262 and IEC 61508 qualified!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can even find the &lt;a href="https://www.tuvsud.com/en/services/product-certification/ps-cert?q=Z10+123030+0001+Rev.+00" target="_blank"&gt;certificate in TÜV SÜDs certificate
database&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This means we achieved qualification for the open source Ferrocene toolchain.
Ferrocene 23.06.0, based on Rust 1...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>sudo-rs' first security audit</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/sudo-rs-audit/"/>
    <id>https://ferrous-systems.com/blog/sudo-rs-audit/</id>
    <published>2023-11-02T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;Thanks to funding from &lt;a href="https://nlnet.nl/" target="_blank"&gt;NLNet&lt;/a&gt; and &lt;a href="https://www.abetterinternet.org/" target="_blank"&gt;ISRG&lt;/a&gt;,
the sudo-rs team was able to request an audit from &lt;a href="https://www.radicallyopensecurity.com/" target="_blank"&gt;Radically Open Security&lt;/a&gt; (ROS).
In this post, we'll share the findings of the audit and our response to those findings.&lt;/p&gt;

&lt;p&gt;ROS performed crystal-box penetration...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Deprecation of probe-run and migration to probe-rs</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/probe-run-deprecation/"/>
    <id>https://ferrous-systems.com/blog/probe-run-deprecation/</id>
    <published>2023-10-10T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;h1 id="tldr"&gt;TL;DR&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;a href="https://github.com/knurling-rs/probe-run" target="_blank"&gt;&lt;code&gt;probe-run&lt;/code&gt;&lt;/a&gt; is getting deprecated in favor of &lt;code&gt;probe-rs&lt;/code&gt; (&lt;a href="https://github.com/probe-rs/probe-rs/" target="_blank"&gt;github&lt;/a&gt;, &lt;a href="https://probe.rs/" target="_blank"&gt;website&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Migration steps are simple. &lt;a href="#migration-steps"&gt;[Skip to migration steps]&lt;/a&gt;
&lt;/li&gt;
  &lt;li&gt;
&lt;code&gt;probe-rs&lt;/code&gt; offers most features of &lt;code&gt;probe-run&lt;/code&gt; and many more&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="letter"&gt;Letter&lt;/h1&gt;

&lt;p&gt;Dear community,&lt;/p&gt;

&lt;p&gt;We'd like to share an important...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Open Sourcing Ferrocene</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-open-source/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-open-source/</id>
    <published>2023-10-03T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian &amp; Pietro</name>
    </author>
    <summary type="html">&lt;p&gt;Today we’re publishing Ferrocene, the Rust compiler for safety-critical and cyber-security use, as an open source project. After 2 years of work, we feel ready to make it available - but also fully open source under the classic Rust license: Apache...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Qualifying Rust without forking</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/qualifying-rust-without-forking/"/>
    <id>https://ferrous-systems.com/blog/qualifying-rust-without-forking/</id>
    <published>2023-09-25T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Ferrocene is a qualified &lt;a href="https://en.wikipedia.org/wiki/Downstream_(software_development)" target="_blank"&gt;downstream&lt;/a&gt; of the main Rust compiler, rustc, which is built and maintained for safety-critical and security use.&lt;/p&gt;

&lt;p&gt;Many vendors &lt;a href="https://en.wikipedia.org/wiki/Fork_(software_development)" target="_blank"&gt;&lt;em&gt;fork&lt;/em&gt;&lt;/a&gt; such compilers - they take a current version of the compiler, change it, qualify it, and then...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Rust for Mission Critical Applications</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-for-mission-critical-applications/"/>
    <id>https://ferrous-systems.com/blog/rust-for-mission-critical-applications/</id>
    <published>2023-09-24T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;p&gt;As you may be aware, Ferrous Systems has done a lot of work around Rust and Embedded Systems; be they "big" embedded systems that run on real-time OS like QNX, or "small" embedded systems that run on bare-metal. We were delighted to have this recognised...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>How Ferrocene improves Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/how-ferrocene-improves-rust/"/>
    <id>https://ferrous-systems.com/blog/how-ferrocene-improves-rust/</id>
    <published>2023-09-10T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Pietro</name>
    </author>
    <summary type="html">&lt;p&gt;Over the past few years, Ferrous Systems has been developing Ferrocene, a
distribution of the Rust compiler for safety-critical (qualified for ISO 26262
and IEC 61508) and security.&lt;/p&gt;

&lt;p&gt;Being a downstream of the Rust project, Ferrocene doesn't exist in...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Our latest adventures with bindgen</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/bindgen/"/>
    <id>https://ferrous-systems.com/blog/bindgen/</id>
    <published>2023-08-09T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Christian</name>
    </author>
    <summary type="html">&lt;p&gt;As you may know, Open Source projects are a fundamental part of the software development ecosystem. While the creation of new projects is exciting and gathers a lot of attention, it is as important to maintain the already existing software that a lot...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene update</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-update/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-update/</id>
    <published>2023-07-18T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;We have an update to share on Ferrocene, the premier safety compiler for Rust. &lt;strong&gt;We'd also like to invite you to the &lt;a href="/blog/a-decade-of-rust/"&gt;Ferrocene release announcement&lt;/a&gt;, happening on October 4th.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AdaCore and Ferrous Systems have jointly developed a Rust toolchain that is...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>A Decade of Rust, and Announcing Ferrocene</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/a-decade-of-rust/"/>
    <id>https://ferrous-systems.com/blog/a-decade-of-rust/</id>
    <published>2023-07-18T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Hello Rustaceans!&lt;/p&gt;

&lt;p&gt;Sometimes, good things come in many. For example: birthdays! 🎉&lt;/p&gt;

&lt;p&gt;As it just so happens, we have 3 big things to celebrate:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;It's the 10th anniversary of &lt;a href="https://github.com/skade/widmann/commit/80721e2bb887054f6b6c7415cc7193851ef0b1da"&gt;Florian publicly posting his first Rust code&lt;/a&gt; on September 28th, 2013!&lt;/li&gt;
  &lt;li&gt;Ferrous...&lt;/li&gt;
&lt;/ul&gt;</summary>
  </entry>
  <entry>
    <title>Testing sudo-rs and improving sudo along the way</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/testing-sudo-rs/"/>
    <id>https://ferrous-systems.com/blog/testing-sudo-rs/</id>
    <published>2023-06-27T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;&lt;a href="https://github.com/memorysafety/sudo-rs"&gt;sudo-rs&lt;/a&gt; is a project by &lt;a href="https://www.memorysafety.org/"&gt;Prossimo&lt;/a&gt; jointly implemented by &lt;a href="https://tweedegolf.nl/en"&gt;Tweede golf&lt;/a&gt; and &lt;a href="https://tweedegolf.nl/en/blog/91/reimplementing-sudo-in-rust"&gt;Ferrous Systems&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As our friends at Tweede golf announced in &lt;a href="https://tweedegolf.nl/en/blog/91/reimplementing-sudo-in-rust"&gt;a previous blog post&lt;/a&gt;, Ferrous Systems and Tweede golf have been working together on a re-implementation of sudo...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Why it is hard to learn another programming language Part III</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-three/"/>
    <id>https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-three/</id>
    <published>2023-06-20T11:00:55+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;h1 id="why-it-is-hard-for-developers-to-learn-another-language-and-how-a-professional-training-can-help---part-iii"&gt;Why it is hard for developers to learn another language and how a professional training can help - Part III&lt;/h1&gt;

&lt;p&gt;Note: other posts in this series - &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-one/"&gt;Part I&lt;/a&gt; and &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-two/"&gt;Part II&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the first two posts in this series, we focused on how the dialogues in a group setting...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Why it is hard to learn another programming language Part II</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-two/"/>
    <id>https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-two/</id>
    <published>2023-04-03T11:00:55+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;h1 id="why-it-is-hard-for-developers-to-learn-another-language-and-how-a-professional-training-can-help---part-ii"&gt;Why it is hard for developers to learn another language and how a professional training can help - Part II&lt;/h1&gt;

&lt;p&gt;Note: other posts in this series - &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-one/"&gt;Part I&lt;/a&gt; and &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-three/"&gt;Part III&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-one/"&gt;our last post in the series&lt;/a&gt;, we focused on how the dialogues in a group setting...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>A Rustaceans tour of embedded world</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/a-rustacean-tour-of-embedded-world/"/>
    <id>https://ferrous-systems.com/blog/a-rustacean-tour-of-embedded-world/</id>
    <published>2023-03-27T08:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Last week, I had the pleasure of representing Ferrous Systems at Embedded World together with our partners at AdaCore. We shared a space so that we can collectively represent our joint project: Ferrocene. AdaCore additionally presented &lt;a href="https://www.adacore.com/sparkpro"&gt;SPARK Pro&lt;/a&gt;, a...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>How we built our Embedded World Demo on Rust for QNX</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/how-we-built-our-embedded-world-demo-on-rust-for-qnx/"/>
    <id>https://ferrous-systems.com/blog/how-we-built-our-embedded-world-demo-on-rust-for-qnx/</id>
    <published>2023-03-24T09:54:57+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;h1 id="background"&gt;Background&lt;/h1&gt;
&lt;p&gt;At Embedded World 2023, Ferrous Systems had a joint booth with AdaCore, to talk about our new joint-venture: Ferrocene. Ferrocene is a qualified toolchain for building safety-critical systems in Rust.&lt;/p&gt;

&lt;p&gt;Florian noted that our booth was next...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>A cheatsheet for some potentially confusing terms in Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/cheatsheet-for-confusing-rust-terms/"/>
    <id>https://ferrous-systems.com/blog/cheatsheet-for-confusing-rust-terms/</id>
    <published>2023-03-09T07:00:55+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Amanjeev</name>
    </author>
    <summary type="html">&lt;p&gt;Learning Rust can be a bit tedious. There are various reasons for that. My colleague - Tanks - has started a blog series on this topic: &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-one/"&gt;Why is it hard to learn another programming language Part 1&lt;/a&gt;. One aspect is a combination of the opportunistic learning...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Binding with bindgen</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/binding-with-bindgen/"/>
    <id>https://ferrous-systems.com/blog/binding-with-bindgen/</id>
    <published>2023-03-06T07:00:55+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Amanjeev</name>
    </author>
    <summary type="html">&lt;p&gt;I bet you know that at Ferrous Systems we are big proponents of open source. You are also probably aware that Ferrous Systems is a leading name in Rust training. But – did you know that we also consult on a range of client projects? Some of these projects...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>rust-analyzer Financial Report #4</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-financial-report-4/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-financial-report-4/</id>
    <published>2023-02-27T10:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lukas</name>
    </author>
    <summary type="html">&lt;h1 id="financial-report-4"&gt;Financial Report #4&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;This is the fourth financial status report of the rust-analyzer project Ferrous Systems fund.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This one is loooong overdue, apologies for that! We will be posting these reports yearly from now on.&lt;/p&gt;

&lt;p&gt;Since the last report, rust...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Update: Position Closed - Student Assistant, remote</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/student-assistant/"/>
    <id>https://ferrous-systems.com/blog/student-assistant/</id>
    <published>2023-02-14T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Julia</name>
    </author>
    <summary type="html">&lt;h1 id="student-assistant-all-genders-in-rust-software-development"&gt;Student Assistant (all genders) in Rust Software Development&lt;/h1&gt;

&lt;p&gt;Ferrous Systems is a development service and training supplier in the space of the Rust programming language. Founded by members of the Rust project, the company engages in all aspects of...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Why it is hard to learn another programming language Part I</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-one/"/>
    <id>https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-one/</id>
    <published>2023-02-14T11:00:55+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;h1 id="why-it-is-hard-for-developers-to-learn-another-programming-language-and-how-a-professional-training-can-help---part-i"&gt;Why it is hard for developers to learn another programming language and how a professional training can help - Part I&lt;/h1&gt;

&lt;p&gt;Note: other posts in this series - &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-two/"&gt;Part II&lt;/a&gt; and &lt;a href="https://ferrous-systems.com/blog/why-it-is-difficult-to-learn-another-language-three/"&gt;Part III&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Being a major training provider in the Rust programming language, we are...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Using Rust to build a &lt;nobr&gt;next-generation&lt;/nobr&gt; network</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/using-rust-to-build-a-next-generation-network/"/>
    <id>https://ferrous-systems.com/blog/using-rust-to-build-a-next-generation-network/</id>
    <published>2023-01-19T13:47:55+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonathan</name>
    </author>
    <summary type="html">&lt;h1 id="using-rust-to-build-a-next-generation-network"&gt;Using Rust to build a next-generation network&lt;/h1&gt;
&lt;p&gt;Ferrous Systems specialises in the Rust Programming Language. We’re perhaps best known for our &lt;a href="https://ferrous-systems.com/training/"&gt;Training Courses&lt;/a&gt;, and the sponsored work we do on open-source projects like &lt;a href="https://rust-analyzer.github.io/"&gt;rust-analyzer&lt;/a&gt;, but we also offer...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Update: Position Closed - Senior Software Developer, remote</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/job-offer-2023-01-12/"/>
    <id>https://ferrous-systems.com/blog/job-offer-2023-01-12/</id>
    <published>2023-01-12T10:09:07+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Julia</name>
    </author>
    <summary type="html">&lt;h1 id="software-development"&gt;Software development&lt;/h1&gt;

&lt;p&gt;Ferrous Systems provides development service and training in the space of the Rust programming language. Founded by members of the Rust project, the company engages in all aspects of Rust development and Open-Source sustainability...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>defmt-rtt linker error</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/defmt-rtt-linker-error/"/>
    <id>https://ferrous-systems.com/blog/defmt-rtt-linker-error/</id>
    <published>2022-12-05T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;h1 id="tldr"&gt;TL;DR&lt;/h1&gt;

&lt;p&gt;Compiling a Rust project with &lt;code&gt;defmt-rtt v0.3&lt;/code&gt; fails with a linker error if an application author (this is you!) does not select a critical section implementation.&lt;/p&gt;

&lt;p&gt;To fix this do the following (taken from the critical-section docs):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Add...&lt;/p&gt;
&lt;/blockquote&gt;</summary>
  </entry>
  <entry>
    <title>The Ferrocene Language Specification is here!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/the-ferrocene-language-specification-is-here/"/>
    <id>https://ferrous-systems.com/blog/the-ferrocene-language-specification-is-here/</id>
    <published>2022-07-25T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Pietro</name>
    </author>
    <summary type="html">&lt;p&gt;It’s here! A couple of months ago, &lt;a href="https://ferrous-systems.com/blog/ferrocene-language-specification/"&gt;we announced&lt;/a&gt; that as part of
our efforts with Ferrocene, we were creating the Ferrocene Language
Specification – and now &lt;a href="https://spec.ferrocene.dev"&gt;our first draft is online&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Ferrocene Language Specification (FLS) is an effort of
&lt;a href="https://ferrous-systems.com/ferrocene/"&gt;Ferrocene&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Espressif #embeddedrust training information</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/espressif-training-information/"/>
    <id>https://ferrous-systems.com/blog/espressif-training-information/</id>
    <published>2022-07-10T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aïssata</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/esp-logo-black.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;Here comes all important information for our Rust Embedded Espressif trainings.&lt;/p&gt;

&lt;h2 id="training"&gt;Training&lt;/h2&gt;

&lt;h3 id="dates"&gt;Dates&lt;/h3&gt;

&lt;p&gt;We have two 'levels' of training workshop - Beginner and Advanced. The Beginner training will be on September 15 (beginner) and the Advanced training...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Call for applications: Knurling-rs Summer of Code 2022 🦀</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-summer-of-code/"/>
    <id>https://ferrous-systems.com/blog/knurling-summer-of-code/</id>
    <published>2022-06-22T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;h1 id="call-for-applications-knurling-rs-summer-of-code-2022-"&gt;Call for applications: Knurling-rs Summer of Code 2022 🦀&lt;/h1&gt;

&lt;p&gt;The knurling-rs project will run the "Knurling-rs Summer of Code" for the first time. We aim to advance our mission to improve the embedded Rust experience and support newcomers to improve their...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Introducing the Ferrocene Language Specification</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-language-specification/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-language-specification/</id>
    <published>2022-05-31T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sabine</name>
    </author>
    <summary type="html">&lt;h1 id="announcement"&gt;Announcement&lt;/h1&gt;

&lt;p&gt;At Ferrous Systems, our work to qualify rustc to produce &lt;a href="https://ferrous-systems.com/ferrocene/"&gt;Ferrocene&lt;/a&gt; is
primarily an exercise in documentation. And today, we're excited to give you a
glimpse into the core of that package: the Ferrocene Language Specification
(FLS).&lt;/p&gt;

</summary>
  </entry>
  <entry>
    <title>Embedded Rust on Espressif</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/announce-esp-training/"/>
    <id>https://ferrous-systems.com/blog/announce-esp-training/</id>
    <published>2022-04-04T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks, Aïssata</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/esp-logo-black.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;Are you ready to explore the world of the Internet of Things (IoT) with embedded Rust? We've got news for you! We have been collaborating with Espressif on training material for new embedded workshops. You can join our workshops in September!&lt;/p&gt;

&lt;h2 id="board-features"&gt;Board...&lt;/h2&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #34</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-34/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-34/</id>
    <published>2022-03-09T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 34th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #33</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-33/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-33/</id>
    <published>2022-02-06T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 33rd changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrous Systems and AdaCore to join forces on Ferrocene</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrous-systems-adacore-joining-forces/"/>
    <id>https://ferrous-systems.com/blog/ferrous-systems-adacore-joining-forces/</id>
    <published>2022-02-01T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Ferrous Systems started in 2018 with the mission to help companies adopt Rust. This has led to many different activities: Ferrous Systems is augmenting teams around the world by providing training and other forms of advice, it develops software and...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling toolset v0.3 has been released!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/defmt-3/"/>
    <id>https://ferrous-systems.com/blog/defmt-3/</id>
    <published>2021-10-31T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt; is Ferrous Systems' 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your embedded Rust...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Structuring, testing and debugging procedural macro crates</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/testing-proc-macros/"/>
    <id>https://ferrous-systems.com/blog/testing-proc-macros/</id>
    <published>2021-10-18T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;In this blog post we'll explore how to structure a procedural macro, AKA &lt;em&gt;proc-macro&lt;/em&gt;, crate to make it easier to test.
We'll show different testing approaches:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;unit tests, for code coverage;&lt;/li&gt;
  &lt;li&gt;compile-fail tests, to ensure good error messages; and&lt;/li&gt;
&lt;/ul&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #32</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-32/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-32/</id>
    <published>2021-10-07T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sebastian</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 32nd changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #31</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-31/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-31/</id>
    <published>2021-09-16T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 31st changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #30</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-30/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-30/</id>
    <published>2021-08-26T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 30th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #29</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-29/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-29/</id>
    <published>2021-08-02T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Sebastian</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 29th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #28</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-28/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-28/</id>
    <published>2021-07-05T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 28th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #27</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-27/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-27/</id>
    <published>2021-06-19T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 27th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #26</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-26/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-26/</id>
    <published>2021-06-06T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 26th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Taking Rust for a Test Drive</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-test-drive/"/>
    <id>https://ferrous-systems.com/blog/rust-test-drive/</id>
    <published>2021-05-27T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James, Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/rusty-car.jpg" alt="A rusty car sitting on a beach with a surf board"&gt;&lt;/p&gt;

&lt;h1 id="taking-rust-for-a-test-drive"&gt;Taking Rust for a Test Drive&lt;/h1&gt;

&lt;p&gt;At Ferrous, we often help folks who are in the "getting started" phase of using Rust. Sometimes their engineering teams have started using the language unofficially and they'd like some help making it official, and other...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #25</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-25/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-25/</id>
    <published>2021-05-22T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 25th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #24</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-24/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-24/</id>
    <published>2021-05-06T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 24th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Using GDB and defmt to debug embedded programs</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/gdb-and-defmt/"/>
    <id>https://ferrous-systems.com/blog/gdb-and-defmt/</id>
    <published>2021-05-03T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;With logging frameworks like &lt;code&gt;defmt&lt;/code&gt;, "printf debugging" is a powerful and easily accessible tool to figure out why your code is behaving differently than expected.
However, sometimes you might still want to use a debugger like &lt;code&gt;gdb&lt;/code&gt;, for example if you...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Compilers as Teachers</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/compilers-as-teachers/"/>
    <id>https://ferrous-systems.com/blog/compilers-as-teachers/</id>
    <published>2021-05-02T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte, James</name>
    </author>
    <summary type="html">&lt;p&gt;In the introduction of &lt;a href="https://ferrous-systems.com/training/"&gt;our trainings&lt;/a&gt;, we like to stress that Rust takes its commitment to developer friendliness very seriously, and that the Rust compiler considers confusing error messages a bug. This has been an explicit sentiment of the Rust project...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #23</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-23/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-23/</id>
    <published>2021-04-16T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 23th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #22</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-22/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-22/</id>
    <published>2021-04-01T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 22th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Testing an embedded application</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/test-embedded-app/"/>
    <id>https://ferrous-systems.com/blog/test-embedded-app/</id>
    <published>2021-03-30T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;Welcome to the final post in our &lt;a href="../tags/embedded-rust-testing/"&gt;"testing embedded Rust"&lt;/a&gt; series.
In the previous posts we covered &lt;a href="../defmt-test-hal"&gt;how to test a Hardware Abstraction Layer&lt;/a&gt;, &lt;a href="../test-driver-crate"&gt;how to test a driver crate&lt;/a&gt; and &lt;a href="../gha-hil-tests"&gt;how to set up a GitHub Actions (GHA) workflow to include Hardware-In-the-Loop...&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling Financial Update</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-financial-update/"/>
    <id>https://ferrous-systems.com/blog/knurling-financial-update/</id>
    <published>2021-03-28T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;When we first started the &lt;a href="http://knurling.ferrous-systems.com"&gt;knurling-rs&lt;/a&gt; project, our aim was to share our tools for accelerating development of embedded Rust. We had been building and using them internally– for trainings, open source and commercial customer projects.&lt;/p&gt;

&lt;p&gt;Since then, our...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Breathe-rs - An air quality monitor based on Knurling sessions</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/breathe-rs/"/>
    <id>https://ferrous-systems.com/blog/breathe-rs/</id>
    <published>2021-03-22T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Matous Hybl</name>
    </author>
    <summary type="html">&lt;h1 id="breathe-rs---an-air-quality-monitor-based-on-knurling-sessions"&gt;Breathe-rs - An air quality monitor based on Knurling sessions&lt;/h1&gt;

&lt;p&gt;&lt;img src="../../images/breathe-rs.png" alt="A device with an e-paper screen displaying time, date, CO2 level, temperature, humidity, and a status indicator"&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: This is a guest post by Matous Hybl (&lt;a href="https://twitter.com/hyblmatous"&gt;@hyblmatous&lt;/a&gt; on Twitter). Matous participated in the first Knurling Session, and shared his experience with us.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt; was announced...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #21</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-21/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-21/</id>
    <published>2021-03-18T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 21th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Running hardware-in-the-loop tests on GitHub Actions</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/gha-hil-tests/"/>
    <id>https://ferrous-systems.com/blog/gha-hil-tests/</id>
    <published>2021-03-16T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/nrf52840-dk-self-test.jpeg" alt="Hardware setup for testing the nRF52840 Hardware Abstraction Layer: a nRF52840 DK development board plus 3 wires that connect some pins to each other"&gt;&lt;/p&gt;

&lt;p&gt;This is the third post in our "embedded Rust testing" series.
This post covers how to run a hardware testsuite based on &lt;a href="https://crates.io/crates/defmt-test"&gt;&lt;code&gt;defmt-test&lt;/code&gt;&lt;/a&gt; on real hardware with GitHub Actions.
We'll be using the testsuite introduced in the &lt;a href="../defmt-test-hal/"&gt;first article&lt;/a&gt; in the series, so...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>We published the first knurling-session!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/first-knurling-session-published/"/>
    <id>https://ferrous-systems.com/blog/first-knurling-session-published/</id>
    <published>2021-03-15T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;After a couple of months behind closed curtains, accessible to sponsors only, we published last winter's &lt;a href="https://ferrous-systems.com/blog/knurling-sessions-introduction"&gt;knurling-session&lt;/a&gt; today! It's now available to all, for free.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;This is the project &lt;a href="https://github.com/knurling-rs/knurling-session-20q4"&gt;repo&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Direct link to the rendered &lt;a href="https://session20q4.ferrous-systems.com/"&gt;book&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;And on the knurling...&lt;/li&gt;
&lt;/ul&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #20</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-20/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-20/</id>
    <published>2021-03-11T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 20th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #19</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-19/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-19/</id>
    <published>2021-03-04T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 19th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Testing a driver crate</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/test-driver-crate/"/>
    <id>https://ferrous-systems.com/blog/test-driver-crate/</id>
    <published>2021-03-02T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/nrf-dk-scd30.jpg" alt="Hardware setup for testing the SCD30 CO2 sensor: a nRF52840 DK development board is connected to a SCD30 sensor via four wires"&gt;&lt;/p&gt;

&lt;p&gt;Welcome to the second post in our &lt;a href="../tags/embedded-rust-testing/"&gt;"testing Embedded Rust"&lt;/a&gt; series.
In this blog post we'll cover how to test a platform agnostic &lt;em&gt;driver crate&lt;/em&gt;.&lt;/p&gt;

&lt;h1 id="driver-crate"&gt;Driver crate?&lt;/h1&gt;

&lt;p&gt;In the embedded Rust ecosystem, the term driver crate refers to a &lt;em&gt;generic&lt;/em&gt; library that interfaces...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #18</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-18/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-18/</id>
    <published>2021-02-25T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 18th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene Part 3: The Road to Rust in mission- and safety-critical</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrocene-update-three-the-road/"/>
    <id>https://ferrous-systems.com/blog/ferrocene-update-three-the-road/</id>
    <published>2021-02-23T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">
&lt;p&gt;&lt;img src="/images/ferrocene_logo_horizontal.svg" alt="The Ferrocene logo. A ball between two planes. The name ferrocene next to it."&gt;&lt;/p&gt;

&lt;h1 id="announcing-ferrocene"&gt;Announcing Ferrocene&lt;/h1&gt;

&lt;p&gt;Ferrocene is an effort led by Ferrous Systems and its newly formed subsidiary Critical Section GmbH to qualify the Rust Language and Compiler for use in the safety-critical domain. This is the third post in a series detailing...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #17</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-17/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-17/</id>
    <published>2021-02-21T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 17th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Testing a Hardware Abstraction Layer (HAL)</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/defmt-test-hal/"/>
    <id>https://ferrous-systems.com/blog/defmt-test-hal/</id>
    <published>2021-02-17T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/nrf52840-dk-self-test.jpeg" alt="Hardware setup for testing the nRF52840 Hardware Abstraction Layer: a nRF52840 DK development board plus 3 wires that connect some pins to each other"&gt;&lt;/p&gt;

&lt;p&gt;This is the first post in our "embedded Rust testing" series.
This post covers how to test a Hardware Abstraction Layer (HAL) with &lt;a href="https://crates.io/crates/defmt-test"&gt;&lt;code&gt;defmt-test&lt;/code&gt;&lt;/a&gt; and little to no additional hardware.&lt;/p&gt;

&lt;h1 id="intro"&gt;Intro&lt;/h1&gt;

&lt;p&gt;A Hardware Abstraction Layer is a crate (library) that exposes...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #16</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-16/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-16/</id>
    <published>2021-02-11T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 16th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #15</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-15/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-15/</id>
    <published>2021-02-04T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas &amp; Johann</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 15th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Another Knurling-Session</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/another-knurling-session/"/>
    <id>https://ferrous-systems.com/blog/another-knurling-session/</id>
    <published>2021-02-02T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;While the last Knurling Session was focused on Hardware and and how to make it work together using software, this quarter will be focused more on the software side of things. We'll explore basic Rust principles in a way that is suitable to get started...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #14</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-14/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-14/</id>
    <published>2021-01-21T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 14th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #13</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-13/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-13/</id>
    <published>2021-01-14T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 13th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #12</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-12/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-12/</id>
    <published>2021-01-07T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the 12th changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt; your...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #11</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-11/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-11/</id>
    <published>2020-12-17T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the eleventh changelog (and the last in 2020) for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #10</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-10/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-10/</id>
    <published>2020-12-10T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the tenth changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #9</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-9/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-9/</id>
    <published>2020-12-03T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the ninth changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #8</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-8/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-8/</id>
    <published>2020-11-26T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the eighth changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #7</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-7/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-7/</id>
    <published>2020-11-19T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the seventh changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #6</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-6/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-6/</id>
    <published>2020-11-12T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the sixth changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #5</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-5/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-5/</id>
    <published>2020-11-05T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the fifth changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #4</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-4/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-4/</id>
    <published>2020-10-28T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the fourth changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>For Complex Applications, Rust is as Productive as Kotlin</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-as-productive-as-kotlin/"/>
    <id>https://ferrous-systems.com/blog/rust-as-productive-as-kotlin/</id>
    <published>2020-10-27T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;In this article, we will compare one apple (IntelliJ Rust) to one orange (rust-analyzer) to reach general and sweeping conclusions.
Specifically, I want to present a case study supporting the following claim:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph lead"&gt;
&lt;p&gt;For complex applications, Rust is...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #3</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-3/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-3/</id>
    <published>2020-10-22T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="../../images/knurling-horizontal-logo.svg" width="400px"&gt;&lt;/p&gt;

&lt;p&gt;This is the third changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and &lt;a href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"&gt;test&lt;/a&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Dancing Links In Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/dlx-in-rust/"/>
    <id>https://ferrous-systems.com/blog/dlx-in-rust/</id>
    <published>2020-10-05T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Hi!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This will be a rather technical article — we will implement &lt;a href="https://arxiv.org/abs/cs/0011047"&gt;Dancing Links&lt;/a&gt; algorithm in Rust.
I became aware of this beautiful problem when working with &lt;a href="https://calendly.com/"&gt;Calendly&lt;/a&gt; — they are using Dancing Links (and Rust!) to find the best time slot for an event...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #2</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-2/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-2/</id>
    <published>2020-09-24T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="/images/knurling-vertical-color.png" alt="knurling logo"&gt;&lt;/p&gt;

&lt;p&gt;This is the second weekly changelog for &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;Knurling-rs&lt;/a&gt;, 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 &lt;a href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"&gt;develop&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;log&lt;/a&gt;, &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;debug&lt;/a&gt;, and...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Learning Rust: OMG WTF RS – resources to help you get started with Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/omg-wtf-rs-resources-to-help-you-get-started-with-rust/"/>
    <id>https://ferrous-systems.com/blog/omg-wtf-rs-resources-to-help-you-get-started-with-rust/</id>
    <published>2020-09-22T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;I'm an embedded C/C++ developer who joined Ferrous and made the switch to Rust this spring. One thing that continues to amaze me on this journey is the quality and friendliness of Rust tools and learning resources.&lt;/p&gt;

&lt;p&gt;Still, when you're just starting...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs changelog #1</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-changelog-1/"/>
    <id>https://ferrous-systems.com/blog/knurling-changelog-1/</id>
    <published>2020-09-17T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;Since the releases of &lt;a href="https://ferrous-systems.com/blog/defmt/"&gt;&lt;code&gt;defmt&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://ferrous-systems.com/blog/probe-run/"&gt;&lt;code&gt;probe-run&lt;/code&gt;&lt;/a&gt; there have been many improvements in the &lt;code&gt;defmt&lt;/code&gt; ecosystem and work on new tools.
We have been posting those updates &lt;a href="https://twitter.com/ferroussystems"&gt;on Twitter&lt;/a&gt; but in case you missed them this blog post is a summary of those updates.&lt;/p&gt;

&lt;h1 id="location-information"&gt;Location...&lt;/h1&gt;</summary>
  </entry>
  <entry>
    <title>One Month of Knurling-rs</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-one-month/"/>
    <id>https://ferrous-systems.com/blog/knurling-one-month/</id>
    <published>2020-09-13T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;Just over a month ago, we &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;announced Knurling-rs&lt;/a&gt;, our push to sustainably build better tooling for developing and debugging Rust software for embedded systems.&lt;/p&gt;

&lt;p&gt;In the past month, we've made some amazing achievements. We've released a number of tools...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Learning Embedded Rust with Knurling-rs</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-sessions-introduction/"/>
    <id>https://ferrous-systems.com/blog/knurling-sessions-introduction/</id>
    <published>2020-09-08T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;Having a good set of tooling is only half of the story in making it easier to develop and debug Rust software for embedded systems. The other half is knowledge and documentation.  This is where &lt;strong&gt;Knurling Books&lt;/strong&gt; and &lt;strong&gt;Knurling Sessions&lt;/strong&gt; are brought into...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Using `cargo test` for embedded testing with `panic-probe`</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/cargo-test-with-panic-probe/"/>
    <id>https://ferrous-systems.com/blog/cargo-test-with-panic-probe/</id>
    <published>2020-08-31T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas</name>
    </author>
    <summary type="html">&lt;p&gt;We're happy to announce the newest crate published as part of our &lt;a href="https://ferrous-systems.com/blog/knurling-rs/"&gt;knurling&lt;/a&gt; project: panic-probe.&lt;/p&gt;

&lt;p&gt;panic-probe is a simple panic and fault handler that integrates into &lt;a href="https://github.com/knurling-rs/probe-run"&gt;probe-run&lt;/a&gt;, our host-side
tooling for embedded programs. When using panic-probe in...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>defmt, a highly efficient Rust logging framework for embedded devices</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/defmt/"/>
    <id>https://ferrous-systems.com/blog/defmt/</id>
    <published>2020-08-20T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;Today we are thrilled to announce the public release of &lt;a href="https://github.com/knurling-rs/defmt"&gt;&lt;code&gt;defmt&lt;/code&gt;&lt;/a&gt; ("de format").
&lt;code&gt;defmt&lt;/code&gt; stands for "deferred formatting" and it's a highly efficient logging framework.
As we covered in &lt;a href="https://ferrous-systems.com/blog/21st-century-embedded-tooling/"&gt;our blog post about embedded tooling for the 21st century&lt;/a&gt; we hope &lt;code&gt;defmt&lt;/code&gt;&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Run Rust on your embedded device from VSCode in one click</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/"/>
    <id>https://ferrous-systems.com/blog/run-rust-on-your-embedded-device-from-vscode/</id>
    <published>2020-08-18T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Lotte</name>
    </author>
    <summary type="html">&lt;p&gt;The &lt;a href="https://rust-analyzer.github.io"&gt;rust-analyzer&lt;/a&gt; plugin for VSCode provides you with a helpful little  &lt;code&gt;▶ Run&lt;/code&gt; button above every test or &lt;code&gt;main()&lt;/code&gt; function that lets you execute your code right out of the editor.
Unfortunately though, this won't work out of the box in embedded projects...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Learning Rust: The Compiler is your Friend</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/the-compiler-is-your-friend/"/>
    <id>https://ferrous-systems.com/blog/the-compiler-is-your-friend/</id>
    <published>2020-08-16T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;The Rust programming language doesn't just aim to be practical, it also aims to be useful for the people working with it. Not only does this improve productivity, it also helps learning the language! One of the features I want to pick out: the borrow...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>probe-run, run embedded Rust apps like native apps</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/probe-run/"/>
    <id>https://ferrous-systems.com/blog/probe-run/</id>
    <published>2020-08-13T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;Today we are pleased to announce the public release of &lt;a href="https://crates.io/crates/probe-run"&gt;&lt;code&gt;probe-run&lt;/code&gt;&lt;/a&gt;, a custom Cargo runner for embedded development.
This host application integrates into your Cargo workflow and lets you &lt;code&gt;cargo run&lt;/code&gt; embedded applications.
Let's see how to use it for ARM...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Embedded Rust tooling for the 21st century</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/21st-century-embedded-tooling/"/>
    <id>https://ferrous-systems.com/blog/21st-century-embedded-tooling/</id>
    <published>2020-08-10T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;These days GDB is the go-to development/debugging tool of many embedded Rust developers.
We think there's room for complementary tools that could provide a better development workflow and improve productivity.
In this blog post we'll share our vision...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Knurling-rs Announcement</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/knurling-rs/"/>
    <id>https://ferrous-systems.com/blog/knurling-rs/</id>
    <published>2020-08-05T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="/images/knurling-rs.png" alt="Knurling-rs"&gt;&lt;/p&gt;

&lt;p&gt;Today we're announcing &lt;a href="https://github.com/knurling-rs"&gt;Knurling&lt;/a&gt; - Ferrous' effort to sustainably build better tooling for developing and debugging Rust software for embedded systems.&lt;/p&gt;

&lt;p&gt;To make this a reality, we are opening a &lt;a href="https://github.com/knurling-rs/meta"&gt;GitHub organization&lt;/a&gt; to collect these efforts, as well...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Learning Rust: Mindsets and Expectations</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/mindsets-and-expectations/"/>
    <id>https://ferrous-systems.com/blog/mindsets-and-expectations/</id>
    <published>2020-08-02T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;We often hear that Rust is a language that is too complex and too difficult to learn. While, yes, the language &lt;em&gt;is&lt;/em&gt; complex, we have identified some existing mindsets and expectations that serve as obstacles to the learning process. Let's discuss these...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Concurrency Patterns in Embedded Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/embedded-concurrency-patterns/"/>
    <id>https://ferrous-systems.com/blog/embedded-concurrency-patterns/</id>
    <published>2020-07-06T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;How should you do concurrency in an embedded &lt;code&gt;no_std&lt;/code&gt; application? There's no built-in support for time-sliced threads in &lt;a href="https://doc.rust-lang.org/core/index.html"&gt;&lt;code&gt;core&lt;/code&gt;&lt;/a&gt;; that abstraction is only available in &lt;code&gt;std&lt;/code&gt; (see &lt;a href="https://doc.rust-lang.org/std/thread/index.html"&gt;&lt;code&gt;std::thread&lt;/code&gt;&lt;/a&gt;). The latest stable release brought the async/await feature to...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Learning and Teaching Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/learning-and-teaching-rust/"/>
    <id>https://ferrous-systems.com/blog/learning-and-teaching-rust/</id>
    <published>2020-06-11T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">
&lt;h1 id="a-new-series-of-posts"&gt;A new series of posts&lt;/h1&gt;

&lt;p&gt;Our Ferrous Systems team has spent the past five years helping people to learn Rust, either as members of the community, or in the context of paid training services. (Yes, we have been doing this before the company even began...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Coverage Marks</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/coverage-marks/"/>
    <id>https://ferrous-systems.com/blog/coverage-marks/</id>
    <published>2020-05-27T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;In this post, we will discuss an interesting technique for testing test coverage, and the associated Rust crate — &lt;a href="https://crates.io/crates/cov-mark"&gt;&lt;code&gt;cov-mark&lt;/code&gt;&lt;/a&gt;.
The two goals of the post are:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="olist arabic"&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;
&lt;p&gt;Share the knowledge about a specific testing approach.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Show a couple of Rust tricks...&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>rust-analyzer: Next Few Years</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-next-few-years/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-next-few-years/</id>
    <published>2020-05-24T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This is a repost from &lt;a href="https://rust-analyzer.github.io/blog/2020/05/18/next-few-years.html"&gt;rust-analyzer blog&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;rust-analyzer is a new "IDE backend" for the &lt;a href="https://www.rust-lang.org/"&gt;Rust&lt;/a&gt; programming language.
Support rust-analyzer on &lt;a href="https://opencollective.com/rust-analyzer/"&gt;Open Collective&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;During the past several months, I’ve been swamped with in-the-trenches rust-analyzer...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>Oxidize Global Workshop and CfP announcement</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/oxidize-global-workshop-and-cfp-announcement/"/>
    <id>https://ferrous-systems.com/blog/oxidize-global-workshop-and-cfp-announcement/</id>
    <published>2020-05-10T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Last week, we announced &lt;a href="https://oxidizeconf.com"&gt;Oxidize Global&lt;/a&gt;, a 4 day online Rust conference with workshops, talks and Impl. days happening all around the world. Oxidize Global takes place on July 17-20, 2020. Read our full announcement &lt;a href="https://ferrous-systems.com/blog/oxidize-global/"&gt;over here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today, we are announcing...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Oxidize Global</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/oxidize-global/"/>
    <id>https://ferrous-systems.com/blog/oxidize-global/</id>
    <published>2020-05-05T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;Today we're announcing &lt;a href="https://oxidizeconf.com"&gt;&lt;strong&gt;Oxidize Global&lt;/strong&gt;&lt;/a&gt;, a four day and remote-only conference covering development in Embedded Rust! We want Oxidize Global to be accessible from &lt;strong&gt;wherever you live in the world&lt;/strong&gt;, so we're adjusting the format a bit to make sure everyone...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>no_std async/await - soon on stable</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/stable-async-on-embedded/"/>
    <id>https://ferrous-systems.com/blog/stable-async-on-embedded/</id>
    <published>2020-05-04T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;In about 4 weeks time from the publish date of this blog post, you'll be able to use the async/await feature in &lt;code&gt;no_std&lt;/code&gt; code on stable! In this blog post we go over the work we did to make it happen and what we learned from building a proof of concept...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>First Release of rust-analyzer</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/first-release/"/>
    <id>https://ferrous-systems.com/blog/first-release/</id>
    <published>2020-04-28T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This is a repost from &lt;a href="https://rust-analyzer.github.io/blog/2020/04/20/first-release.html"&gt;rust-analyzer blog&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;I am pleased to announce the first alpha release of rust-analyzer — a new "IDE backend" for the &lt;a href="https://www.rust-lang.org/"&gt;Rust&lt;/a&gt; programming language.
Support rust-analyzer on &lt;a href="https://opencollective.com/rust-analyzer/"&gt;Open Collective&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Wait a second…​ Haven’t people been...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>Embedded Rust pattern - Zero Sized References</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/zero-sized-references/"/>
    <id>https://ferrous-systems.com/blog/zero-sized-references/</id>
    <published>2020-04-23T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;"Zero Sized Reference" (ZSR) sounds like an impossible thing given that
&lt;code&gt;mem::size_of&lt;/code&gt; returns a non-zero value for references to Zero Sized Types
(ZST) like &lt;code&gt;&amp;amp;()&lt;/code&gt; but ZSRs can in fact be constructed and they can improve both
the performance and correctness...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrous Systems online Rust courses</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/ferrous-online-courses/"/>
    <id>https://ferrous-systems.com/blog/ferrous-online-courses/</id>
    <published>2020-04-23T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Ferrous Systems is a major Rust training provider and has been offering Rust trainings for all fields since 2015.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Having invested some time and effort over the last month to provide an online offering, we are happy to announce our online training...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>async/await on embedded Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/async-on-embedded/"/>
    <id>https://ferrous-systems.com/blog/async-on-embedded/</id>
    <published>2020-03-04T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jorge</name>
    </author>
    <summary type="html">&lt;p&gt;In a &lt;a href="https://ferrous-systems.com/blog/embedded-async-await/"&gt;previous post&lt;/a&gt; we explored what needs to be done on the &lt;code&gt;rustc&lt;/code&gt; side to
bring async/await to &lt;code&gt;no_std&lt;/code&gt; Rust.&lt;/p&gt;

&lt;p&gt;In this post we'll explore &lt;em&gt;what&lt;/em&gt; could be done once async/await is available in
&lt;code&gt;no_std&lt;/code&gt; land and why we think async/await is a big deal for embedded...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Oxidize 2020 Update</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/oxidize-2020-update/"/>
    <id>https://ferrous-systems.com/blog/oxidize-2020-update/</id>
    <published>2020-03-03T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;After an amazing response to our &lt;a href="https://ferrous-systems.com/blog/oxidize-2020/"&gt;initial announcement&lt;/a&gt;, we're ready to share more details about Oxidize 2020! Here's a quick summary of the information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;a href="https://oxidizeconf.com"&gt;Oxidize 2020&lt;/a&gt; will be &lt;strong&gt;July 17th-20th&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;July 17th: Workshops&lt;/li&gt;
      &lt;li&gt;July 18th: Conference...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene Update</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/sealed-rust-the-plan/"/>
    <id>https://ferrous-systems.com/blog/sealed-rust-the-plan/</id>
    <published>2020-02-12T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Ferrocene is now &lt;a href="https://ferrous-systems.com/blog/officially-qualified-ferrocene/"&gt;officially qualified&lt;/a&gt; and &lt;a href="https://ferrous-systems.com/blog/ferrocene-open-source/"&gt;open sourced&lt;/a&gt; 🎉🎉🎉&lt;br&gt;
Please note that Ferrocene was previously named "Sealed Rust".&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ferrocene&lt;/strong&gt; is the effort led by &lt;a href="https://ferrous-systems.com"&gt;Ferrous Systems GmbH&lt;/a&gt; to qualify the Rust language and compiler for use in mission and...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>rust-analyzer 2019 Financial Report</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-2019-financial-report/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-2019-financial-report/</id>
    <published>2020-02-11T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;div class="paragraph"&gt;
&lt;p&gt;This is a repost from &lt;a href="https://rust-analyzer.github.io/blog/2020/02/11/2019-financial-report.html"&gt;rust-analyzer blog&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This is a short financial report for &lt;a href="https://opencollective.com/rust-analyzer/"&gt;Open Collective&lt;/a&gt; money for 2019.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;We’ve got 9933 EUR on open collective after fees.
We’ve rounded that number up to 10000 (using some funds from this year) and split...&lt;/p&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>Training in London March 2020</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/training-in-london/"/>
    <id>https://ferrous-systems.com/blog/training-in-london/</id>
    <published>2020-02-09T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="/images/TrueLayer-LOGO-truecolour-transp-vertical-clearspace.png" alt="alt text" title="TrueLayer"&gt;&lt;/p&gt;

&lt;p&gt;We are happy to announce that we are now offering a Rust training for beginners in London, hosted by our partner &lt;a href="https://apply.workable.com/truelayer/"&gt;TrueLayer&lt;/a&gt;! TrueLayer builds universal APIs that allow companies to access the financial data of their end user to initiate direct bank...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Bringing async/await to embedded Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/embedded-async-await/"/>
    <id>https://ferrous-systems.com/blog/embedded-async-await/</id>
    <published>2020-02-06T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Jonas</name>
    </author>
    <summary type="html">&lt;p&gt;At Ferrous Systems, we've worked on a wide range of software in Rust, from embedded systems, to highly concurrent asynchronous applications. While the environments that these systems operate in are wildly different, they both can be boiled down to...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Oxidize 2020 - The Embedded Rust Conference</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/oxidize-2020/"/>
    <id>https://ferrous-systems.com/blog/oxidize-2020/</id>
    <published>2020-01-19T23:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;div class="paragraph"&gt;
&lt;p&gt;Oxidize 2019 was our way to put professional embedded development in Rust on the table as a serious topic.
It was a great success, selling out the full conference!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Over the last months, people have asked us if there’s going to be an Oxidize 2020...&lt;/p&gt;
&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title>rust-analyzer: Find Usages</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-find-usages/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-find-usages/</id>
    <published>2019-11-13T09:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;p&gt;This is a repost from &lt;a href="https://rust-analyzer.github.io/2019/11/13/find-usages.html"&gt;rust-analyzer blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Last month, rust-analyzer gained an exciting new feature: find usages. It was implemented by &lt;a href="https://github.com/viorina"&gt;@viorina&lt;/a&gt; in &lt;a href="https://github.com/rust-analyzer/rust-analyzer/pull/1892"&gt;#1892&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This post describes how the feature works under the hood.
It's an excellent case study to compare...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Cost of rust-analyzer</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/cost-of-rust-analyzer/"/>
    <id>https://ferrous-systems.com/blog/cost-of-rust-analyzer/</id>
    <published>2019-10-16T09:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;p&gt;This is a repost from &lt;a href="https://rust-analyzer.github.io/blog/2019/10/16/finance.html"&gt;rust-analyzer blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this post, we'll talk about financial side of the rust-analyzer project.
The goal is to find out how much rust-analyzer costs now, formulate financial goals for speeding up the development and document...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Happy First Birthday, Ferrous!</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/happy-birthday-ferrous/"/>
    <id>https://ferrous-systems.com/blog/happy-birthday-ferrous/</id>
    <published>2019-09-30T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;Ferrous Systems GmbH was fully incorporated in Berlin, on October 1st, 2018; which makes today Ferrous' first birthday!&lt;/p&gt;

&lt;p&gt;It's been a busy year (or really more than a year) for us, full of ups, downs, growth, challenges, stress, and opportunities, and...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>rust-analyzer changelog #0</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-changelog-0/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-changelog-0/</id>
    <published>2019-08-30T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey, Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Hello!&lt;/p&gt;

&lt;p&gt;This is the first instance of a monthly changelog for rust-analyzer.
This changelog also serves as a transparency measure for our
&lt;a href="https://opencollective.com/rust-analyzer/"&gt;OpenCollective&lt;/a&gt;.
We want to thank all sponsors, especially &lt;a href="https://embark.games/"&gt;Embark Studios&lt;/a&gt;, as well as all
individual contributors...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Rust Summer Classes</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-summer-classes/"/>
    <id>https://ferrous-systems.com/blog/rust-summer-classes/</id>
    <published>2019-07-08T10:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Tanks, Tyler</name>
    </author>
    <summary type="html">&lt;p&gt;Ferrous Systems has moved! Besides travelling all over the world to train people in Rust, we are now able to offer courses in our new space in Berlin. We are kicking off this new service with our Rust Summer Classes!&lt;/p&gt;

&lt;p&gt;Whether you’re just starting to...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Status of rust-analyzer: Achievements and Open Collective</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-status-opencollective/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-status-opencollective/</id>
    <published>2019-07-01T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;a href="https://github.com/rust-analyzer/rust-analyzer"&gt;rust-analyzer&lt;/a&gt; is an experimental compiler frontend for the Rust programming language. The ultimate goal for this project is to provide the perfect IDE experience for Rust, with all IDE features working flawlessly while editing code.&lt;/p&gt;

&lt;p&gt;I began working...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Ferrocene</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/sealed-rust-the-pitch/"/>
    <id>https://ferrous-systems.com/blog/sealed-rust-the-pitch/</id>
    <published>2019-06-04T22:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Ferrocene used to be called "Sealed Rust".&lt;/p&gt;

&lt;p&gt;This is the first post in a series detailing Ferrous System's plan to qualify the Rust language and compiler for use in the mission and safety-critical domains. We call this effort &lt;strong&gt;Ferrocene&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;See also...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>The design and implementation of a lock-free ring-buffer with contiguous reservations</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/lock-free-ring-buffer/"/>
    <id>https://ferrous-systems.com/blog/lock-free-ring-buffer/</id>
    <published>2019-06-03T10:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;This is the story of how &lt;a href="https://twitter.com/utaal"&gt;Andrea Lattuada&lt;/a&gt; (PhD student at ETH Zurich) and &lt;a href="https://twitter.com/bitshiftmask"&gt;James Munns&lt;/a&gt; (from Ferrous Systems) designed and implemented (two versions!) of an high-perf lock-free ring-buffer for cross-thread communication. If any of those words look scary...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Oxidize Berlin 2019 In Retrospect</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/oxidize-berlin-2019-wrapup/"/>
    <id>https://ferrous-systems.com/blog/oxidize-berlin-2019-wrapup/</id>
    <published>2019-05-20T10:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="/images/oxidize-header.jpg" alt="oxidize-header"&gt;&lt;/p&gt;

&lt;p&gt;On April 25th to 29th, &lt;a href="https://ferrous-systems.com"&gt;Ferrous Systems&lt;/a&gt; organized and hosted Oxidize - the first global Rust conference focused on embedded and IoT subjects. It included a day with three workshops and a conference day with 13 talks.&lt;/p&gt;

&lt;p&gt;Talks were practical and presented...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Graphical Debugging with Embedded Rust</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/graphical-embedded-rust-debugging/"/>
    <id>https://ferrous-systems.com/blog/graphical-embedded-rust-debugging/</id>
    <published>2019-01-25T16:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;&lt;img src="/images/gdbgui-screenshot-sm.png" alt="screen-sm"&gt;&lt;/p&gt;

&lt;p&gt;So, I recently re-discovered &lt;a href="https://gdbgui.com/"&gt;gdbgui&lt;/a&gt; - a python tool that attaches to a GDB server and provides a graphical frontend in your browser. It turns out, &lt;strong&gt;this works really well for Embedded Rust Development!&lt;/strong&gt; This also works across Windows, Mac, and Linux...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Rust Analyzer in 2018 and 2019</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/rust-analyzer-2019/"/>
    <id>https://ferrous-systems.com/blog/rust-analyzer-2019/</id>
    <published>2018-12-15T16:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Aleksey</name>
    </author>
    <summary type="html">&lt;p&gt;Hi! I am Aleksey Kladov (aka &lt;a href="https://github.com/matklad/"&gt;@matklad&lt;/a&gt;). In the past, I've worked at Jet Brains
where I've helped to create the &lt;a href="https://github.com/intellij-rust/intellij-rust"&gt;IntelliJ Rust&lt;/a&gt; plug-in, and now I am a part of
the Ferrous Systems team.&lt;/p&gt;

&lt;p&gt;I've spent a significant amount of the last year experimenting with...&lt;/p&gt;</summary>
  </entry>
  <entry>
    <title>Oxidize - The Embedded Rust Conference</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/oxidize-the-embedded-rust-conference/"/>
    <id>https://ferrous-systems.com/blog/oxidize-the-embedded-rust-conference/</id>
    <published>2018-11-25T00:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>James</name>
    </author>
    <summary type="html">&lt;p&gt;Now that we have announced &lt;a href="https://oxidizeconf.com/"&gt;OxidizeConf&lt;/a&gt;, we wanted to share a bit more detail about what is going on behind the scenes, what we have planned already, and what to expect. Some details may change as we get closer to the final date.&lt;/p&gt;

&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;We're currently...&lt;/li&gt;
&lt;/ul&gt;</summary>
  </entry>
  <entry>
    <title>The last few weeks at Ferrous Systems</title>
    <link rel="alternate" href="https://ferrous-systems.com/blog/the-last-few-weeks-at-ferrous-systems/"/>
    <id>https://ferrous-systems.com/blog/the-last-few-weeks-at-ferrous-systems/</id>
    <published>2018-10-25T10:00:00+00:00</published>
    <updated>2026-04-02T15:06:05+00:00</updated>
    <author>
      <name>Florian</name>
    </author>
    <summary type="html">&lt;p&gt;Hello everyone and welcome to our first blog post! We became a little silent after announcing this company at RustConf. This was mostly due to finalising &lt;em&gt;all the paperwork&lt;/em&gt;. We wanted to take the chance to introduce ourselves a little and talk about...&lt;/p&gt;</summary>
  </entry>
</feed>
