# macfuse changelog > File system integration - Vendor: macfuse - Category: Developer Tools - Official site: https://macfuse.github.io/ - Tracked by: What's New (https://whatsnew.fyi/product/macfuse) - Harvested from: GitHub (macfuse/macfuse) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### macfuse-5.3.3 — macFUSE 5.3.3 - Date: 2026-07-04 - Version: macfuse-5.3.3 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.3 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.3 - **changed** — Update build process to use Xcode 26.6 (macOS 26.5 SDK) - **changed** — Improve daemonization compatibility for file systems using the FSKit backend through libfuse and libfuse3 - **changed** — Update the kernel extension version to 5.3.3 - **added** — Add support for interrupting readers blocked on the FUSE device - **added** — Add function MFChannelInterrupt() to interrupt threads blocked in MFChannelCopyNextMessage() and MFChannelWaitForNextMessage() without closing the channel - **changed** — Make channel receives interruptible by SIGHUP, SIGINT, SIGTERM, and SIGPIPE - **added** — Add a cancel-safe C trampoline for Swift API entry points - **changed** — Use XPC lightweight code requirements on macOS 14.4 and later when verifying the mount service - **changed** — Defer the actual macOS mount process until first session use in libfuse - **changed** — Avoid forking in fuse_daemonize() after the macOS mount process has started in libfuse - **changed** — Improve signal handling on macOS in libfuse by requesting an interrupt from the signal handler and performing the actual unmount from regular library code - **changed** — Improve multithreaded loop teardown in libfuse by interrupting the MFChannel after cancelling worker threads - **changed** — Replace dispatch_semaphore_t with a pthread-based fallback and use timed waits where signal responsiveness is required in libfuse - **changed** — Defer the actual macOS mount process until first session use in libfuse3 - **changed** — Avoid forking in fuse_daemonize() after the macOS mount process has started in libfuse3 - **changed** — Improve signal handling on macOS in libfuse3 by routing interrupts through the normal unmount path - **changed** — Improve multithreaded loop teardown in libfuse3 by interrupting the MFChannel after cancelling worker threads - **changed** — Replace dispatch_semaphore_t with a pthread-based fallback and use timed waits where signal responsiveness is required in libfuse3 ###### General * Update build process to use Xcode 26.6 (macOS 26.5 SDK) * Improve daemonization compatibility for file systems using the `FSKit` backend through `libfuse` and `libfuse3` ###### Kernel Extension (Kernel Backend) * Update the kernel extension version to 5.3.3 * Add support for interrupting readers blocked on the FUSE device This is used by `MFMount.framework` to wake worker threads during teardown. ###### `MFMount.framework` * Add function `MFChannelInterrupt()` This allows callers to interrupt threads blocked in `MFChannelCopyNextMessage()` and `MFChannelWaitForNextMessage()` without closing the channel. When interrupted, both functions return an error and set `errno` to `EINTR`. * Make channel receives interruptible by `SIGHUP`, `SIGINT`, `SIGTERM`, and `SIGPIPE` * Add a cancel-safe C trampoline for Swift API entry points Swift code now runs with `pthread` cancellation disabled. Pending cancellation is delivered after returning from Swift to the C trampoline in the framework. * Use XPC lightweight code requirements on macOS 14.4 and later when verifying the mount service * Please note that parts of the `MFMount.framework` API may still change in future releases. ###### `libfuse` * Defer the actual macOS mount process until first session use This prevents XPC, `DiskArbitration`, `CoreFoundation`, and `MFMount` state from being created before daemonization in the normal `fuse_main()` flow. * Avoid forking in `fuse_daemonize()` after the macOS mount process has started * Improve signal handling on macOS by requesting an interrupt from the signal handler and performing the actual unmount from regular library code * Improve multithreaded loop teardown by interrupting the `MFChannel` after cancelling worker threads * Replace `dispatch_semaphore_t` with a `pthread`-based fallback and use timed waits where signal responsiveness is required ###### `libfuse3` * Defer the actual macOS mount process until first session use This prevents XPC, `DiskArbitration`, `CoreFoundation`, and `MFMount` state from being created before daemonization in the normal `fuse_main()` flow. * Avoid forking in `fuse_daemonize()` after the macOS mount process has started * Improve signal handling on macOS by routing interrupts through the normal unmount path For `custom_io` sessions, interrupts fall back to the regular session-exit behavior because `libfuse3` does not own the mount lifecycle. * Improve multithreaded loop teardown by interrupting the `MFChannel` after cancelling worker threads * Replace `dispatch_semaphore_t` with a `pthread`-based fallback and use timed waits where signal responsiveness is required ###### Sponsor * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.3.2 — macFUSE 5.3.2 - Date: 2026-06-17 - Version: macfuse-5.3.2 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.2 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.2 - Labels: Pre-release - **added** — Include Swift compatibility library in FSModule for macOS 15 - **added** — Include Swift compatibility library in MFMount.framework for macOS 15 and earlier - **changed** — Update the swift-collections package from version 1.4.1 to 1.6.0 ###### `FSModule` (`FSKit` Backend) * Include Swift compatibility library The file system extension requires `libswiftCompatibilitySpan.dylib` on macOS 15. ###### `MFMount.framework` * Include Swift compatibility library The `swift-collections` package requires `libswiftCompatibilitySpan.dylib` on macOS 15 and earlier. This addresses macfuse/macfuse#1176. * Update the `swift-collections` package from version 1.4.1 to 1.6.0 * Please note that parts of the `MFMount.framework` API may still change in future releases. ###### Sponsor * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.3.1 — macFUSE 5.3.1 - Date: 2026-06-13 - Version: macfuse-5.3.1 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.1 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.1 - Labels: Pre-release - **added** — Add initial support for macOS 27 - **added** — Add initial support for Xcode 27 - **changed** — Use the node identifier and generation as the authoritative handle for file system items instead of the inode number, performing FUSE_LOOKUP to get authoritative handle of directory entries returned by FUSE_READDIR - **fixed** — Fix a bug in open file handle management in FSModule - **changed** — Improve performance when preparing messages sent to the file system server - **changed** — Improve performance when enumerating directories by using FUSE_BATCH_FORGET - **changed** — Update the kernel extension version to 5.3.1 - **fixed** — Remove the file system item from the name cache when handling FUSE_NOTIFY_INVAL_ENTRY to ensure the next lookup triggers a FUSE_LOOKUP request - **fixed** — Address an incompatibility with the macOS 27 SDK included in Xcode 27.0 beta 1 - **deprecated** — Turn MFChannelCreateWithDeviceFileDescriptor() into a weak import as this function will be removed once MFMount() supports mounting volumes using the kernel backend - **fixed** — Fix a path deadlock in the high level API when using VNOP_MONITOR by adding the missing free_path() call in fuse_lib_monitor() in libfuse - **fixed** — Fix a path deadlock in the high level API when using VNOP_MONITOR by adding the missing free_path() call in fuse_lib_monitor() in libfuse3 ###### General * Add initial support for macOS 27 * Add initial support for Xcode 27 ###### `FSModule` (`FSKit` Backend) * Use the node identifier and generation as the authoritative handle for file system items instead of the inode number. Perform `FUSE_LOOKUP` to get authoritative handle of directory entries returned by `FUSE_READDIR` Previous releases assumed that the node identifier and inode number were identical, as is the case when using the high level libfuse API without `use_ino`. This change removes that shortcut and resolves macfuse/macfuse#1166 and macfuse/macfuse#1167. * Improve stability by fixing a bug in open file handle management * Improve performance when preparing messages sent to the file system server * Improve performance when enumerating directories by using `FUSE_BATCH_FORGET` ###### Kernel Extension (Kernel Backend) * Update the kernel extension version to 5.3.1 * Remove the file system item from the name cache when handling `FUSE_NOTIFY_INVAL_ENTRY` This ensures that the next lookup triggers a `FUSE_LOOKUP` request and resolves macfuse/macfuse#1160. * Address an incompatibility with the macOS 27 SDK included in Xcode 27.0 beta 1 ###### `MFMount.framework` * Turn `MFChannelCreateWithDeviceFileDescriptor()` into a weak import This function will be removed once `MFMount()` supports mounting volumes using the kernel backend. Check that the symbol is available before calling it. * Please note that parts of the `MFMount.framework` API may still change in future releases. ###### `libfuse` * Fix a path deadlock in the high level API when using `VNOP_MONITOR`. This adds the missing `free_path()` call in `fuse_lib_monitor()` and resolves macfuse/macfuse#1168. ###### `libfuse3` * Fix a path deadlock in the high level API when using `VNOP_MONITOR`. This adds the missing `free_path()` call in `fuse_lib_monitor()` and resolves macfuse/macfuse#1168. ###### Sponsor * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.3.0 — macFUSE 5.3.0 - Date: 2026-06-07 - Version: macfuse-5.3.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.0 - Labels: Pre-release - **changed** — Update build process to use Xcode 26.5 (macOS 26.5 SDK) - **added** — Introduce a new channel API for exchanging FUSE messages with FUSE backends that significantly improves I/O performance for volumes mounted using the FSKit backend - **added** — Add support for the new channel API provided by MFMount.framework in FSModule (FSKit Backend) - **added** — Add support for the new FUSE_INIT flags FUSE_DARWIN_REPLY_BUF and FUSE_DARWIN_PAYLOAD_BUF to allow for zero-copy reads and writes - **changed** — Substantially improve I/O performance with reading files up to 15 times faster than in previous releases - **fixed** — Improve stability by addressing a race condition when accessing cached volume statistics that could cause the file system extension to crash - **added** — Add MFChannelRef for message-oriented communication with a backend - **added** — Add MFMessageRef for inspecting received FUSE messages - **added** — Add support for transport-provided reply buffers, allowing read replies to be written directly into the destination buffer - **added** — Add blocking, non-blocking, and polling-style receive APIs in MFMount.framework - **added** — Add support for the new channel API provided by MFMount.framework in libfuse - **added** — Add support for the new channel API provided by MFMount.framework in libfuse3 ###### General * Update build process to use Xcode 26.5 (macOS 26.5 SDK) * Introduce a new channel API for exchanging FUSE messages with FUSE backends. The new API significantly improves I/O performance for volumes mounted using the `FSKit` backend. ###### `FSModule` (`FSKit` Backend) * Add support for the new channel API provided by `MFMount.framework` * Add support for the new `FUSE_INIT` flags `FUSE_DARWIN_REPLY_BUF` and `FUSE_DARWIN_PAYLOAD_BUF`. The flags allow for zero-copy reads and writes. * Substantially improve I/O performance. Tests with the `LoopbackFS` reference file system show that reading files is up to 15 times faster than in previous releases. * Improve stability by addressing a race condition when accessing cached volume statistics that could cause the file system extension to crash. ###### `MFMount.framework` * Introduce a new channel API for exchanging FUSE messages with the `FSKit` Backend and the Kernel Backend. `MFMount.framework` is intended for developers porting FUSE user-space libraries to macOS, or adapting existing libraries to support mounting volumes using the `FSKit` backend. The framework handles the mount operation and provides a C API for communicating with the backend. The new channel API exposes FUSE messages as borrowed buffers instead of requiring callers to copy each message into a single contiguous buffer. This allows for zero-copy reads and writes for large payloads when using the `FSKit` backend. * Add `MFChannelRef` for message-oriented communication with a backend. A channel is associated with a volume when the volume is mounted. * Add `MFMessageRef` for inspecting received FUSE messages * Add support for transport-provided reply buffers, allowing read replies to be written directly into the destination buffer * Add blocking, non-blocking, and polling-style receive APIs Please note that parts of the `MFMount.framework` API may still change in future releases. ###### `libfuse` * Add support for the new channel API provided by `MFMount.framework` ###### `libfuse3` * Add support for the new channel API provided by `MFMount.framework` ###### Sponsors * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.2.0 — macFUSE 5.2.0 - Date: 2026-04-09 - Version: macfuse-5.2.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.2.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.2.0 - **changed** — Update build process to use Xcode 26.4 (macOS 26.4 SDK) - **added** — Introduce a new open source API for mounting volumes using the FSKit backend that enables fully sandboxed file systems - **changed** — FSKit backend mount operation is now performed over XPC instead of relying on fork()/exec() - **added** — Add support for a file system item's allocation size in FSModule FSKit backend - **fixed** — Add a workaround for an FSKit/PluginKit issue that could prevent macFUSE volumes from being mounted after re-registering an already registered file system extension - **removed** — Remove the obsolete broker launch daemon io.macfuse.app.launchservice.broker - **changed** — Improve the built-in log command to detect whether the output destination supports colored output - **changed** — Improve the built-in install command to support selecting which components to install with privileged-helpers, file-system-extensions, and all options - **changed** — Update libfuse3 to version 3.18.2 - **fixed** — Fix a bug when handling FUSE_RENAME messages with FUSE_DARWIN_CAP_RENAME_EXT enabled that could cause the source and destination file names to be parsed incorrectly ###### General * Update build process to use Xcode 26.4 (macOS 26.4 SDK) * Introduce a new open source API for mounting volumes using the `FSKit` backend. The new API enables fully sandboxed file systems, which was not previously possible. * The actual mount operation is performed over XPC. This means the `FSKit` backend does no longer rely on `fork()`/`exec()` to mount volumes. * The new API is already used by `libfuse` and `libfuse3` * When sandboxing your file system server, add a Mach lookup exception for the `io.macfuse.mount` service * The new `MFMount.framework` is located in `/Library/Filesystems/macfuse.fs/Contents/Frameworks` * Please note that the new API may change in future releases ###### `FSModule` (`FSKit` Backend) * Add support for a file system item's allocation size. Sparse files are not currently supported, so the value of this attribute is the item's size. * Add a workaround for an `FSKit`/`PluginKit` issue that could prevent macFUSE volumes from being mounted after re-registering an already registered file system extension, requiring a restart of the `FSKit` subsystem. * Remove the obsolete broker launch daemon `io.macfuse.app.launchservice.broker`, which was previously used to establish a connection between the file system extension and the file system server. * Improve the built-in `log` command to detect whether the output destination supports colored output. This is useful when piping log output to a file. ``` % /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse log stream Executing /usr/bin/log stream --debug --info --predicate "subsystem in { 'com.apple.FSKit', 'com.apple.LiveFS', 'io.macfuse' }" --color always Filtering the log data using "subsystem IN {"com.apple.FSKit", "com.apple.LiveFS", "io.macfuse"}" ... ``` * Improve the built-in `install` command to support selecting which components to install. Supported options are `privileged-helpers`, `file-system-extensions`, and `all`. Omitting the component is equivalent to specifying `all`. ``` % /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse install --help USAGE: macfuse install [--components ...] [--force] OPTIONS: -c, --components Components to install (default: all) -f, --force -h, --help Show help information. ``` * Introduce foundational changes in preparation for new features in macFUSE 5.3 ###### `libfuse` * Use new mount API `MFMount.framework` for mounting volumes using the `FSKit` backend ###### `libfuse3` * Update `libfuse3` to version 3.18.2 * Use new mount API `MFMount.framework` for mounting volumes using the `FSKit` backend * Fix a bug when handling `FUSE_RENAME` messages with `FUSE_DARWIN_CAP_RENAME_EXT` enabled that could cause the source and destination file names to be parsed incorrectly. ###### Sponsor * Work on this release has been sponsored by [uint24](https://github.com/uint24) and others * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.1.3 — macFUSE 5.1.3 - Date: 2025-12-23 - Version: macfuse-5.1.3 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.3 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.3 - **changed** — Update build process to use Xcode 26.2 (macOS 26.2 SDK) - **changed** — Update kernel extension to version 5.1.3 - **fixed** — Add special handling for the O_EXEC open flag to prevent a kernel panic by treating it internally as O_RDONLY - **changed** — Introduce foundational changes in FSModule (FSKit Backend) in preparation for new features in macFUSE 5.2 - **fixed** — Fix an issue where the extended attribute name passed to the setxattr handler was always an empty string by accounting for the additional position field and padding in FUSE_COMPAT_SETXATTR_IN_SIZE ###### General * Update build process to use Xcode 26.2 (macOS 26.2 SDK) ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.1.3 * Add special handling for the `O_EXEC` open flag to prevent a kernel panic. Internally, `O_EXEC` is treated as `O_RDONLY`, meaning a readable file descriptor will be requested from the file system server. For details, see macfuse/macfuse#1130. ###### `FSModule` (`FSKit` Backend) * Introduce foundational changes in preparation for new features in macFUSE 5.2 ###### `libfuse3` * Fix an issue that resulted in the extended attribute name passed to the `setxattr` handler always being an empty string. On macOS, `FUSE_COMPAT_SETXATTR_IN_SIZE` needs to account for the additional `position` field and its associated padding. For details, see macfuse/macfuse#1134. ### macfuse-5.1.2 — macFUSE 5.1.2 - Date: 2025-11-20 - Version: macfuse-5.1.2 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.2 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.2 - **changed** — Improve automatic file system extension registration with support for manual registration using the install subcommand and a --force flag to remove duplicate extensions - **added** — Add support for streaming logs using the log subcommand - **fixed** — Resolve compatibility issues with legacy versions of macOS by removing the io.macfuse.app.launchservice.broker launch service on unsupported versions ###### `FSModule` (`FSKit` Backend) * Improve automatic file system extension registration The file system extensions are registered automatically before mounting a volume and can be registered manually using the `install` subcommand. The `--force` flag removes any duplicate extensions before registering the current set. ``` /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse install --force ``` * Add support for streaming logs using the `log` subcommand ``` /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse log stream ``` * Resolve compatibility issues with legacy versions of macOS Previous releases installed the `io.macfuse.app.launchservice.broker` launch service on unsupported versions of macOS, which could result in the service crashing and the installer hanging. This release removes the service on unsupported versions of macOS. ### macfuse-5.1.1 — macFUSE 5.1.1 - Date: 2025-11-08 - Version: macfuse-5.1.1 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.1 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.1 - **changed** — Update kernel extension to version 5.1.1 - **changed** — Disable VNOP_MONITOR support on macOS 15 to maintain compatibility with macOS versions before 15.4 ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.1.1 * Disable `VNOP_MONITOR` support on macOS 15. `VNOP_MONITOR` was introduced in macOS 15.4. Disable the feature on macOS 15 to maintain compatibility with macOS versions before 15.4. ### macfuse-5.1.0 — macFUSE 5.1.0 - Date: 2025-10-30 - Version: macfuse-5.1.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.0 - Labels: Pre-release - **changed** — Update build process to use Xcode 26.1 (macOS 26.1 SDK) - **changed** — Update LoopbackFS demo file systems and add a libfuse3 variant (LoopbackFS-libfuse3-C) - **added** — Add new HelloFS demo file system (HelloFS-Framework-Swift) as a minimal Hello World example in 40 lines of code - **changed** — Update kernel extension to version 5.1.0 - **added** — Add support for the VNOP_MONITOR file system callback, available since macOS 15, which notifies file systems when the number of watchers for a file system item changes - **added** — Send FUSE_MONITOR message to the file system server when VNOP_MONITOR callback is invoked, with FUSE_MONITOR_BEGIN flag for new watchers and FUSE_MONITOR_END flag when watchers stop monitoring - **fixed** — Fix a bug in VNOP_LINK that can cause a deadlock when a file system uses the same nodeid to represent both the original file system item and its link - **fixed** — Fix a bug in VNOP_MNOMAP that can cause a deadlock when VNOP_WRITE callback calls VNOP_MNOMAP - **fixed** — Fix f_mntfromname (fsname mount option) being truncated at 90 bytes; now supports names of up to 1024 bytes including the terminating null character - **added** — Add support for mounting non-local volumes (typically distributed file systems) on macOS 26 via FSModule (FSKit Backend) - **added** — Add support for mount option local to treat volumes as local (typically physically attached storage), supported on macOS 15.4 and later - **added** — Add support for mount option volname=NAME to specify a name for the volume being mounted - **added** — Add new monitor callback handler in libfuse and implement support for the FUSE_MONITOR message - **added** — Add support for mounting file systems using the FSKit backend via libfuse3 with mount option -o backend=fskit - **added** — Add new monitor callback handler in libfuse3 and implement support for the FUSE_MONITOR message - **added** — Add utimens API extension for macOS in libfuse3 that calls the utimens handler with three time stamps (access, modification, and backup) when FUSE_DARWIN_ENABLE_EXTENSIONS is set to 1 - **fixed** — Fix a bug in the statfs API extension for macOS in libfuse3 and add missing fuse_lib_statfs$DARWIN() handler - **fixed** — Fix a bug in the threadid module in libfuse3 that prevented several file system callback handlers from being invoked - **changed** — Adapt fuse_clone_chan_fd_default() for macOS to not associate new FUSE device file descriptors with the original ones - **changed** — Rename crtime (creation time) to btime (birth time) in libfuse3 macOS API extensions - **changed** — Enable Clang module support in Framework to improve interoperability with Swift - **changed** — Drop the GM type name prefix in Framework Swift support - **changed** — Make UserFileSystem.MoveOptions more idiomatic for Swift - **added** — Add FileAttributeKey extension in Framework defining additional framework-specific attribute keys - **changed** — Turn NSObject categories UserFileSystemLifecycle, UserFileSystemOperations, and UserFileSystemResourceForks into actual protocols - **removed** — Remove unsupported exchangedata() callback handler which has been superseded by renamex_np() and unsupported since macOS 11 - **deprecated** — Deprecate the exchangeDataOfItemAtPath:withItemAtPath:error: delegate method - **fixed** — Fix a layout bug on macOS 26 and modernize layout in System Settings ###### General * Update build process to use Xcode 26.1 (macOS 26.1 SDK) * Update demo file systems * Update `LoopbackFS` demo file systems and add a `libfuse3` variant (`LoopbackFS-libfuse3-C`) * Add new `HelloFS` demo file system (`HelloFS-Framework-Swift`). It serves as a minimal "Hello World" example — in just 40 lines of code. * For more information, see the [demo](https://github.com/macfuse/demo) repository. ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.1.0 * Add support for the `VNOP_MONITOR` file system callback The `VNOP_MONITOR` callback is available since macOS 15 and notifies file systems when the number of watchers for a file system item changes. This allows distributed file systems to subscribe only to events for items that are actively being watched, improving efficiency and reducing unnecessary event handling. * When the `VNOP_MONITOR` callback is invoked, the kernel extension sends a `FUSE_MONITOR` message (`struct fuse_monitor_in`) to the file system server running in user space * The `FUSE_MONITOR_BEGIN` flag is set when a new watcher starts monitoring the item * The `FUSE_MONITOR_END` flag is set when a watcher stops monitoring the item * Fix a bug in `VNOP_LINK` that can cause a deadlock in case a file system uses the same `nodeid` to represent both the original file system item and its link. In this case, trying to lock the link in `VNOP_LINK` resulted in a deadlock. For more information, see macfuse/macfuse#1120. * Fix a bug in `VNOP_MNOMAP` that can cause a deadlock. The `VNOP_WRITE` callback might end up calling the `VNOP_MNOMAP` callback. Attempting to lock the already locked file system item in the `VNOP_MNOMAP` callback caused the deadlock. * Fix `f_mntfromname` (`fsname` mount option) being truncated at 90 bytes. `f_mntfromname` supports names of up to 1024 bytes (including the terminating `\0` character). For more information, see macfuse/macfuse#1123. ###### `FSModule` (`FSKit` Backend) * Add support for mounting "non-local" volumes (typically distributed file systems) on macOS 26. Mounting "local" volumes (typically physically attached storage) is supported on macOS 15.4 and later macOS versions. * Add support for mount option `local`. macOS is more aggressive in dealing with "local" volumes. Treat this option as experimental. * Add support for mount option `volname=NAME`, where `NAME` is a string. You can use the `volname` option to specify a name for the volume being mounted. ###### `libfuse` * Add new `monitor` callback handler and implement support for the new `FUSE_MONITOR` message. For more information, see "Kernel Extension". ###### `libfuse3` * Add support for mounting file systems using the `FSKit` backend. By default, the kernel backend is used to mount volumes. When specifying the mount option `-o backend=fskit`, `libfuse3` will use the `FSKit` backend to mount the file system. For more information, see [FUSE Backends](https://github.com/macfuse/macfuse/wiki/FUSE-Backends). * Add new `monitor` callback handler and implement support for the new `FUSE_MONITOR` message. For more information, see "Kernel Extension". * Add `utimens` API extension for macOS. When `FUSE_DARWIN_ENABLE_EXTENSIONS` is set to 1 , the `utimens` handler is called with three time stamps — the file's access, modification, and backup time stamps. By default, the handler is called with the file's access and modification time stamps. * Fix a bug in the `statfs` API extension for macOS and add missing `fuse_lib_statfs$DARWIN()` handler * Fix a bug in the `threadid` module that prevented several file system callback handlers from being invoked when using the module * Adapt `fuse_clone_chan_fd_default()` for macOS. On macOS, there is no need to associate new FUSE device file descriptors with the original ones. * Rename `crtime` (creation time) `btime` (birth time). This change does not affect _[Truncated at 4000 characters — full notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.0]_ ### macfuse-5.0.7 — macFUSE 5.0.7 - Date: 2025-09-30 - Version: macfuse-5.0.7 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.0.7 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.0.7 - **changed** — Update build process to use Xcode 26.0.1 (macOS 26.0 SDK) - **changed** — Update Installer package to use absolute paths when invoking command line tools in the postinstall script - **removed** — Drop compatibility code for macOS 11 and earlier - **fixed** — Fix license file formatting for QuickLook rendering on macOS 26 - **changed** — Update kernel extension to version 5.0.7 - **fixed** — Preserve a vnode's identity when marking it as dangling to fix fchmod(2) system call failures - **fixed** — Resolve symbolic links in the kernel extension path before attempting to load the kernel extension - **changed** — Improve support for macOS 26 in FSModule with FSClient now providing information about installed third party file system extensions - **added** — Add support for creating a mount point in /Volumes automatically when mounting a volume - **changed** — Introduce foundational changes in preparation for new FSKit features in macFUSE 5.1 - **changed** — Replace typeof with the __typeof__ builtin in libfuse3 headers for C23 compatibility ###### General * Update build process to use Xcode 26.0.1 (macOS 26.0 SDK) * Update Installer package to use absolute paths when invoking command line tools in the `postinstall` script * Drop compatibility code for macOS 11 and earlier. macFUSE 5 supports macOS 12 through macOS 26. * Fix license file formatting. On macOS 26, QuickLook fails to render lists correctly if they are placed inside table cells in rich text documents. ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.0.7 * Preserve a vnode's identity when marking it as dangling. Resetting the identity causes the `fchmod(2)` system call to fail. This addresses macfuse/macfuse#1112. * Resolve symbolic links in the kernel extension path before attempting to load the kernel extension ###### `FSModule` (`FSKit` Backend) * Improve support for macOS 26. `FSClient` now provides information about installed third party file system extensions, enabling more reliable detection of whether a file system extension has been enabled by the user. * Add support for creating a mount point in `/Volumes` automatically when mounting a volume * Introduce foundational changes in preparation for new FSKit features in macFUSE 5.1 ###### `libfuse3` * Replace `typeof` with the `__typeof__` builtin in headers. The `typeof` keyword is part of the C23 ISO standard, but is not officially supported in older C ISO standards.