fuser-ng 0.8.2

A higher-level path-oriented FUSE filesystem library with optional async support.
Documentation
v0.8.2: 2026-08-23
  * Add the optional `async` feature with the `AsyncFilesystem` trait and `AsyncFuserNG` adapter.
  * Dispatch asynchronous filesystem operations on a caller-provided Tokio runtime handle.
  * Forward `destroy` to the target filesystem without managing runtime shutdown or task cancellation.
  * Add an async passthrough example and run the FUSE integration suite in synchronous and asynchronous configurations.
  * Keep the existing synchronous API and default dependency set unchanged.

v0.8.1: 2026-05-29
  * Add `Clone` implementations for `EntryName`, `ResolvedPath`, and `EntryRef`.
  * Make it easier for filesystem implementations to build an owned `EntryRef` from a borrowed path value.
  * No behavior changes.

v0.8.0: 2026-05-29
  * Breaking change: `Filesystem::getattr` now receives `EntryRef`, allowing implementations to distinguish lookup-time parent/name paths from inode-resolved paths.
  * Breaking change: `Filesystem::create` now receives `ResolvedPath`, giving target filesystems access to the inode selected for the created file.
  * Keep FUSE lookup accounting correct when `create` returns an inode that was already known to the inode table.
  * Roll back only the inode-table reservations made by failed `create` calls.

v0.7.2: 2026-05-03
  * Share inode-table path components internally with reference-counted entry names.
  * Avoid repeated root path allocation when resolving the root inode.
  * Keep the public path API unchanged while reducing internal path/name cloning.

v0.7.1: 2026-05-02
  * Use a dedicated `DOC.md` for the published crates.io and docs.rs package documentation.
  * Include the package documentation as the crate-level rustdoc page.
  * Hide internal inode-table and path helper APIs from the public API surface.
  * Move inode-table synchronization inside `InodeTable`, allowing shared-reference access from `FuserNG`.

v0.7.0: 2026-05-01
  * Breaking change: rename the crate to `fuser_ng` and update the API around the new `FuserNG` wrapper.
  * Update `fuser` dependency to v0.17 and adapt to its typed API.
  * Remove the internal thread pool and use fuser's native threaded event loop.
  * Add the path-oriented `EntryName`, `ResolvedPath`, and `FolderPath` API.
  * Replace the inode table with a directory-aware implementation that keeps descendant paths correct after parent directory renames.
  * Add unit coverage for inode reuse, add-or-get behavior, leaf and directory renames, unlink with open descendants, duplicate rejection, and parent/child path consistency.
  * Add a passthrough FUSE integration test covering common file, directory, rename, xattr, statfs, sync, and open-handle operations.
  * Fix `passthrufs` `fsyncdir` to fsync the file descriptor behind the `DIR` handle.

v0.6.3: 2025-11-30
  * Fixed a missing inodes.unlink in rmdir, which could cause a panic in rare circumstances

v0.6.2: 2025-09-22
  * Updated `fuser` dependency to v0.16.

v0.6.1: 2023-09-19
  * Updated `fuser` dependency to v0.13.

v0.6.0: 2022-07-12
  * Changed underlying FUSE crate to [`fuser`]https://github.com/cberner/fuser v0.11
    * Note that fuser has some additional capabilities which are not yet being exposed in this
      crate's API. These may be added in future releases.
  * breaking change: replaced `time` crate's `Timespec` with
    `std::time::SystemTime` and `std::time::Duration`.
  * breaking change: destroy() no longer takes an argument.

v0.5.1: 2020-08-16
  * Changed FilesystemMT::init default impl to succeed instead of error.

v0.5.0: 2019-05-11
  * Changed read() to use a callback instead of having implementations return data by value.
    * This allows implementations to avoid allocating memory in some cases.

v0.4.4: 2018-02-18
  * Implemented `getxtimes` and `setvolname` for macOS

v0.4.3: 2017-11-08
  * Implemented socket file type support from rust-fuse.
  * u64 -> i64 offset type changed in rust-fuse; fuse-mt's type is unchanged.

v0.4.2: 2017-10-30
  * Fixed a bug that caused 'forget' log messages on stdout.

v0.4.1: 2017-06-06
  * Added basic derives (Clone, Copy, Debug) for types as appropriate.

v0.4.0: 2017-05-29
  * Removed `FilesystemMT::lookup`. See #10.
  * Removed the `ino` field of `FileAttr`. See #12.

v0.3.0: 2017-02-01
  * Merged the `generation-managed` branch.
      * The inode table now keeps track of when it re-uses an inode.
      * This is a breaking change because the type signature of `ResultEntry` was changed to not
        have a `generation` member. This affects the `lookup`, `mknod`, `mkdir`, `symlink`,
        `link`, and `create` calls.
  * Added some tests for the inode table.

v0.2.2: 2017-01-13
  * fixed a build error on 32-bit Linux.
  * added a `VERSION` public const string with the fuse_mt package version.

v0.2.1: 2017-01-09
  * Added lots of documentation.
  * Implemented `access`, `setxattr`
  * Delay threadpool creation until it is actually used.
  * Added `setxattr`, `removexattr` in passthrufs.
  * Build fixes for MacOS.

v0.2.0: 2017-01-06
  * Merged the `lookup-refcount` branch.
      * The inode table no longer grows without bound. :)
  * Fixed readdir() so that filesystems don't need to handle the `offset` parameter at all.

v0.1.2: 2017-01-06
  * Fixed a bug in mknod(): the inode was not set in the response, nor was it added to the inode
    table.
  * Updated to rust-fuse v0.3.0
  * First release on crates.io.

v0.1.1: 2017-01-06
  * (accidental release of experimental branch; yanked)

v0.1.0: 2017-01-04
  * initial release, not yet on crates.io