macOS 15+: FSKit support
macOS Sequoia (15+) adds an official API for user-space file systems called FSKit: https://developer.apple.com/documentation/fskit/ Would it be feasible for fuser to support it instead of relying on macFUSE on macOS 15+ targets?
Announcement article: https://eclecticlight.co/2024/06/26/how-file-systems-can-change-in-sequoia-with-fskit/ An example implementation written in Swift: https://github.com/KhaosT/FSKitSample
Apple added FSKit support to Xcode starting with version 16.1 beta Retail Xcode 16.0 lacks the support for FSKit
That would allow user-space operation on macOS without relying on FUSE-T which was proposed a few times already: https://github.com/cberner/fuser/pull/225, https://github.com/cberner/fuser/issues/273
This is very recent, but I believe FSKit support has been recently added in macFUSE version 5.0.0.
If this is just a library wrapper, then just adding the -obackend=fskit like mentioned here would suffice.
Or in the binding case: MountOption::CUSTOM("backend=fskit".to_string())
Edit: Just giving a small try on one of the demo does not seem to be working out of the box. Looks related to this issue:
https://github.com/macfuse/macfuse/issues/1071
Looks like there might still be a few changes required on the binding to support FSKit. I'm able to make the System Extension work but getting the following error when switching backends:
{ code: 45, kind: Uncategorized, message: "Operation not supported" }
Just a follow up here. I'm able to run the FSKit backend in the C examples. It does still break when running the -obackend=fskit option with the rust bindings. INIT method is returning empty. My guess is that the bindings is using the kernel channel connection instead of using the callback pointers. FSKit does no longer run the kernel extension and that's why it probably is not sending any message.
@cberner are there any plans to include callbacks as an alternative to the kernel channel into the bindings?
Nope. I have stopped maintaining the MacOS support