Skip to content

v0.1.0

Choose a tag to compare

@sirrobot01 sirrobot01 released this 30 Jul 22:20
· 28 commits to main since this release

First tagged release. FacetFS is a set of thin, embeddable file-protocol packages for Go, in the style of golang.org/x/net/webdav: you implement one small path-based FileSystem interface and own the transport and authentication; each package speaks one protocol.

Highlights

  • Root package: the FileSystem/File contract (frozen as of this release), optional capability interfaces (SymlinkFS, SetStatFS, StatVFSFS), Dir (native directory tree via os.Root, symlink-confined), and NewMemFS for tests.
  • webdav: an http.Handler implementing RFC 4918 class 1 and 2 with exclusive Depth-0 write locks behind a pluggable LockSystem. Litmus: basic, copymove, and http suites pass 100% with zero warnings; the remaining deviations (no dead-property storage, exclusive Depth-0 locks only) are deliberate and documented in the package comment.
  • sftp: serves SFTP on an already-authenticated stream (typically an ssh.Channel for the "sftp" subsystem) from your own SSH server. Parallel positioned I/O, optional-interface gating, tested against the pkg/sftp client and OpenSSH.
  • Examples: complete runnable WebDAV (basic auth + TLS) and SFTP (host key + authorized_keys) servers showing the application-owned side.

Stability

The FileSystem contract is frozen. Optional capability interfaces may be added in later releases; existing interfaces do not change.

nfs4 and smb are planned and currently package stubs. Pre-1.0: protocol package APIs may still evolve.