PaSh: Light-Touch, Practically Correct, Just-in-Time Shell Script Parallelization

November 29, 2022

Nikos Vasilakis


PaSh: Light-Touch, Practically Correct, Just-in-Time Shell Script Parallelization

Time:   11:00am
Location:   Zoom3 - https://zoom.us/j/3911012202 (pass: @s3)

Unix / Linux shell scripting is ubiquitous, partly due to the simplicity in which it allows combining third-party components (commands) written in any programming language. Unfortunately, this language-agnostic composition hinders automated parallelization, often forcing developers to manually rewrite shell scripts and their third-party components in other languages that support these features.

In this talk I will present PaSh, a system for parallelizing Unix/Linux shell scripts. PaSh combines a just-in-time transcompiler that blends static pre-processing with dynamic interposition, a high-level annotation framework for expressing partial command specifications, and a collection of runtime primitives that support the execution of parallel shell scripts. PaSh achieves order-of-magnitude speedups on unmodified shell scripts, all while requiring no modifications to the system’s underlying shell interpreter and while remaining virtually indistinguishable from Bash across the entire POSIX test suite. PaSh is worked on by several institutions, has received multiple awards, and is open-source software available by the Linux Foundation.