-
Notifications
You must be signed in to change notification settings - Fork 543
FSKit macOS xcode26.0 b1
Alex Soto edited this page Jun 9, 2025
·
1 revision
#FSKit.framework
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h 2025-04-22 23:14:16
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h 2025-05-30 23:39:08
@@ -39,4 +39,8 @@
// Unavailable in original API
#define FSKIT_API_UNAVAILABLE_V1 API_UNAVAILABLE(macos, ios, visionos) API_UNAVAILABLE(watchos, tvos)
+// macOS 16 API
+#define FSKIT_API_AVAILABILITY_V2 API_AVAILABLE(macos(26.0)) \
+ API_UNAVAILABLE(ios, visionos) API_UNAVAILABLE(watchos, tvos)
+
#endif /* FSKitDefines_h */
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h 2025-04-22 23:14:16
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h 2025-05-30 23:39:08
@@ -370,6 +370,38 @@
@end
+/// A resource representing an abstract URL
+///
+FSKIT_API_AVAILABILITY_V2
+@interface FSGenericURLResource : FSResource
+
+@property (readonly, copy) NSURL * url;
+
+- (instancetype)initWithURL:(NSURL *)url;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+/// A resource representing a path
+///
+/// Represents a file path (possibly security scoped URL).
+///
+FSKIT_API_AVAILABILITY_V2
+@interface FSPathURLResource : FSResource
+
+@property (readonly, copy) NSURL * url;
+
+- (instancetype)initWithURL:(NSURL *)URL
+ writable:(BOOL)writable;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@property (readonly, getter=isWritable)
+ BOOL writable;
+
+@end
+
/// Maintenance operations for a file system's resources.
///
/// This protocol includes operations to check and format a resource for an ``FSUnaryFileSystem``.
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTask.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTask.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTask.h 2025-04-22 23:14:15
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTask.h 2025-05-30 23:39:08
@@ -25,6 +25,50 @@
/// - Parameter error: `nil` if the task completed successfully; otherwise, an error that caused the task to fail.
- (void)didCompleteWithError:(NSError * _Nullable)error FSKIT_API_AVAILABILITY_V1 NS_SWIFT_NAME(didComplete(error:));
+/// The cancellation handler will be called when the given task has been canceled.
+///
+/// The cancellation handler will be called wtihin an independent execution context. The cancellationHandler property is cleared after a task is canceled or completed. This is to accelerate the cleanup of retained state.
+///
+/// The exact structuring of the completion handler depends on the structuring of the code imlementing the task.
+/// As a concrete example, consider a check operation with the following class:
+///
+/// ```obj-c
+/// @ interface yourFileSystemChecker : NSObject
+/// @property (retain) dispatch_group_t work_group;
+/// @property (nonatomic,getter=interrupted) BOOL interrupted;
+/// - (void)performCheck:(FSTask *)task
+/// progress:(NSProgress *)progress;
+/// @ end
+/// ```
+///
+/// and a startCheckWithTask:(FSTask *)task like:
+
+/// ```obj-c
+/// {
+/// NSProgress *progress = [[NSProgress alloc] init];
+/// yourFileSystemChecker *checker= [[yourFileSystemChecker alloc] init];
+/// checker.work_group = dispatch_group_create();
+/// dispatch_group_enter(checker.work_group);
+/// [task setCancellationHandler:^NSError * _Nullable{
+/// checker.terminate = TRUE;
+/// dispatch_group_wait(checker.work_group);
+/// return nil;
+/// }];
+/// dispatch_async(someQueue, ^{[self performCheck:task progress:progress];});
+/// return progress;
+/// }
+/// ```
+///
+/// > Note: this example did not account for errors while delivered code must. finally, the `performCheck`
+/// code should perform the check operation. It should periodically update the progress object and check
+/// its `interrupted` variable. The check can either complete successfully, complete with an error, or
+/// be interrupted. It should then call `[task didCompleteWithError:...]` wtih the appropriate
+/// error value or nil. Finally it should `dispatch_group_leave(self.work_group);`
+///
+/// - Returns: An error if the cancellation did not complete successfully. Any returned error will be logged, and FSKit will then terminate all activity in the container.
+///
+@property (nullable, copy) NSError * _Nullable(^NS_SWIFT_SENDABLE cancellationHandler)(void) FSKIT_API_AVAILABILITY_V2;
+
@end
NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h 2025-04-22 23:14:15
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h 2025-05-30 23:39:08
@@ -35,10 +35,10 @@
/// Implement this method to indicate whether the resource is recognizable and usable.
/// - Parameters:
/// - resource: The ``FSResource`` to probe.
-/// - replyHandler: A block or closure that your implementation invokes when it finishes the probe or encounters an error. Pass an instance of ``FSProbeResult`` with probe results as the first parameter if your probe operation succeeds. If probing fails, pass an error as the second parameter.
+/// - reply: A block or closure that your implementation invokes when it finishes the probe or encounters an error. Pass an instance of ``FSProbeResult`` with probe results as the first parameter if your probe operation succeeds. If probing fails, pass an error as the second parameter.
-(void)probeResource:(FSResource *)resource
replyHandler:(void(^)(FSProbeResult * _Nullable result,
- NSError * _Nullable error))replyHandler FSKIT_API_AVAILABILITY_V1 NS_SWIFT_NAME(probeResource(resource:replyHandler:));
+ NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1 NS_SWIFT_NAME(probeResource(resource:replyHandler:));
/// Requests that the file system load a resource and present it as a volume.
///
@@ -49,11 +49,11 @@
/// - Parameters:
/// - resource: An ``FSResource`` to load.
/// - options: An ``FSTaskOptions`` object specifying options to apply when loading the resource. An ``FSUnaryFileSystem`` supports two options: `-f` for "force" and `--rdonly` for read-only. The file system must remember if the read-only option is present.
-/// - replyHandler: A block or closure that your implementation invokes when it finishes setting up or encounters an error. Pass a subclass of `FSVolume` as the first parameter if loading succeeds. If loading fails, pass an error as the second parameter.
+/// - reply: A block or closure that your implementation invokes when it finishes setting up or encounters an error. Pass a subclass of `FSVolume` as the first parameter if loading succeeds. If loading fails, pass an error as the second parameter.
-(void)loadResource:(FSResource *)resource
options:(FSTaskOptions *)options
replyHandler:(void (^)(FSVolume * _Nullable volume,
- NSError * _Nullable err))replyHandler NS_SWIFT_NAME(loadResource(resource:options:replyHandler:)) FSKIT_API_AVAILABILITY_V1;
+ NSError * _Nullable err))reply NS_SWIFT_NAME(loadResource(resource:options:replyHandler:)) FSKIT_API_AVAILABILITY_V1;
/// Requests that the file system unload the specified resource.
///
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h 2025-04-22 23:14:15
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h 2025-05-30 23:39:08
@@ -383,6 +383,22 @@
/// A property that provides up-to-date statistics of the volume.
@property (readonly, nonatomic) FSStatFSResult * volumeStatistics;
+@optional
+
+/// A property that allows the file system to use open-unlink emulation.
+///
+/// _Open-unlink_ functionality refers to a file system's ability to support an open file being fully unlinked from the file system namespace.
+/// If a file system doesn't support this functionality, FSKit can emulate it instead; this is called "open-unlink emulation".
+///
+/// Implement this property to return `true` (Swift) or `YES` (Objective-C) to allow FSKit to perform open-unlink emulation.
+/// If you don't implement this property at all, FSKit doesn't perform open-unlink emulation for this volume.
+///
+/// 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.
+@property BOOL enableOpenUnlinkEmulation FSKIT_API_AVAILABILITY_V2;
+
+@required
+
/// Mounts this volume, using the specified options.
///
/// FSKit calls this method as a signal that some process is trying to mount this volume.