Subprocess is a Swift library for macOS providing interfaces for external process execution.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Non-breaking changes to public imports when compiling under Swift 6.
- Swift 6 compatibility updates.
- Correctly turned on
StrictConcurrency
in Swift 5.10 and earlier and added non-breaking conformance toSendable
. - Updated documentation for closure based usage where
nonisolated(unsafe)
is required to avoid an error in projects that useStrictConcurrency
.
- Additional
Sendable
conformance where it can't be implicitly determined outside of this package.
open
scope fromSubprocess
since none of its members wereopen
.
- Explicit
Sendable
conformance for some types which silences warnings in consuming projects where Xcode can't determine implicit conformance.
- Methods to
Subprocess
that support Swift Concurrency. Subprocess.run(standardInput:options:)
can run interactive commands.
- Breaking:
Subprocess.init
no longer accepts an argument for a dispatch queue's quality of service since the underlying implementation now uses Swift Concurrency and not GCD. - Breaking:
Input
stext
case no longer accepts an encoding as utf8 is overwhelmingly common. Instead convert the string to data explicitly if an alternate encoding is required. Shell
andSubprocessError
have been deprecated in favor of using new replacement methods that support Swift Concurrency and that no longer have a synchronized wait.- Swift 5.9 (Xcode 15) is now the package minimum required to build.
- Breaking: added the output of the command to Shell's exception exitedWithNonZeroStatus error to better conform to objc interop and NSError
- Updated minimum deployment target to macOS 10.13.
- Added dynamic library targets to SPM
- Fixed naming convention to match Jamf internal convention
- Added Cocoapods support
- All support for the initial release