Two widely used versions exist: 2 and 3. While version 3 is currently being adopted by more and more projects, most FUSE file systems tend to use version 2 at this point.
Besides API versions, there are also two API levels: The high level FUSE API and the low level FUSE API.
Not all FUSE libraries and bindings offer both API versions and/or API levels. This must be taken into consideration when developing a cross-platform FUSE file system.
While FUSE is (at least in the Unix world) a Kernel feature, several user space libraries exist for easy access. libfuse
acts as the reference implementation.
- libfuse (Linux, FreeBSD)
- libfuse (OpenBSD)
- librefuse (NetBSD) through PUFFS
- FUSE for macOS (OSX)
- MacFUSE (OSX), no longer maintained
- WinFsp (Windows)
- Dokany (Windows)
- Dokan (Windows), no longer maintained
In summary, FUSE is supported on Linux, FreeBDS, OpenBSD, NetBSD, Mac OS X and Windows. APIs are (more or less) compatible. FUSE is also known to work on OpenSolaris/Illumos, Minix and Android.
Several competing Python bindings for FUSE exist. Some are unmaintained. Some are offering access only to the high level API or to the low level API. Some are not suitable for cross-platform use.
- fuse-python (used by 90+)
- llfuse (used by 30+), officially no longer maintained
- pyfuse3 (used by 3+)
- fusepy (used by 300+), practically no longer maintained
- refuse (used by 2+)
Getting precise usage statistics is not trivial. The above numbers are based partially on GitHub's "used by" statistics and partially on current numbers from libraries.io.
python-fuse
(high level API, versions 2) and python-llfuse
(low level API, version 2) were developed by the original libfuse
authors - specifically as bindings to libfuse
. While python-fuse
is still being maintained, support for python-llfuse
has been dropped. It is superseded by pyfuse3
(low level API, version 3), which is also being developed by the libfuse
team. pyfuse3
is the currently only async-enabled Python FUSE package.
fusepy
is the currently only viable cross-platform Python implementation. It offers both low and high level API bindings in version 2 where possible. Its is based on ctypes
. Development seized in 2016 and was only briefly resumed in 2018. Several forks attempt to continue development, e.g. refuse
.
- 2013-10-30: Writing a FUSE filesystem in Python