mountos-native 0.3.0

Rust client for the mountOS native filesystem API. Talk to a mounted mountOS volume (a POSIX filesystem over S3, Azure Blob or Google Cloud Storage) over a local Unix socket, without FUSE.
Documentation

mountos-native

Rust client for the mountOS native filesystem API. mountOS is a cross-platform, forkable, time-traveling distributed filesystem over object storage (S3, Azure Blob, Google Cloud Storage). Each running mountOS mount serves this API on a local Unix socket. Your program talks to the mount directly, without the kernel and without FUSE.

The same operations exist in Go (github.com/mountos-io/mountos-native-sdk/go) and TypeScript (@mountos-io/native-sdk). All three are generated from one spec.

Install

cargo add mountos-native

protoc is not needed to build the crate. The crate builds on Unix systems.

Quick start

let sock = mountos_native::socket_path("/mnt/vol")?;
let c = mountos_native::Client::connect(sock)?;
let info = c.stat("data/report.csv")?;

Paths are relative to the mount root.

What you get

  • POSIX file operations: open, read, write, seek, fsync, truncate, stat, mkdir, rmdir, unlink, rename, symlink, readlink, link, chmod, utimens, statfs, access, and directory listing.
  • Calls that cost one round trip for many items: ls, stat_batch, read_file, write_file, remove_all, and File::read_batch and File::write_batch.
  • watch for change events, and warm_open and warm_read to fill the mount cache.
  • Request pipelining on a connection pool, per-call timeouts, and one error code set on every operating system.

Links