Light-touch Data-Parallel Shell Scripting

Please join us at our
hackathon at MIT on Thursday, February 24th, 2022!


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

  • #557 Evaluation timing result consistency..
  • #551 Posix Tests CI doesn't work with forks..
  • #549 Avoiding compilation overhead in fragments where compilation..
  • #548 Logging commit (and/or release) id when in..

Community & More