Site icon image技術メモ

[SE-0435]Swift Language Version Per Target

参照


提案概要

  • 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から
  • 実装済み