Light-touch Data-Parallel Shell Scripting

Between July 11–13, 2022 PaSh will be at
OSDI'22, in Carlsbad, CA!


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/ with a parallelization width of 2, from the top-level directory of the repository run:

./ ./evaluation/intro/

Run ./ --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:

More installation instructions in the tutorial. Remember to export PASH_TOP in your startup scripts!

More Info

Recent News

Further Reading

Issues That Need Help

  • #613 Bump PaSh's python dependency to 3.7..
  • #573 Parse error in gnulib-tool..
  • #571 Incompatibility with POSIX sh returns incorrect results...
  • #557 Evaluation timing result consistency..

Community & More