chore: release v0.4.22 - #36
Closed
MagicalTux wants to merge 3 commits into
Closed
Conversation
MagicalTux
force-pushed
the
release-plz-2026-08-17T04-28-37Z
branch
4 times, most recently
from
August 17, 2026 05:55
adc1e4e to
00ab0c0
Compare
littlefs is the fail-safe filesystem embedded flash runs on. This adds a full backend for on-disk versions 2.0 and 2.1, at the same tier as ext / FAT / AFFS: probe, read, format, and in-place mutation. The format has no superblock region, no allocation table and no inode table, so the backend is built from the two structures it does have: - Metadata pairs (src/fs/littlefs/mdir.rs): two blocks holding a revision count and an append-only log of CRC-terminated commits. `fetch` replays a pair's log — tags, create/delete splices, tails, global-state deltas, lfs2.1 forward-CRCs — into a flat view; committing writes the whole state back as a compaction into the pair's stale block and swaps it, splitting across further pairs when the contents outgrow a block. That is the operation littlefs itself performs whenever a block fills up, so the result is always a volume a stock littlefs can mount and keep appending to. - CTZ skip-lists (src/fs/littlefs/ctz.rs): files too large to inline. Because every block points backwards, a write rebuilds the list only from the block holding the first changed byte — earlier blocks keep their contents and their pointers — which is the copy-on-write shape the format is designed around. Block allocation (src/fs/littlefs/alloc.rs) reconstructs the in-use map by traversing the threaded pair list and each file's skip-list, as littlefs does, then keeps it exact as blocks are claimed and released. Wired into `create -t littlefs` (with block_size / block_count / prog_size / version / name_max / inline_max knobs), the TOML spec both bare and per-partition, `repack --fs-type littlefs` on the random-access, streamed-tar, layered and `--shrink` paths, `info`, `add`/`rm`, the in-memory authoring surface, and the wasm build. littlefs stores no POSIX metadata: no modes, owners, timestamps, symlinks or device nodes. Modes are synthesised on read and symlink / device creation reports Unsupported so a repack sink skips those entries instead of mangling them. littlefs user attributes do round-trip, as `user.littlefs.<type>` extended attributes. Validation runs against the reference C implementation through littlefs-python (tests/littlefs_external.rs, skipped when the module isn't installed): images we write mount and read identically there, images it writes read identically here, both sides can keep writing to an image the other produced mid-edit, an in-place patch / append / truncate of a 120 KB file reads back correctly under its reader, and the two implementations agree exactly on which blocks are live. The backend also joins the randomised fs_fuzz harness and the reopen-mutate sweep. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MagicalTux
force-pushed
the
release-plz-2026-08-17T04-28-37Z
branch
from
August 17, 2026 13:46
00ab0c0 to
de4cb1d
Compare
The two ASCII figures in the tag and CTZ module docs were reproduced from littlefs's SPEC.md, which is BSD-3-Clause. Nothing else in the backend came from upstream sources — no C was copied and no code was vendored — so replace them with our own renderings (a bit-range list, and a table of the pointers each block index stores) and keep the pointer to upstream's spec as a reference rather than as copied text. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MagicalTux
force-pushed
the
release-plz-2026-08-17T04-28-37Z
branch
from
August 17, 2026 13:56
de4cb1d to
6cace32
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 New release
fstool: 0.4.21 -> 0.4.22Changelog
This PR was generated with release-plz.