Pitch: Simplifying target based dependencies syntax

First, for clarification, “the last path component of the URL” means the URL list in the dependencies section, regardless of any configured mirrors, or similar adjustments correct?


This change will surface URL details in more places. If this is going to happen we need to formalize exactly what representation SwiftPM expects for the manifest, and how all build tools should interpret it. Is the URL in the manifest the user‐facing kind you type in your address bar (pre‐percent encoding), or is it the strict network kind you use in a DNS request (post‐percent encoding)?

SwiftPM itself has thus far required the pre‐percent encoding form, but Xcode has waffled back and forth from release to release. Currently the two are at odds again (5.3.3 vs 12.4), and it requires if ProcessInfo.processInfo.environment["PATH"] shenanigans to support both tools.

This is of immense importance, because where I currently have this...

.product(name: "ΜΘΔΜΠΚ", package: "ΜΘΔΜΠΚ")

...I do not see this as an improvement:

.product(name: "ΜΘΔΜΠΚ", package: "%CE%9C%CE%98%CE%94%CE%9C%CE%A0%CE%9A")