macfuse

System Utilities

File system integration

Latest 5.3.3 · by macfuseWebsitemacfuse/macfuseRSS

Release activity

Release activity — 11 releases across 11 days since Sep 30, 2025. Each cell is one day; darker means more releases that day. Nothing is recorded before Sep 30, 2025. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 31, 20261 release on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026No releases on Sep 13, 2026
MondayNo releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 20261 release on Sep 7, 2026No releases on Sep 14, 2026
TuesdayNo releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026No releases on Aug 25, 2026No releases on Sep 1, 2026No releases on Sep 8, 2026
WednesdayNo releases on Jun 3, 2026No releases on Jun 10, 20261 release on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026No releases on Aug 26, 2026No releases on Sep 2, 2026No releases on Sep 9, 2026
ThursdayNo releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026No releases on Aug 20, 2026No releases on Aug 27, 2026No releases on Sep 3, 2026No releases on Sep 10, 2026
FridayNo releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026No releases on Sep 11, 2026
SaturdayNo releases on Jun 6, 20261 release on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 20261 release on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026No releases on Sep 12, 2026

11 releases since Sep 30, 2025

Changelog

macfuse-5.4.0Pre-release

macFUSE 5.4.0

Added 8
  • Add support for the new macOS 27 FSKit volume operation APIs while retaining compatibility with earlier macOS releases
  • Forward the caller's effective user and group IDs to the file system server on macOS 27
  • Add item attribute caching based on the validity timeouts returned by the file system server
  • Support reads without a preceding open call by opening a read-capable file handle on demand
  • Fall back to FUSE_MKNOD when the file system server does not implement FUSE_CREATE
  • Include fatal error messages in crash reports to improve diagnostics
  • Add MFMountResultCreatingMountPointFailed to report that the requested mount point could not be created
  • Add Simplified Chinese, Japanese, French, Spanish, Korean, Brazilian Portuguese, Italian, and Traditional Chinese localizations
Changed 6
  • Update the build process for the FSKit backend to use Xcode 27.0 (macOS 27 SDK)
  • Improve mount failure reporting and daemonization behavior for file systems using libfuse and libfuse3
  • Improve directory enumeration by validating cookies and verifiers and cleaning up remaining file and directory handles during close, reclaim, and item deactivation
  • Improve stability by fixing item lock ordering and lock state tracking, validating file system replies, and releasing lookup references and file handles on error paths
  • Create missing mount points in the requesting user's security context
  • Update the kernel extension version to 5.4.0
Fixed 6
  • Avoid following symbolic links when changing ownership of newly created mount points in /Volumes
  • Fix a bug that could cause small write requests to deliver zero-filled data to the file system server
  • Fix a crash when the file system server returns an empty FUSE_READ reply
  • Fix parent directory handling for hard-linked files and improve overwrite-rename behavior
  • Prevent kernel memory disclosure when processing ioctl replies by validating response sizes and copying only the bytes returned by the file system server
  • Fix a rare use-after-free when allocating a request buffer fails, and fix request ticket leaks when handling attributes, extended attributes, and inode invalidation notifications

From macfuse

General
  • Update the build process for the FSKit backend to use Xcode 27.0 (macOS 27 SDK). The remaining components are built with Xcode 26.6 (macOS 26.5 SDK)

  • Improve mount failure reporting and daemonization behavior for file systems using libfuse and libfuse3

  • Avoid following symbolic links when changing ownership of newly created mount points in /Volumes

FSModule (FSKit Backend)
  • Add support for the new macOS 27 FSKit volume operation APIs while retaining compatibility with earlier macOS releases

  • Forward the caller's effective user and group IDs to the file system server on macOS 27

  • Add item attribute caching based on the validity timeouts returned by the file system server

    Refresh or invalidate cached attributes when operations change them, and avoid unnecessary FUSE_SETATTR requests when no supported attributes remain to be applied.

  • Fix a bug that could cause small write requests to deliver zero-filled data to the file system server. This addresses macfuse/macfuse#1187.

  • Fix a crash when the file system server returns an empty FUSE_READ reply, for example when reading past the end of a file. This addresses macfuse/macfuse#1188.

  • Support reads without a preceding open call by opening a read-capable file handle on demand

    Reuse existing handles when their access modes are sufficient, and replace them with handles supporting the combined access modes when necessary. This addresses macfuse/macfuse#1181.

  • Improve directory enumeration by validating cookies and verifiers and cleaning up remaining file and directory handles during close, reclaim, and item deactivation

  • Fix parent directory handling for hard-linked files and improve overwrite-rename behavior

    Avoid unsupported swap renames and use RENAME_EXCL only when extended rename support has been negotiated with the file system server. This addresses macfuse/macfuse#1191.

  • Fall back to FUSE_MKNOD when the file system server does not implement FUSE_CREATE

  • Improve stability by fixing item lock ordering and lock state tracking, validating file system replies, and releasing lookup references and file handles on error paths

  • Create missing mount points in the requesting user's security context

    Only the final path component is created. Direct children of /Volumes are created by the daemon and then assigned to the requesting user.

  • Include fatal error messages in crash reports to improve diagnostics

Kernel Extension (Kernel Backend)
  • Update the kernel extension version to 5.4.0

  • Prevent kernel memory disclosure when processing ioctl replies by validating response sizes and copying only the bytes returned by the file system server

  • Fix a rare use-after-free when allocating a request buffer fails, and fix request ticket leaks when handling attributes, extended attributes, and inode invalidation notifications

  • Improve locking during mounting and connection teardown and validate request ticket state before processing replies

  • Prevent unexpected replies to FUSE_MONITOR requests from being matched to later requests. This addresses macfuse/macfuse#1190.

  • Harden notification handling by validating protocol versions, session state, payload sizes, and names

    Improve directory entry invalidation and deletion handling, including clearing negative name cache entries and preserving open files after deletion notifications. Improve inode range invalidation to preserve dirty cached data and prevent range overflow.

  • Return ENOSYS for the recognized but unimplemented POLL, STORE, and RETRIEVE notifications

  • Restore normal mount state after an unsuccessful unmount attempt so file system operations and notifications can resume

  • Bound file system type and volume name validation to their input buffers, and update volume capability reporting for recent macOS versions

MFMount.framework
  • Add MFMountResultCreatingMountPointFailed to report that the requested mount point could not be created

    Display a localized alert with recovery guidance unless dialogs are suppressed by the caller

  • Close the channel before returning handled mount setup failures

  • Add Simplified Chinese, Japanese, French, Spanish, Korean, Brazilian Portuguese, Italian, and Traditional Chinese localizations

  • Remove the direct dependency on AppKit

  • Please note that parts of the MFMount.framework API may still change in future releases.

libfuse
  • Wait for pending mount attempts to finish before the daemonizing parent process exits

    The parent now exits with a status reflecting whether mounting succeeded, allowing callers and scripts to detect mount failures. This addresses macfuse/macfuse#1178.

  • Keep standard streams open while mounting so startup diagnostics remain visible, and redirect them only after successful completion

  • Warn when a process that has previously created additional threads calls fork(2), including calls made outside fuse_daemonize().

libfuse3
  • Fix decoding of rename requests when FUSE_DARWIN_CAP_RENAME_EXT is disabled or unsupported by the file system

  • Wait for pending mount attempts to finish before the daemonizing parent process exits

    The parent now exits with a status reflecting whether mounting succeeded, allowing callers and scripts to detect mount failures. This addresses macfuse/macfuse#1178.

  • Keep standard streams open while mounting so startup diagnostics remain visible, and redirect them only after successful completion

  • Warn when a process that has previously created additional threads calls fork(2), including calls made outside fuse_daemonize().

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.
View originalPermalink
How macfuse-5.4.0 went
macfuse-5.3.3Latest

macFUSE 5.3.3

Added 3
  • Add support for interrupting readers blocked on the FUSE device
  • Add function MFChannelInterrupt() to interrupt threads blocked in MFChannelCopyNextMessage() and MFChannelWaitForNextMessage() without closing the channel
  • Add a cancel-safe C trampoline for Swift API entry points
Changed 15
  • 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
  • Update the kernel extension version to 5.3.3
  • Make channel receives interruptible by SIGHUP, SIGINT, SIGTERM, and SIGPIPE
  • Use XPC lightweight code requirements on macOS 14.4 and later when verifying the mount service
  • Defer the actual macOS mount process until first session use in libfuse

From macfuse

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.
View originalPermalink
How macfuse-5.3.3 went
macfuse-5.3.2Pre-release

macFUSE 5.3.2

Added 2
  • Include Swift compatibility library in FSModule for macOS 15
  • Include Swift compatibility library in MFMount.framework for macOS 15 and earlier
Changed 1
  • Update the swift-collections package from version 1.4.1 to 1.6.0

From macfuse

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.
View originalPermalink
How macfuse-5.3.2 went
macfuse-5.3.1Pre-release

macFUSE 5.3.1

Added 2
  • Add initial support for macOS 27
  • Add initial support for Xcode 27
Changed 4
  • 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
  • Improve performance when preparing messages sent to the file system server
  • Improve performance when enumerating directories by using FUSE_BATCH_FORGET
  • Update the kernel extension version to 5.3.1
Fixed 5
  • Fix a bug in open file handle management in FSModule
  • 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
  • Address an incompatibility with the macOS 27 SDK included in Xcode 27.0 beta 1
  • 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
  • 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
Deprecated 1
  • Turn MFChannelCreateWithDeviceFileDescriptor() into a weak import as this function will be removed once MFMount() supports mounting volumes using the kernel backend

From macfuse

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.
View originalPermalink
How macfuse-5.3.1 went
macfuse-5.3.0Pre-release

macFUSE 5.3.0

Added 9
  • 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
  • Add support for the new channel API provided by MFMount.framework in FSModule (FSKit Backend)
  • 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
  • Add MFChannelRef for message-oriented communication with a backend
  • 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
Changed 2
  • Update build process to use Xcode 26.5 (macOS 26.5 SDK)
  • Substantially improve I/O performance with reading files up to 15 times faster than in previous releases
Fixed 1
  • Improve stability by addressing a race condition when accessing cached volume statistics that could cause the file system extension to crash

From macfuse

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.
View originalPermalink
How macfuse-5.3.0 went
macfuse-5.2.0

macFUSE 5.2.0

Added 2
  • Introduce a new open source API for mounting volumes using the FSKit backend that enables fully sandboxed file systems
  • Add support for a file system item's allocation size in FSModule FSKit backend
Changed 5
  • Update build process to use Xcode 26.4 (macOS 26.4 SDK)
  • FSKit backend mount operation is now performed over XPC instead of relying on fork()/exec()
  • Improve the built-in log command to detect whether the output destination supports colored output
  • Improve the built-in install command to support selecting which components to install with privileged-helpers, file-system-extensions, and all options
  • Update libfuse3 to version 3.18.2
Fixed 2
  • 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
  • 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
Removed 1
  • Remove the obsolete broker launch daemon io.macfuse.app.launchservice.broker

From macfuse

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 <components> ...] [--force]
    
    OPTIONS:
      -c, --components <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 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.

View originalPermalink
How macfuse-5.2.0 went
macfuse-5.1.3

macFUSE 5.1.3

Changed 3
  • Update build process to use Xcode 26.2 (macOS 26.2 SDK)
  • Update kernel extension to version 5.1.3
  • Introduce foundational changes in FSModule (FSKit Backend) in preparation for new features in macFUSE 5.2
Fixed 2
  • Add special handling for the O_EXEC open flag to prevent a kernel panic by treating it internally as O_RDONLY
  • 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

From macfuse

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.
View originalPermalink
How macfuse-5.1.3 went
macfuse-5.1.2

macFUSE 5.1.2

Added 1
  • Add support for streaming logs using the log subcommand
Changed 1
  • Improve automatic file system extension registration with support for manual registration using the install subcommand and a --force flag to remove duplicate extensions
Fixed 1
  • Resolve compatibility issues with legacy versions of macOS by removing the io.macfuse.app.launchservice.broker launch service on unsupported versions

From macfuse

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.

View originalPermalink
How macfuse-5.1.2 went
macfuse-5.1.1

macFUSE 5.1.1

Changed 2
  • Update kernel extension to version 5.1.1
  • Disable VNOP_MONITOR support on macOS 15 to maintain compatibility with macOS versions before 15.4

From macfuse

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.

View originalPermalink
How macfuse-5.1.1 went
macfuse-5.1.0Pre-release

macFUSE 5.1.0

Added 11
  • Add new HelloFS demo file system (HelloFS-Framework-Swift) as a minimal Hello World example in 40 lines of code
  • 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
  • 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
  • Add support for mounting non-local volumes (typically distributed file systems) on macOS 26 via FSModule (FSKit Backend)
  • Add support for mount option local to treat volumes as local (typically physically attached storage), supported on macOS 15.4 and later
  • Add support for mount option volname=NAME to specify a name for the volume being mounted
Changed 9
  • Update build process to use Xcode 26.1 (macOS 26.1 SDK)
  • Update LoopbackFS demo file systems and add a libfuse3 variant (LoopbackFS-libfuse3-C)
  • Update kernel extension to version 5.1.0
  • Adapt fuse_clone_chan_fd_default() for macOS to not associate new FUSE device file descriptors with the original ones
  • Rename crtime (creation time) to btime (birth time) in libfuse3 macOS API extensions
  • Enable Clang module support in Framework to improve interoperability with Swift
Fixed 6
  • 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
  • Fix a bug in VNOP_MNOMAP that can cause a deadlock when VNOP_WRITE callback calls VNOP_MNOMAP
  • Fix f_mntfromname (fsname mount option) being truncated at 90 bytes; now supports names of up to 1024 bytes including the terminating null character
  • Fix a bug in the statfs API extension for macOS in libfuse3 and add missing fuse_lib_statfs$DARWIN() handler
  • Fix a bug in the threadid module in libfuse3 that prevented several file system callback handlers from being invoked
  • Fix a layout bug on macOS 26 and modernize layout in System Settings
Removed 1
  • Remove unsupported exchangedata() callback handler which has been superseded by renamex_np() and unsupported since macOS 11
Deprecated 1
  • Deprecate the exchangeDataOfItemAtPath:withItemAtPath:error: delegate method

From macfuse

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 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.

  • 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 ABI stability, but it requires code updates when compiling a file system with this release and the macOS API extensions being enabled.

Framework
  • Improve Swift support

    • Enable Clang module support to improve interoperability with Swift
    • Drop the GM type name prefix in Swift
    • Make UserFileSystem.MoveOptions more idiomatic for Swift
    • Add FileAttributeKey extension defining additional framework-specific attribute keys
    • These changes have no affect on ABI stability, but they require code updates when compiling a file system with this release
  • Turn NSObject categories UserFileSystemLifecycle, UserFileSystemOperations, and UserFileSystemResourceForks into actual protocols

  • Remove unsupported exchangedata() callback handler. exchangedata() has been superseded by renamex_np() and has been unsupported since macOS 11. This change deprecates the corresponding delegate method.

    - (BOOL)exchangeDataOfItemAtPath:(NSString *)path
                      withItemAtPath:(NSString *)otherPath
                               error:(NSError * _Nullable * _Nonnull)error
    
System Settings
  • Fix a layout bug on macOS 26 and modernize layout
View originalPermalink
How macfuse-5.1.0 went
macfuse-5.0.7

macFUSE 5.0.7

Added 1
  • Add support for creating a mount point in /Volumes automatically when mounting a volume
Changed 6
  • 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
  • Update kernel extension to version 5.0.7
  • Improve support for macOS 26 in FSModule with FSClient now providing information about installed third party file system extensions
  • Introduce foundational changes in preparation for new FSKit features in macFUSE 5.1
  • Replace typeof with the __typeof__ builtin in libfuse3 headers for C23 compatibility
Fixed 3
  • Fix license file formatting for QuickLook rendering on macOS 26
  • Preserve a vnode's identity when marking it as dangling to fix fchmod(2) system call failures
  • Resolve symbolic links in the kernel extension path before attempting to load the kernel extension
Removed 1
  • Drop compatibility code for macOS 11 and earlier

From macfuse

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.
View originalPermalink
How macfuse-5.0.7 went
View all

Discussion

If you publish macfuse, you can claim this product by proving you administer its repository.