Use more recent default target for MacOS?


Would it make more sense to use a closer default MacOS target for SwiftPM ?
Currently, the hardcoded default target is 10.10.
I know there is a proposal to support overloading your own in your package file: Draft Proposal: Target Specific Build Settings - #43 by blangmuir

However, it seems the 10.10 default is now quite ancien and may need to be reevaluated ? Maybe 10.12 would make more sense ?

What do you think ?

I'd suggest to use iOS way for deployment target - use the most recent one.

I did not dare be so radical, but I think it would be even simpler.
If you do not want to to target latest version, you could always override it.

I suspect today, a vast majority of SwiftPM users are probably on the latest MacOS version.

We have resisted changing the default because it can break packages and introduce warnings in other cases. I think the current thinking is that needing to manually specify a newer default when required by a package is actually a valuable piece of information, worth having in the manifest.


You could maintain that behavior on old manifests, but the ones with the swift-tools-version equal or higher to 5 should build against the last macOS SDK available (unless you override it with SE-0236: Package Manager Platform Deployment Settings).

One of the points mentioned in SE-0236 is that SwiftPM will choose the oldest supported deployment target (with an exception that it'll start from 10.10 for macOS as the oldest supported is 10.6 or something) if you don't explicitly specify one. So if the proposal is accepted, we shouldn't change the 10.10 as the default deployment target.

The deployment target isn't the same as the SDK you build against. It only makes sense to prefer the current running OS (not the SDK) if your package is only going to be run on the current OS, and that just isn't true in most cases.

1 Like