FUSE for macOS 4.2.1
FUSE for macOS allows you to extend macOS's native file handling capabilities via third-party file systems. It is a successor to MacFUSE, which has been used as a software building block by dozens of products, but is no longer being maintained.
As a user, installing the FUSE for macOS software package will let you use any third-party FUSE file system. Legacy MacFUSE file systems are supported through the optional MacFUSE compatibility layer.
As a developer, you can use the FUSE SDK to write numerous types of new file systems as regular user space programs. The content of these file systems can come from anywhere: from the local disk, from across the network, from memory, or any other combination of sources. Writing a file system using FUSE is orders of magnitude easier and quicker than the traditional approach of writing in-kernel file systems. Since FUSE file systems are regular applications (as opposed to kernel extensions), you have just as much flexibility and choice in programming tools, debuggers, and libraries as you have if you were developing standard macOS applications.
How It Works
In more technical terms, FUSE implements a mechanism that makes it possible to implement a fully functional file system in a user-space program on macOS. It provides multiple APIs, one of which is a superset of the FUSE API (file system in user space) that originated on Linux. Therefore, many existing FUSE file systems become readily usable on macOS.
The FUSE for macOS software consists of a kernel extension and various user space libraries and tools. It comes with C-based and Objective-C-based SDKs. If you prefer another language (say, Python or Java), you should be able to create file systems in those languages after you install the relevant language bindings yourself.
The filesystems repository contains source code for several exciting and useful file systems for you to browse, compile, and build upon, such as sshfs, procfs, AccessibilityFS, GrabFS, LoopbackFS, SpotlightFS, and YouTubeFS.
- Fix race condition that can result in mkdir(2) returning EINVAL when creating multiple directories recursively. See #832 for details.
- Fix race condition when removing a directory or creating a symlink. See #824 for details.
- Add workaround for an infinite write loop when unmapping a file from memory on Apple Silicon.
- On Apple Silicon munmap(2) might trigger a write, regardless of whether the mapped file was modified or not. This unnecessary write would update the file's modification time, which in turn might cause security software to scan the file. If such a scanner maps the file to memory, the file's modification time will get updated again as soon as the scanner calls munmap(2). This triggers another scan cycle and so on.
- Add workaround for a missing TARGET_OS_OSX macro in Xcode 13's sys/cdefs.h kernel header.
- Improve support for non-latin languages by adding support for returning file names in the Unicode Normalization Form D (NFD) in the readdir callback.
- Finder and other macOS system tools expect file names to be in the D form. Using the C form can result in unexpected behavior, e.g. file names not being displayed in Finder under certain conditions. See Unicode Normalization Forms for details.
- Improve detection of remote file changes and prevent unnecessary writes.
- Set minimum I/O size value (iosize mount option) to the platform's page size. On Apple Silicon the minimum I/O size is 16,384 bytes. On Intel it is 4,096 bytes. Using an I/O size value less than the platform's page size can cause hangs.
- Perform synchronous writes when unmapping a file from memory. When the last munmap(2) completes, the file will have been written to the backing storage.
- Title: FUSE for macOS 4.2.1
- Developer: Benjamin Fleischer
- Compatibility: OS X 10.9 or later 64-bit
- Language: English
- Includes: Free
- Size: 5.61 MB