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