-
-
Notifications
You must be signed in to change notification settings - Fork 601
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Windows Support #1088
Add Windows Support #1088
Conversation
We need to preserve the CFRunLoopStop calls for platforms which can use CoreFoundation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good overall.
My concern with accepting this is I don't have a windows machine to be able to locally verify I don't break anything, forcing me to rely on CI to double-check things.
This work is valuable, so I don't want to throw it away, but I'm noting that the risk of bitrot with this is high.
Yeah, this is certainly a concern. There are ways around not having a machine (like sshing into a runner to debug) but I'm happy to help as needed to see what assistance I can provide. I imagine this might be a common concern from maintainers so I totally understand. |
I'll be sure to keep that in mind! Thanks for this! |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [Quick/Nimble](https://github.com/Quick/Nimble) | major | `from: "12.3.0"` -> `from: "13.0.0"` | --- ### Release Notes <details> <summary>Quick/Nimble (Quick/Nimble)</summary> ### [`v13.0.0`](https://github.com/Quick/Nimble/releases/tag/v13.0.0) [Compare Source](https://github.com/Quick/Nimble/compare/v12.3.0...v13.0.0) ### Highlights #### New Features - Nimble now supports Windows! (Thanks [@​brianmichel](https://github.com/brianmichel)!) - the `Predicate` series of APIs has been renamed to `Matcher`. There are typealiases for the older APIs to better enable migrations. These typealiases will be marked as removed in the next major version of Nimble (Nimble 14), and they will be removed entirely in Nimble 15. - Nimble now supports the DriverKit platform. #### Breaking Changes - The `Predicate` series of APIs have been renamed. - The `AsyncDefaults` struct is now marked as removed. It will be fully removed in the next major version of Nimble. - The platform-independent targets in `Nimble.xcodeproj` have now been consolidated into a single Nimble (and NimbleTests) target. #### Other Notes - No changes since [Nimble 13 RC 1](https://github.com/Quick/Nimble/releases/tag/v13.0.0-rc.1). ### Automated Release Notes #### What's Changed - Update release script for a more modern-ish release process by [@​younata](https://github.com/younata) in [https://github.com/Quick/Nimble/pull/1086](https://github.com/Quick/Nimble/pull/1086) - Bump cocoapods from 1.12.1 to 1.13.0 by [@​dependabot](https://github.com/dependabot) in [https://github.com/Quick/Nimble/pull/1089](https://github.com/Quick/Nimble/pull/1089) - Add Windows Support by [@​brianmichel](https://github.com/brianmichel) in [https://github.com/Quick/Nimble/pull/1088](https://github.com/Quick/Nimble/pull/1088) - Rename Predicate to Matcher by [@​younata](https://github.com/younata) in [https://github.com/Quick/Nimble/pull/1090](https://github.com/Quick/Nimble/pull/1090) - Mark the AsyncDefaults struct as removed. by [@​younata](https://github.com/younata) in [https://github.com/Quick/Nimble/pull/1092](https://github.com/Quick/Nimble/pull/1092) - Consolidate xcodeproj targets (... again). by [@​younata](https://github.com/younata) in [https://github.com/Quick/Nimble/pull/1093](https://github.com/Quick/Nimble/pull/1093) - Bump actions/checkout from 3 to 4 by [@​dependabot](https://github.com/dependabot) in [https://github.com/Quick/Nimble/pull/1091](https://github.com/Quick/Nimble/pull/1091) #### New Contributors - [@​brianmichel](https://github.com/brianmichel) made their first contribution in [https://github.com/Quick/Nimble/pull/1088](https://github.com/Quick/Nimble/pull/1088) **Full Changelog**: Quick/Nimble@v12.3.0...v13.0.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDAuMCIsInVwZGF0ZWRJblZlciI6IjM2LjEwMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: Self-hosted Renovate Bot <361546+cgrindel-self-hosted-renovate[bot]@users.noreply.github.enterprise.com>
Adds support for compiling and using Nimble when using Swift on Windows.
This PR is a mostly mechanical change except the bits around the RunLoop that I had to work around since CoreFoundation does not exist on Windows. Unfortunately, the only way to get all of the polling stuff running was to use the SPI
_stop()
on theRunLoop
implementation which specifically exists for XCTest it seems. I've filed an issue here swiftlang/swift-corelibs-foundation#4826 to better understand the trajectory for that function since there is no alternative to stopping a runloop otherwise.All tests should pass except the
throwAssertion
tests since I was unsure if they could be adjusted to function correctly on Windows.No function signatures have been modified as part of this PR as my goal is to use it in downstream libraries that we're trying to get running on Windows (LaunchDarkly).
I've also added a new CI job and pinned the Windows swift version to the 5.9 toolchain.