A system for parallelizing POSIX shell scripts.
Quick Jump: Running PaSh | Installation | Testing | Repo Structure | Community & More
To parallelize, say, ./evaluation/intro/hello-world.sh with parallelization width of 2, from the top-level directory of the repository run:
./pa.sh ./evaluation/intro/hello-world.shRun ./pa.sh --help to get more information about the available commands.
See docs/tutorial for a longer tutorial.
On Ubuntu, Fedora, Debian, or Arch, run curl up.pash.ndr.md | sh to setup PaSh.
Alternatively, you can clone the repo and run ./scripts/distro-deps.sh; ./scripts/setup-pash.sh
You can also built the Docker container from scratch by running
git clone git@github.com:andromeda/pash.git
cd pash/scripts
docker build -t "pash/18.04" .
# Then launch container:
docker run --name pash-play -it pash/18.04More installation instructions in the tutorial.
Remember to export PASH_TOP in your startup scripts!
On Windows, first install the Windows Subsystem for Linux and then setup PaSh normally.
To execute the current tests before committing and pushing code, simply run:
./scripts/run_tests.shThis repo hosts the core pash development. The structure is as follows:
- annotations: DSL characterizing commands, parallelizability study, and associated annotations.
- compiler: Shell-Dataflow translations and associated parallelization transformations.
- docs: Design documents, tutorials, installation instructions, etc.
- evaluation: Shell pipelines and example scripts used for the evaluation.
- runtime: Runtime component — e.g.,
eager,split, and assocaited combiners. - scripts: Scripts related to continuous integration, deployment, and testing.
Mailing Lists:
- pash-users: Join this mailing list for discussing all things
pash - pash-commits: Join this mailing list for commit notifications
Development/contributions:
- Contribution guide: docs/contrib
- Continuous Integration Server: ci.pash.ndr.md