How file systems can change in Sequoia with FSKit
Apple’s long-term plan to move away from kernel extensions and run as much as possible in user space is recruiting more volunteers, particularly from eligible file systems. For buried in Eric Sunalp’s talk about macOS in this year’s Platforms State of the Union at WWDC was the remark that Sequoia “delivers new APIs including user space file system support”. And that seems to be the last that we have heard of it.
This passing remark leads to a new section in Apple’s developer documentation, for the FSKit framework, which is presumably about to emerge from hiding among the thousands of Private Frameworks in Sonoma. Don’t waste your time looking up this new framework, as all Apple has done so far is list its contents, and not even added terse notes to explain them or FSKit itself.
More curious still is the fact that, while the whole framework is claimed to be a beta-release for macOS 15, most if not all of it is apparently available in macOS 14.0 and later.
Apple has been using FSKit as a Private Framework since it first appeared in macOS 14.0. It’s used in the open source of MSDOSFS available on Github, where most of its code was last modified nine months ago, so it isn’t exactly new. But that source, and macOS right up to 14.5, still includes the msdosfs.kext kernel extension, in version 1.10, unchanged apparently since at least macOS 12.0.1.
The closest I’ve found to documentation for this is in macOS developer release notes. That for Ventura 13.0 reported unhelpfully that “there’s a change to the implementation of the msdos and exfat file systems” and gave no further details. Notes for Sonoma 14.0 were a bit more explicit in saying “The implementations of the exfat and msdos file systems on macOS have changed; these file systems are now provided by services running in user-space instead of by kernel extensions.” Perhaps the remaining kernel extension is simply vestigial, and no longer used?
Reading between the lines, Apple is now transitioning secondary file systems away from kernel extensions, so they run in user space. First volunteer has been the MSDOS file system, which started to transition in macOS Ventura 13.0, and has completed its journey in Sonoma 14.0. Those wishing to implement support for other file systems can now do so, with limited features perhaps in macOS 14.0, and full support coming in Sequoia.
Before you all rush to start coding, not only is FSKit essentially undocumented at present, but getting this to work as a system rather than kernel extension isn’t even mentioned by Apple. That has all the makings of an exciting experience. macFUSE anyone?
I’m very grateful to RandomDSdevel for drawing my attention to this.