参照
提案概要
- SwiftPackageManagerにおいて、Package.swiftを記述する際に、Target単位で異なるSwiftバージョンを指定できるようになる
- 今まではPackageごとにしか指定できなかった
なぜ必要か
- 一部Sourceにおいて互換性の問題がある場合に、新規言語機能について該当Targetを対象外にすることが可能になる
どのように使うか
- 以下APIが生える
public struct SwiftSetting {
// ... other settings
@available(_PackageDescription, introduced: 6.0)
public static func swiftLanguageVersion(
_ version: SwiftVersion,
_ condition: BuildSettingCondition? = nil
) -> SwiftSetting {
...
}
}ので、
Pacakge.swift でTargetを定義する際に、swiftSettingsの配列に渡す
.target(
// 略
swiftSettings: [.swiftLanguageVersion( /* version, condition指定 */ )],
)いつ使うか
- 例えばStrictConcurrecnyChecking対応
その他備考
- Swift6から
- 実装済み
技術メモ