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

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 original

Upgraded? How did it go?

Discussion