This parallel Tasks/Threads package ChannelBuffers implements piped streams in
curl("...file.tgz") | gunzip() | tarx("target-dir") |> run |> wait
Each job is performed in a separate task; tasks may be spawned in different threads.
Each job is implemented by a function
f(cin::IO, cout::IO, args...), which is straight forward in the above examples.