- Remove deprecated feature flags
abi-* - Rename
mount2()tomount() - Rename
spawn_mount2()tospawn_mount()
Major changes:
- Change many integer-based public API parameters to strongly-typed newtypes and bitflags.
This breaking changes affects many of the methods on
Filesystem - Change
Filesystemtrait methods to use&self, and require mounted filesystems to beSend + Sync + 'static - Improve typed error handling across request/reply APIs
- Replace
Vec<MountOption>mount APIs with a structuredConfigAPI, including ACL option handling - Feature flags
abi-7-xxare now ignored and will be removed in 0.18, with compatibility checks moved to runtime behavior - Remove the old ABI-specific feature-flag surface (
abi-7-9throughabi-7-19, plus tooling/docs/examples references) - Add support for multiple event loops per session, which can be enabled via
Config::n_threads - Add experimental async API (
AsyncFilesystem)
Minor changes:
- Rename
BackgroundSession::jointoumount_and_join, returningio::Result<()>instead of panicking - Add
FUSE_DEV_IOC_CLONEsupport and improve passthrough descriptor handling (ReplyCreate,ReplyOpen,BackingId) - Improve passthrough descriptor handling (
ReplyCreate,ReplyOpen,BackingId) - Add
FileTypeconversion from stdFileType - Add option to explicitly choose
libfuse2orlibfuse3, preferlibfuse3by default - Support building without libfuse on BSD
- Remove remaining
osxfusesupport and improvemacfusecompatibility - The path to the
fusermountbinary can be specified with theFUSERMOUNT_PATHenvironment variable allow_rootorallow_othermust be enabled when usingauto_unmount- Remove deprecated
mountandspawn_mount-- usemount2andspawn_mount2instead - Update and expand documentation
Internal changes:
- Improve Linux/BSD/macOS test coverage by migrating mount tests to
fuser-testsand expanding CI - Rework session lifecycle internals (handshake/session startup, destroy ordering, and unmount error propagation)
- Add support for passthrough file descriptors
- Change
KernelConfigcapabilities flags parameters tou64 - Remove feature flags
abi-7-9throughabi-7-18 - Remove
libfusefeature flag from defaults. Linking with libfuse can be enabled with thelibfusefeature flag - Improve macfuse compatibility (note that macfuse remains untested)
- Fix unsound behavior when linking with libfuse3
- Performance optimizations
- Update documentation
- Fix crtime related panic that could occur on MacOS. See PR #322 for details.
- Add file handle argument to
getattr() - Change
poll()to take aPollHandleinstead of au64 - Add low level API for manually mounting or wrapping a fuse file descriptor into a
Session - Fix compatibility with MacFUSE 4.x
- Performance optimizations
- Add support for poll
- Add support for notifications
- ABI 7.11 support is now complete
- Remove dependency on
userscrate - Performance optimizations
- Add method to
Sessionto unmount non-SendFilesystems
- Improve an error message when using libfuse2
- Add
spawn_mount2() - Deprecate
spawn_mount()
- Improve error messages
- Support compiling with musl
- Default
link()&symlink()now return EPERM instead of ENOSYS
forgetandbatch_forgetno longer require thatAllowRootbe set
- Ensure that
Filesystem::destroyis always called, when the filesystem is unmounted - Remove request parameter from
Filesystem::destroy. - Make
fuse_forget_onepublic, so thatFilesystem::batch_forgetcan be implemented by users. - Fix
batch_forget. Previously, it always received an empty list of inodes. - Fix
MountOption::AllowRoot. Previously, using it resulted in a crash. - Fix
MountOption::AutoUnmountso that it works whenAllowRootandAllowOtherare both not set. - Make log messages more verbose (now includes the operation)
- Deprecate
mount() - Remove
FileAttr.padding. This field was added by mistake, and does nothing - Fix crash when receiving an unknown FUSE operation type
- Minor performance optimizations
- Support building with MacFuse 4.x on OSX
- Support configuring max_write & max_readahead via
KernelConfigduringinit - Support configuring filesystem timestamp granularity via
KernelConfig.set_time_granularityduringinit - Support requesting additional capability flags via
KernelConfig.add_capabilitiesduringinit
- Make
spawn_mount()safe - Change
flagsparameter ofcreate(),open(),opendir(),release(),releasedir()to be signed, so that it matches libfuse and the associated constants in libc - Change
flagsparameter ofsetxattr()to be signed, so that it matches libfuse - Change
maskparameter ofaccess()to be signed, so that it matches libfuse and the associated constants in libc - Change lock type parameter of
getlk()andsetlk()to be signed, so that it matches libfuse and the associated constants in libc - Change atime & atime_now and mtime & mtime_now parameters of
setattr()to make their relationship more obvious - Add
lock_ownerand fileflagsparameters toread()andwrite() - Add
umaskparameter tomknod(),mkdir()andcreate() - Add
KernelConfigparameter toinit()to allowFilesystemto configure the kernel connection attributes - Add support for
fallocate(),ioctl(),copy_file_range(), andlseek() - Add support for FUSE_BATCH_FORGET
- Add support for FUSE_READDIRPLUS
- Add support for FUSE_RENAME2
- Add FUSE_WRITE_KILL_PRIV flag for
write() - Add FUSE_WRITEBACK_CACHE flag
- Add FUSE_NO_OPEN_SUPPORT flag
- Add FUSE_PARALLEL_DIROPS flag
- Add FUSE_HANDLE_KILLPRIV flag
- Add FUSE_POSIX_ACL flag
- Add FUSE_ABORT_ERROR flag
- Add FUSE_NO_OPENDIR_SUPPORT flag
- Add FUSE_CACHE_SYMLINKS flag
- Add FUSE_EXPLICIT_INVAL_DATA flag
- Add FUSE_IOCTL_COMPAT_X32 flag
- Add FOPEN_CACHE_DIR flag
- Add FOPEN_STREAM flag
- Add FUSE_MAX_PAGES flag
- Add max_pages, and time_gran support to init code path (these are not currently configurable)
- Add support for ctime in
setattr() - Add support for timestamps before the unix epoch in
getattr()andsetattr()
- Enable FUSE_BIG_WRITES for ABI >= 7.10
- Add FUSE_AUTO_INVAL_DATA constant
- Add ABI 7.20 to 7.31 feature flags. Support for these are incomplete.
- Add support for building with libfuse3
- Add support for building without libfuse/libfuse3 on Linux (i.e. there's now a pure Rust implementation of all features)
- Add
mount2()with improved option API
- Added new feature
serializablethat will enable serde serialization/deserialization forFileType,FileAttr
- Forked as
fusercrate, at https://github.com/cberner/fuser - Add ATIME_NOW and MTIME_NOW support
- Add stubs for ioctl, fallocate, and poll for ABI 7.11
- Offsets to
read,writeandreaddirmethods are signed integers now (breaking change, sorry) - Link
libosxfuseon macOS,libfuseon all other systems
- Fix extended attribute handling (
getxattrandlistxattrmethods changed andReplyXattrwas added) mountnow also returns aResultsince it may fail if the session fails to run- Filenames are now passed as
&OsStrin the filesystem interface - Removed publishing of documentation on GitHub pages. Docs are now available on https://docs.rs/fuse
- Add
FileType::Socket
- Documentation of releases is build by CI now and made available at https://zargony.github.io/rust-fuse
- Fix
unmounton BSD systems - Simplified
libfusedetection withpkg-config ReplyDirectory::sizedwas removed since it was impossible to use it safely
- Update to latest Rust stable - no longer needs nightly Rust
- A filesystem implementation doesn't need to be
Sendanymore to be mounted synchronously - A filesystem implementation doesn't need to be 'static anymore to be mounted asynchronously
- CI tests are covering nightly, beta and stable Rust under OSX and Linux now
- Update to latest Rust nightly
- Fix mounting of filesystems as non-root on Linux systems
- Update to latest Rust nightly
unmountreturns aResultnow since unmounting may fail internally- Fix
unmounton Linux systems - Remove deprecated file types from interface (got rid of
std::old_io) - Introducing
FileType
- Update to latest Rust nightly
spawn_mountreturns aResultnow since starting a new thread may fail- Paths are now passed using
std::path::Path(got rid ofstd::old_path) - FUSE options are now passed as a slice of
OsStrrather than a slice of bytes
- Update to latest Rust nightly
- Update to latest Rust nightly
- Ensure that
ReplyisSendto support asynchronous processing - Add CI testing under Linux
- Update to latest Rust nightly
- Use
build.rsandpkg-configto discoverlibfuse/libosxfuse
Initial release
No versioning (based on make, cargo and crates.io didn't exist yet)