4.0.0 Beta 6
Pre-release4.0.0 Beta 6
ProcedureKit is nearing a final v4 release. Beta 6 sees all functionality that will be added for v4 in place. Some breaking changes around cancellation are currently being discussed, and will come in the next (and hopefully last) beta.
In this release, @swiftlyfalling has been doing amazing work finding, fixing and adding tests for race-conditions, memory leaks, general thread-safety and cancellation. It really has been fantastic. Currently, unit tests over 83% of all components on average.
New APIs
-
#631, #632 Result injection is now supported for
NetworkDataProcedure
et. al. This API is calledinjectPayload(fromNetwork:)
and will support functionality like this:// Procedure to get a network request let getRequest = GetRequest() // Procedure to get the Data payload let network = NetworkDataProcedure() // Inject the URLRequest .injectResult(from: getRequest) // Procedure to decode the data payload let decode = DecodeNetworkPayload() // Inject the network payload .injectPayload(fromNetwork: network)
Thanks to @robfeldmann for raising the initial issue.
-
#592 Adds
UIProcedure
andAlertProcedure
as part of ProcedureKitMobile framework. Usage is like this:let alert = AlertProcedure(presentAlertFrom: self) alert.add(actionWithTitle: "Sweet") { alert, action in alert.log.info(message: "Running the handler!") } alert.title = "Hello World" alert.message = "This is a message in an alert" queue.add(operation: alert)
Other Changes
- #623 Adds
ProcedureKit/All
CocoaPod sub-spec which corresponds to all the cross platform components. - #625 Tweaks for TestingProcedureKit imports.
- #626, #627,#640, #646 Tweaks Network procedures so that cancellation is thread safe, avoids a potential race condition, and testing enhancements.
- #624 Some minor fixes after a through investigation with the visual memory debugger - which can produce erroneous leak indicators.
- #630 Adds a build step to CI to perform integration testing using CocoaPods works with the current changes on a feature branch. Currently this does not work for 3rd party contributions.
- #634 Fixes some copy/paste typos from a merge conflict.
- #635 Removes the fatal override of
waitUntilFinished()
. - #639 Thread safety improvements to
ProcedureProcedure
in ProcedureKitMac. - #643 Further testing of
DidExecute
observers. AddscheckAfterDidExecute
API toProcedureKitTestCase
. - #649 Removes all code signing settings.
- #644 Fixes issues for ProcedureKitCloud in Xcode 8.2 - as they've changed some APIs here.
- #647 Marks non-open properties/methods as
final
. - #650 Adds more tests for cancelling
Condition
subclasses. - #655 Removes the beta tag from the internal framework versioning.