This is the distinction I was trying to draw: process and tasks are fundamentally different. One is a construct defined by Swift structural concurrency, which concerns undefined behavior due to overlapping exclusive/exclusive or exclusive/non-exclusive accesses within a process; one is the process itself, which is out side of realm of swift structural concurrency (most likely outside of Swift itself too since Subprocess
launches any process, not just processes written in Swift). Therefore I disagree with the comparison here.
It's okay for us to decide that functionally and conceptually speaking it makes the most sense to terminate the subprocess when the parent process goes out of scope for this API. I'm simply disagreeing with the notion that "this should be done because Swift structural concurrency dictated so"