Skip to content

[6.0][SE-0435] Implement per target swift version selection #7567

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

Merged
merged 9 commits into from
May 16, 2024

Conversation

xedin
Copy link
Contributor

@xedin xedin commented May 15, 2024

  • Explanation:

Implementation of SE-0435 proposal.

Add a new Swift target setting API, similar to enable{Upcoming, Experimental}Feature,
to specify a Swift language version that should be used to build the target, if such
version is not specified, fallback to the current language version determination logic.

xedin added 9 commits May 15, 2024 09:54
Swift Forums pitch thread - https://forums.swift.org/t/pitch-swiftpm-swift-language-version-per-target/71067

Add a new Swift target setting API, similar to `enable{Upcoming, Experimental}Feature`,
to specify a Swift language version that should be used to build the target, if such
version is not specified, fallback to the current language version determination logic.

Resolves: rdar://125732014
(cherry picked from commit 7d47669)
…sion`

The value of this field is computed based on the tools version
of the manifest and is intended to be used as a fallback if there
is no swift language version specified in the build settings for
a swift target.

(cherry picked from commit e53bb51)
… into `toolsSwiftVersion`

(cherry picked from commit 3bedafa)
…SION` declaration

Instead of putting it into `OTHER_SWIFT_FLAGS`, let's introduce
a dedicated declaration scope - `SWIFT_VERSION` to ease handling
and discovery.

Resolves: rdar://127883018
(cherry picked from commit 9183b7c)
This setting is going to be used if there are no non-default
assignments that match build environment conditions.

(cherry picked from commit eb3abcd)
…of a build setting

Start using "default" assignments to represent tools version
based swift language version setting that is going to be produced
by `BuildSettings.Scope` if no other assignments match build
environment conditions.

This removes ambiguity from `-swift-version` selection for
downstream clients.

(cherry picked from commit b0e724b)
Since `toolSwiftVersion` is gone and swift language version is
now handled by the build settings we need to adjust `PIFBuilder`
to handle that properly.

PIF build settings can handle per-target platform specific settings
which are now expressible in SwiftPM via `.swiftLanguageVersion`
build setting, handling of such settings is implemented in this commit.

(cherry picked from commit 3793551)
@xedin xedin added the swift 6.0 Related to Swift 6.0 release branch label May 15, 2024
@xedin
Copy link
Contributor Author

xedin commented May 15, 2024

@swift-ci please test

@xedin
Copy link
Contributor Author

xedin commented May 15, 2024

@swift-ci please clean test Linux platform

@xedin xedin merged commit d05b594 into swiftlang:release/6.0 May 16, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
swift 6.0 Related to Swift 6.0 release branch
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants