Go-FUSE is a fully native Go library for writing filesystems in
userspace. It's available from
Since the last update, I have been stress-testing it with highly
parallel filesystem processes, and by implementing a distributed
compilation system on top of it. Both have led to many bugfixes for
shaking out race-conditions and fixing obscure fs semantics.
The biggest news is a new redesign that allows path based file systems
to implement true hard links, something not even the original libfuse
* Added a NodeFileSystem interface. A NodeFileSystem defines an file
system in terms of the behavior of its inodes. Traditional path
based FileSystems are implemented as a particular NodeFileSystem.
* Support for true hardlinks, in both NodeFileSystem and the
traditional path based FileSystem.
* Support for notify: FS daemons can now notify the kernel when files
have changed. This allows network file systems to respond to pushed
updates, without giving up attribute and content caching.
* Pass a Context argument into FileSystem API method, so file systems
can enforce UID/PID based permission checking.
* Support for sequential 32-bit inode numbers. This is needed for
compatibility with 32-bit programs that use stat() rather than
* UnionFs: complete support for all file operations (hardlink, directory
* UnionFs: many bugfixes to deal with weird saving strategies and
Han-Wen Nienhuys - hanwen@... - http://www.xs4all.nl/~hanwen