PaSh: Light-touch Data-Parallel Shell Processing
A system for parallelizing POSIX shell scripts. Hosted by the Linux Foundation.
Quick Jump: Running PaSh | Installation | Testing | Repo Structure | Community & More | Citing
Installation via pip (Recommended)
pip install binpash-pash
pash -c "echo hi"
Running PaSh
To parallelize, say, ./evaluation/intro/hello-world.sh with parallelization degree of 2× run:
pash -w 2 ./evaluation/intro/hello-world.sh
If the script contains bash specific syntax, add the beta --bash flag to enable support.
Run pash --help to get more information about the available commands.
Jump to docs/tutorial for a longer tutorial.
Local testing (development)
To install and run PaSh for local development:
pip install -e .
pash --help
pash -c "echo hello | cat"
./scripts/run_tests.sh
For more details, manual installation, or other platforms see installation instructions.
Running with a local annotations library
To run with a local version of the library, please refer to the documentation local annotations setup and usage
Repo Structure
This repo hosts the core pash development. The structure is as follows:
- src/pash/: Main Python package (installed via pip)
- preprocessor: Parses shell scripts, expands variables, and identifies dataflow regions for compilation.
- compiler: Translates shell dataflow regions to IRs and applies parallelization transformations.
- jit_runtime: Just-in-time runtime that executes compiled regions and manages shell state.
- runtime: Runtime components — e.g.,
eager,split, and associated combiners.
- docs: Design documents, tutorials, installation instructions, etc.
- evaluation: Shell pipelines and example scripts used for the evaluation.
- scripts: Scripts related to continuous integration, deployment, and testing.
Community & More
Chat:
Mailing Lists:
- pash-devs: Join this mailing list for discussing all things
pash - pash-commits: Join this mailing list for commit notifications
Development/contributions:
- Contribution guide: docs/contributing
- Continuous Integration Server: ci.binpa.sh
Citing
If you used PaSh, consider citing the following paper:
@inproceedings{pash2021eurosys,
author = {Vasilakis, Nikos and Kallas, Konstantinos and Mamouras, Konstantinos and Benetopoulos, Achilles and Cvetkovi\'{c}, Lazar},
title = {PaSh: Light-Touch Data-Parallel Shell Processing},
year = {2021},
isbn = {9781450383349},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3447786.3456228},
doi = {10.1145/3447786.3456228},
pages = {49–66},
numpages = {18},
keywords = {POSIX, Unix, pipelines, automatic parallelization, source-to-source compiler, shell},
location = {Online Event, United Kingdom},
series = {EuroSys '21}
}
Metadata
Release files for binpash-pash 0.16.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| binpash_pash-0.16.5.tar.gz | 107.6 kB | Details |
Release files / binpash_pash-0.16.5.tar.gz
| Download URL | binpash_pash-0.16.5.tar.gz |
|---|---|
| Size | 107.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
350a987dfe0440a881da056ed69fcd908a5a40899ae4ea68e8e2a3cfe78d9b29
|
|
BLAKE2b-256 checksum How to use checksums |
2ac28302340806ec03c88177e0b639bd16f6dd67268ff071bf1f0e6d1a392dd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 22, 2026.
Transparency log