but this makes the libraries much harder to test, because each component has an independently-incrementing version series. it will never be possible to test enough of the (exponential) combinations of versions people could be using, so you end up with a lot of it works on my machine ¯_(ツ)_/¯.
there is not going to be any overhead associated with the unused targets in a package dependency in the compiled binaries, so it just doesn’t seem to be a worthy tradeoff in my opinion.
i can think of at least two things NIO could do to alleviate this problem:
-
NIO could move the examples to a nested swift package in the same repo, like it is already doing for its benchmarks.
-
NIO could convert some of the simpler examples into SPM Snippets, which were designed for exactly this situation and would go a long way towards reducing the manifest clutter.
@FranzBusch WDYT?
in general i have found the newer channel interfaces to have fewer problems with swift concurrency than the old handler interfaces.
one thing i would suggest (for NIO) is promoting the HTTPByteBufferResponsePartHandler
mentioned earlier to an actual library API. i actually re-invented the same type about a month ago when i was dealing with the same IOData
-concurrency problem, so there’s definitely a need here.