v0.1.0
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/Filecontract (frozen as of this release), optional capability interfaces (SymlinkFS,SetStatFS,StatVFSFS),Dir(native directory tree via os.Root, symlink-confined), andNewMemFSfor tests. - webdav: an
http.Handlerimplementing RFC 4918 class 1 and 2 with exclusive Depth-0 write locks behind a pluggableLockSystem. 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.