PaSh aims at the correct and automated parallelization of POSIX shell scripts. Broadly, PaSh includes three components: (1) a compiler that, given as input a POSIX shell script, emits a POSIX shell script that includes explicit data-parallel fragments for which PaSh has deemed such parallelization semantics-preserving, (2) a set of PaSh-related runtime primitives for supporting the execution of the parallel script fragments, available as in the PATH
as normal commands, and (3) a crowd-sourced library of annotations characterizing several properties of common Unix/Linux commands relevant to parallelization.
To parallelize, say, ./evaluation/intro/hello-world.sh
with a parallelization width of 2
, from the top-level directory of the repository run:
./pa.sh ./evaluation/intro/hello-world.sh
Run ./pa.sh --help
to get more information about the available commands. See docs/tutorial for a longer tutorial.
PaSh has been run on Ubuntu, Fedora, Debian, and Arch. Use one of the following ways to set it up:
curl up.binpa.sh | sh
from your terminal,./scripts/distro-deps.sh; ./scripts/setup-pash.sh
,docker pull binpash/pash-18.04
, or
More installation instructions in the tutorial.
Remember to export
PASH_TOP
in your startup scripts!
Recent News
Further Reading
Issues That Need Help