| CARVIEW |
PaSh0.9
Light-touch Data-Parallel Shell Scripting
Overview
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:
Run ./pa.sh --help to get more information about the available commands. See docs/tutorial for a longer tutorial.
Quick Setup
PaSh has been run on Ubuntu, Fedora, Debian, and Arch. Use one of the following ways to set it up:
- Run
curl up.binpa.sh | shfrom your terminal, - Clone the repo and run
./scripts/distro-deps.sh; ./scripts/setup-pash.sh, - Fetch a Docker container by running
docker pull binpash/pash-18.04, or - Build a Docker container from scratch.
More installation instructions in the tutorial.
Remember to export PASH_TOP in your startup scripts!
More Info
Recent News
- MIT News features an article on PaSh
- PaSh's new JIT compilation engine got into OSDI'22
- PaSh joins the Linux Foundation.
- ICFP21 paper on the correctness of PaSh's transformations.
- HotOS21 paper, roundtable, and report on the future of the shell.
Further Reading
- GitHub organization
- Installation instructions
- Short tutorial
- Academic papers
- Contribution guide
Issues That Need Help