Skip to content

4.0.0 Beta 6

Pre-release
Pre-release
Compare
Choose a tag to compare
@danthorpe danthorpe released this 16 Dec 18:00
· 384 commits to development since this release

4.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

  1. #631, #632 Result injection is now supported for NetworkDataProcedure et. al. This API is called injectPayload(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.

  2. #592 Adds UIProcedure and AlertProcedure 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

  1. #623 Adds ProcedureKit/All CocoaPod sub-spec which corresponds to all the cross platform components.
  2. #625 Tweaks for TestingProcedureKit imports.
  3. #626, #627,#640, #646 Tweaks Network procedures so that cancellation is thread safe, avoids a potential race condition, and testing enhancements.
  4. #624 Some minor fixes after a through investigation with the visual memory debugger - which can produce erroneous leak indicators.
  5. #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.
  6. #634 Fixes some copy/paste typos from a merge conflict.
  7. #635 Removes the fatal override of waitUntilFinished().
  8. #639 Thread safety improvements to ProcedureProcedure in ProcedureKitMac.
  9. #643 Further testing of DidExecute observers. Adds checkAfterDidExecute API to ProcedureKitTestCase.
  10. #649 Removes all code signing settings.
  11. #644 Fixes issues for ProcedureKitCloud in Xcode 8.2 - as they've changed some APIs here.
  12. #647 Marks non-open properties/methods as final.
  13. #650 Adds more tests for cancelling Condition subclasses.
  14. #655 Removes the beta tag from the internal framework versioning.