What’s New

macfuse macfuse-5.3.3

macfuse-5.3.3

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

Discussion