Postcard 2.0: Looking for Sponsors!


Quoting from the README:

Postcard is a #![no_std] focused serializer and deserializer for Serde. Postcard aims to be convenient for developers in constrained environments, while allowing for flexibility to customize behavior as needed.

Postcard released the first stable version, 1.0, in mid-2022. We are now working on a 2.0 release, and are looking for sponsors to make this work possible. If your company uses postcard, and would like to sponsor a portion of this effort, please send us an email!

Postcard is widely used in the embedded Rust ecosystem, but also in projects like ICU4X, bevy, and wasmtime, to efficiently encode and decode data.

Read on for more details about the 2.0 release and the future of postcard.

...read more

Thoughts on SPI flash and filesystems


I've been idly thinking about writing a simple (Q)SPI flash oriented filesystem lately. I think this is an interesting niche, the two file systems I am aware of in this space are:

To be clear, a general purpose file system is not anything I've designed before! I've designed simpler "slot based" or "log ring" filesystems, usually treating the whole flash as a ring buffer (for wear leveling), and overwriting the oldest data. This is much more similar to something like the sequential-storage crate by Dion Dokter from TweedeGolf.

...read more

Chats with James 017 - On the Road: RustNL & Oxidize


The “On the Road” episode has two parts, covering different Rust conferences in May 2024. The first section is from RustNL in Delft, the Netherlands, where James interviews Laura and Jonathan, some of the organizers of the event, on their history with Rust and the struggles and successes of putting on these conferences.

The second section of this episode comes from the Oxidize Conference 2024, held in Berlin Germany - here James interviews Jonathan Pallant about the nostalgia of classic computers, the theory of embedded systems and the up and down aspects of building computers for fun.

The RustNL part was recorded on May 8th, 2024, and the Oxidize part on May 30th, 2024.

For more episodes, show notes and the transcript, visit jamesmunns.com/podcast.

...read more

Building Plain Old Data from Scratch


I made an interesting discovery in Rust last weekend while messing with postcard:

enums are the only "plain" data type (I'm aware of) in Rust that you can't build "from scratch". When I say "from scratch", I mean using unsafe methods to manually initialize each field, say in a MaybeUninit, then call assume_init().

There are other "complex" data types, like trait objects, you can't necessarily build from scratch, but these are rarely relevant when serializing and deserializing. Even items on the heap can generally be built "in place" using various unsafe methods.

discuss on /r/rust

...read more

Thoughts on Postcard and writing a network protocol


ℹ️ These are misc notes and thoughts towards figuring out to handle the diverse transports that postcard-rpc may traverse. As of 2024-05-14, USB is the most robustly supported transport, but we'll want to expand this to support serial transport, and particularly support cases where one side (the client) isn't necessary on a std based OS.

One way to approach this is the traditional-ish OSI or TCP/IP layered model (flavored in my personal opinion):

  • application
  • postcard-rpc
  • postcard
  • flow control, error detection, acks - FACED
  • framing
  • wire control
...read more
Next > >