Pitch: support specifying Wasm features in package manifests

The pitch is about broadening support for WebAssembly in SwiftPM only, not the whole upstream toolchain, as I mentioned in the disclaimer. Upstream SwiftPM already has support for .wasi platform, which is especially handy with conditional target dependencies introduced in Swift 5.3. It allowed us to write libraries supporting the SwiftWasm toolchain and compatible with the upstream toolchain at the same time.

There are many other platforms where supporting all "core libraries" wouldn't be feasible (AVR and any other bare metal platform). I hope we'd rather consider other options as "micro" runtimes and subsets of stdlib stripped out for platforms with constraints, which would greatly broaden portability of Swift in general. Or maybe something akin to tiered platform support in Rust.

As I wrote in the other thread, we at SwiftWasm would very much like to strip as much as possible (and core libraries too) for certain apps because of binary size constraints. But what the upstream toolchain considers as "a supported platform" shouldn't have much if any impact on this pitch, as rudimentary support for WASI is already there in upstream 5.3 SwiftPM.