Fjall 3.0 landed this week, and it’s worth a look if you build embedded Linux projects that need reliable local persistence (think Raspberry Pi-based sensor gateways, home monitoring, or lab rigs that must keep logging when the network flakes out). Phoronix describes Fjall as a log-structured, embeddable key-value storage engine similar to RocksDB, but implemented in Rust.

Fjall 3.0 for Embedded Linux Makers

The practical maker angle: you can treat Fjall as a fast on-device “state store” for things like configuration blobs, rolling telemetry buffers, device inventories, and event queues — without standing up a database server. Fjall’s API is intentionally “map-like,” and it supports multiple keyspaces (column-family style) plus optional transactional semantics, which is handy when you want to update several collections atomically (e.g., “latest reading” + “history”).
 

Diagram showing Fjall 3.0 memtables flushing to SST files and compacting through LSM-tree levels, with SST and data-block structure callouts
An LSM-tree storage engine writes updates to a memtable, flushes immutable data to SST files, then compacts those files through on-disk levels.

If you’re already doing Rust in embedded contexts, Elektor has been leaning into that ecosystem for a while (including a dedicated Rust-on-embedded event and broader Rust coverage).


The release announcement has very comprehensive details about the release, along with benchmarks and hardware details.
 

One important boundary: Fjall is an embedded library for applications running on an OS with a file system — it’s not a microcontroller flash KV store for bare-metal no_std work. In other words, great for Pi-class devices and embedded Linux appliances; not a drop-in replacement for MCU config-in-flash patterns.
 

That said, for maker builds that generate a lot of data (audio metadata caches, image thumbnails, power-monitor time series, local dashboards), an LSM-tree engine can be a better fit than “just write JSON files,” and it can avoid some of the pain of binding to large C/C++ stacks.

What’s New in Fjall 3.0

Several concrete changes in 3.0 were highlighted: an updated block format, new APIs, increased data checksumming, and default compression for large values written to the journal; it also notes Fjall now uses zlib-rs.
 

The upstream release announcement frames v3 as a major “future-proofing” release, targeting better performance on large datasets, improved memory usage, more configuration, and a new on-disk format designed for longevity and forward compatibility, along with revamped APIs.
 

For embedded Linux developers, those points translate into the boring-but-useful stuff: fewer surprises after crashes or power loss, better long-run behavior as databases grow, and more predictable performance on constrained systems (especially when you’re writing to SD cards or modest NVMe devices).

Subscribe
Tag alert: Subscribe to the tag Rust and you will receive an e-mail as soon as a new item about it is published on our website!