Skip to content

FSKit macOS xcode27.2 b3

Alex Soto edited this page Oct 17, 2026 · 1 revision

#FSKit.framework

diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h	2026-08-11 23:55:11
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h	2026-10-08 03:09:52
@@ -226,8 +226,10 @@
 /// A Boolean value that indicates whether the item supports a limited set of extended attributes.
 @property (nonatomic)           BOOL            supportsLimitedXAttrs;
 /// A Boolean value that indicates whether the file system overrides the per-volume settings for kernel offloaded I/O for a specific file.
+/// FSKit reads this value the first time the module reports attributes for a given file; It then sets the file's kernel-offloaded-I/O routing accordingly.
+/// The routing stays in effect for the item's lifetime; later changes are ignored.
 ///
-/// This property has no meaning if the volume doesn't conform to ``FSVolumeKernelOffloadedIOOperations``.
+/// This property has no meaning if the volume doesn't conform to ``FSVolumeKernelOffloadedIOOperations`` or ``FSVolume/KernelOffloadedIOHandler``.
 @property (nonatomic)           BOOL            inhibitKernelOffloadedIO;
 /// The item's last-modified time.
 ///
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h	2026-08-11 23:55:11
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h	2026-10-08 03:09:53
@@ -585,6 +585,8 @@
 
 /// Renames an item from one path in the file system to another.
 ///
+/// > Note: This method only implements plain `rename(2)` semantics. FSKit fails `renamex_np(2)` calls that pass flags, such as `RENAME_SWAP` or `RENAME_EXCL`, with `ENOTSUP` without calling this method.
+///
 /// Implement renaming along the lines of this algorithm:
 ///
 /// - If `item` is a file:
@@ -889,6 +891,8 @@
 
 /// Renames an item from one path in the file system to another.
 ///
+/// > Note: This method only implements plain `rename(2)` semantics. FSKit fails `renamex_np(2)` calls that pass flags, such as `RENAME_SWAP` or `RENAME_EXCL`, with `ENOTSUP` without calling this method.
+///
 /// Implement renaming along the lines of this algorithm:
 ///
 /// - If `item` is a file:
@@ -1363,6 +1367,7 @@
 /// Most volumes conform to either this protocol or ``FSVolumeKernelOffloadedIOHandler``.
 /// You can conform to both if you need to provide kernel-offloaded I/O only for certain files.
 /// In that case, files with the ``FSItem/Attribute/inhibitKernelOffloadedIO`` attribute set use this protocol, and those without it use ``FSVolumeKernelOffloadedIOHandler``.
+/// Set that attribute on an item when you create it; The kernel sets each file's routing when it first instantiates the item. This choice is immutable for the item's lifetime.
 /// A volume that doesn't conform to either protocol can't support any I/O operation.
 ///
 /// > Important: This protocol replaces the ``FSVolumeReadWriteOperations`` protocol. It exposes the same functionality, while using ``FSVolumeHandlerResult`` objects. These objects add the ability to reply with ``FSItemAttributes`` and free space from the relevant methods.
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeDataCacheHandler.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeDataCacheHandler.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeDataCacheHandler.h	2026-08-11 23:55:10
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeDataCacheHandler.h	2026-10-08 03:09:52
@@ -44,8 +44,18 @@
     /// An action to flush dirty data from cache to storage, preserving cache contents.
     FSKernelCacheCoherencyActionPush = 0,
     /// An action to flush dirty data to storage and invalidate (clear) the cache.
+    /// This also invalidates the item's cached attributes, so the next request
+    /// for attributes fetches them from your module.
+    ///
+    /// For a directory, this also purges the kernel name cache for the
+    /// directory's entries. With the name cache purged, any later lookup re-populates the cache.
     FSKernelCacheCoherencyActionPushInvalidate,
     /// An action to invalidate (clear) the cache, discarding any dirty data without writing to storage.
+    /// This also invalidates the item's cached attributes, so the next request
+    /// for attributes fetches them from your module.
+    ///
+    /// For a directory, this also purges the kernel name cache for the
+    /// directory's entries. With the name cache purged, any later lookup re-populates the cache.
     FSKernelCacheCoherencyActionInvalidate,
     /// An action to update the coherency mode while keeping the cache valid, requiring no push or invalidation.
     FSKernelCacheCoherencyActionUpdate,
@@ -63,6 +73,11 @@
 /// A volume that conforms to this protocol enables kernel data caching for improved I/O performance.
 /// This protocol allows filesystem modules to negotiate cache modes with the kernel and manage cache coherency.
 ///
+/// > Note: This protocol handles the complete open and close lifecycle for items. When a volume conforms
+/// to `FSVolumeDataCacheHandler`, FSKit routes every open and close operation through this protocol's
+/// ``open(_:modes:cacheMode:context:replyHandler:)`` and ``close(_:context:replyHandler:)`` methods.
+/// A volume that adopts this protocol doesn't need to also conform to ``FSVolumeOpenCloseHandler``.
+///
 /// When a file opens, the module receives the requested ``FSVolume/DataCacheMode`` and returns a
 /// ``FSVolume/KernelCacheCoherencyType`` indicating the kind of caching behavior it can support. The kernel then
 /// caches data according to the granted coherency type. The module can dynamically upgrade or
@@ -120,6 +135,8 @@
 ///
 /// FSKit reads this value after the file system replies to the `loadResource` message.
 /// Changing the returned value during the runtime of the volume has no effect.
+///
+/// > Note: This property does not disable data caching; it only disables the usage of the protocol. In order to completely disable data caching, return the ``FSVolume/KernelCacheCoherencyType/noCache`` coherency type from ``open(_:modes:cacheMode:context:replyHandler:)`` for all items.
 @property (readonly, getter = isDataCacheInhibited) BOOL dataCacheInhibited FSKIT_API_AVAILABILITY_V3;
 
 @required

Clone this wiki locally