**************** Planned Features **************** This is a list of features that *may* be implemented in the future. Reading commands from files =========================== Commands can be read from files using :manpage:`xargs(1)`. However, :command:`xargs` reads commands in chunks, so that :command:`para` is called repeatedly for subsets of those commands, limiting parallelization. For example, .. code:: bash $ for file in *.foo > do printf '%s\0' "$file" "${file%.foo}.bar" > done | > para -0f- -k'mv {} {}' would be more efficient than .. code:: bash $ for file in *.foo > do printf '%s\0' "$file" "${file%.foo}.bar" > done | > xargs -0 -n256 para -k'mv {} {}' Dependencies ============ Para could run pipelines in parallel, rather than commands. This would allow users to, say, to run :command:`foo` and :command:`bar` in parallel, but only run :command:`baz` once, and if, :command:`bar` has succeeded; for example:: $ para foo 'bar; baz' Per-job environments and I/O streams ==================================== Jobs that lend themselves to parallelization tend to be similar. Still, it may be useful to be able to specify different environments and I/O redirections for different jobs, for example:: $ para 'find /foo -name '*bar*' >find.out' 'PYTHONPATH=/qux qux >qux.out' The syntax should mimic that of the :command:`sh`. Calling commands via :command:`sh` ================================== Another way to implement dependencies and per-job environments and I/O streams would be to allow users to run commands via :command:`sh -c`.