Skip to content

v0.1.0

Latest

Choose a tag to compare

@ivarvong ivarvong released this 12 Jun 19:16

First public release.

A protocol-based virtual filesystem for Elixir. Mount git repos, in-memory scratch space, and database-backed application state behind one value, then thread that value through your agent loop the way Plug.Conn flows through a request pipeline.

Highlights

  • VFS.Mountable protocol — pluggable virtual filesystem with state-threading reads. Every op (reads included) returns the updated impl, so lazy backends keep their caches.
  • %VFS{} mount table with longest-prefix routing; itself a VFS.Mountable, so mount tables nest.
  • VFS.Memory in-memory backend (read+write), plus VFS.Skeleton / VFS.Default for backend authors.
  • Structured errors%VFS.Error{kind, path, mount, message}; pattern-match on POSIX-style :kind atoms.
  • Lazy by defaultstream_read/3 is the primary read primitive (:chunk_size, :byte_range, :line_range); VFS.read_file/2 is derived. walk/3 is fully lazy and composes with Stream.take/2 over unbounded backends.
  • Telemetry[:vfs, _, _] events on every data-flow op, OTel-ready.
  • Fail-fast trust boundariesVFS.mount/3 validates the backend implements the protocol at mount time.

Quality bar

  • 48 doctests / 52 properties / 332 tests, 100% line coverage, 97.7% mutation kill rate
  • Conformance suite parametrized over every shipped backend
  • CI matrix: Elixir 1.16.3 (floor) through 1.20-rc, plus a release-style protocol-consolidation leg

Requires Elixir 1.16+. Sole runtime dependency: telemetry.

See CHANGELOG.md for the full release notes, including the pre-release audit history.