Releases: tannerdsilva/SwiftSlash
Clarifying Command Initializers
This version brings significant changes (clarification) to the Command struct initializers, as well as expanded documentation coverage.
Here's a brief overview of what's new in this release:
- Command struct initializers have been revised to clarify how they are being initialized. This change has been made based on feedback from our users via Issues and through our own observations.
- We've greatly expanded the documentation coverage for the Command struct, making it easier to use and understand.
- This release also reorganizes a few internal pieces to prepare for the upcoming 4.0.0 release.
We believe that these changes will make SwiftSlash even more powerful and user-friendly. As always, we welcome your feedback and encourage you to share any thoughts or suggestions you may have.
Removed Public-Facing ClibSwiftSlash Library
Package.swift
has been updated to hide the internal libraryClibSwiftSlash
from external users.- This is a minor update (no breaking API changes) because
ClibSwiftSlash
was undocumented and not meant for public use.
Public API Changes
Command(command:String)
has been changed to a nameless initializerCommand(_:String)
CommandResult
is nowCommand.Result
- Improved documentation
DocC
- SwiftSlash now has DocC documentation on every public symbol in the framework.
- DocC render for the latest release can be found on the SwiftSlash website
- Removed build warnings on unit tests
Internal & External Improvements
- Eliminated build warnings on MacOS
- Eliminated fatalError on MacOS that would get thrown when signals are sent to the process in which SwiftSlash is running
- Command struct instance variables are now publicly accessible
Stability tweak
Bugfix: SwiftSlash no longer throws a fatalError when a signal is sent to the process in which it is running.
MacOS Support
- completely rebuilt data engine.
- better structure for concurrency
- resource awareness - if SwiftSlash cannot create new file handles, it will wait to launch your command until it can.
- independent mechanism for detecting process exits
- lays foundation for dynamic channel closure going forward
- full production support on MacOS with Monterey and newer versions
- passing async tests
- async tests restored, passing on MacOS and will pass on Linux when apple adds async functionality in a future release
Stability improvement
Revised execution order of an internal mechanism (ChannelManager) to improve framework stability
Command API tweak
Changed Command.init?(command:String)
to a non-optional initializer. In an event where invalid input is passed as command:String
, a fatalError is thrown.
async/await
SwiftSlash has been completely rebuilt from the ground-up (inside and out) to support Swift's native async/await concurrency tools.