Hello, I am looking to learn more about the concurrency pitches/proposals by using the experimental toolchain
- Implementation: Available in recent
main
snapshots behind the flag-Xfrontend -enable-experimental-concurrency
I have the toolchain installed and Xcode is aware of it.
I created a simple Swift Package with some simple async code just to play about. Xcode, correctly warned that the features aren't available unless the -Xfrontend
flag is passed.
If the Package.swift manifest is altered to include that flag in the SwiftSettings, then Xcode is satisfied and code checking appears to work.
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "ConcurrencyExperiment",
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages this package depends on.
.target(
name: "ConcurrencyExperiment",
dependencies: [],
swiftSettings: [
.unsafeFlags(["-Xfrontend -enable-experimental-concurrency"])
]
),
.testTarget(
name: "ConcurrencyExperimentTests",
dependencies: ["ConcurrencyExperiment"]),
]
)
However, neither Xcode, nor SPM from the command line appear to be able to build from the package, giving the error:
Xcode:
<unknown>:0: error: unknown argument: '-Xfrontend -enable-experimental-concurrency'%
SwiftPM:
/Library/Developer/Toolchains/swift-PR-35059-806.xctoolchain/usr/bin/swift build <unknown>:0: error: unknown argument: '-Xfrontend -enable-experimental-concurrency'%
Am I using SPM wrongly here, am I making an obvious error, or should I expect this to work?
Thanks.