package resources (such as image assets) • License and metadata support • Explicit support for handling source control forking • Generic mechanism for invoking build tools that the package manager doesn’t natively support
10-11am PST, package manager developers will be available for a dedicated hour in the (unofficial) SwiftPM Slack channel to answer questions about this roadmap;
can now use --enable-prefetching to clone dependencies in parallel (e.g. $ swift build --enable- prefetching or $ swift package --enable-prefetching update). The issues around dependency resolution with edit mode are also fixed. Grab a master or 3.1 branch snapshot from https://swift.org/download/#snapshots
USAGE: swift build [options] OPTIONS: --build-path Specify build/cache directory [default: ./.build] --chdir, -C Change working directory before any other operation --color Specify color mode (auto|always|never) [default: auto] --configuration, -c Build with configuration (debug|release) [default: debug] --enable-prefetching Enable prefetching in resolver --verbose, -v Increase verbosity of informational output -Xcc Pass flag through to all C compiler invocations -Xlinker Pass flag through to all linker invocations -Xswiftc Pass flag through to all Swift compiler invocations
USAGE: swift package [options] subcommand OPTIONS: --build-path Specify build/cache directory [default: ./.build] --chdir, -C Change working directory before any other operation --color Specify color mode (auto|always|never) [default: auto] --enable-prefetching Enable prefetching in resolver --verbose, -v Increase verbosity of informational output -Xcc Pass flag through to all C compiler invocations -Xlinker Pass flag through to all linker invocations -Xswiftc Pass flag through to all Swift compiler invocations
state, do not pin it. - guard !dependency.isInEditableState else { - delegate.warning(message: "not pinning \(package) because it is being edited.") - continue + + // Get the managed dependency. + var dependency = dependencyManifest.dependency + + // For editable dependencies, pin the underlying dependency if we have them. + if dependency.isInEditableState { + if let basedOn = dependency.basedOn { + dependency = basedOn + } else { + delegate.warning(message: "not pinning \(package). It is being edited but is no longer needed.") + continue + }
results merged into the `assignment`. /// /// - Parameters: /// - constraints: The input list of constraints to solve. /// - assignment: The assignment to merge the result into. /// - allConstraints: An additional set of constraints on the viable solutions. /// - allExclusions: A set of package assignments to exclude from consideration. /// - Returns: A sequence of all valid satisfying assignment, in order of preference. private func merge( constraints: [Constraint], into assignment: AssignmentSet, subjectTo allConstraints: ConstraintSet, excluding allExclusions: [Identifier: Set<Version>] ) -> AnySequence<AssignmentSet> { var allConstraints = allConstraints if enablePrefetching { // Ask all of these containers upfront to do async cloning. for constraint in constraints { provider.getContainer(for: constraint.identifier) { _ in } } }