El proyecto PaSh, que desarrolla herramientas para la ejecución paralela de scripts shell, ha anunciado su transición bajo el patrocinio de la Linux Foundation, que proporcionará la infraestructura y servicios necesarios para continuar con el desarrollo. El código del proyecto se distribuye bajo la licencia MIT e incluye componentes en los lenguajes Python, Shell, C y OCaml.
PaSh incluye un compilador JIT, un runtime y una biblioteca de anotaciones:
- El runtime proporciona un conjunto de primitivos para soportar la ejecución paralela de scripts.
- La biblioteca de anotaciones define un conjunto de propiedades que describen las situaciones en las que se permite la paralelización de comandos individuales de POSIX y GNU Coreutils.
- El compilador JIT descompone el script shell propuesto en un árbol de sintaxis abstracto (AST), lo divide en fragmentos aptos para la ejecución paralela y forma un nuevo script a partir de ellos, las partes del cual pueden ejecutarse simultáneamente. La información sobre los comandos que permiten la paralelización es obtenida por el compilador de la biblioteca de anotaciones. Durante el proceso de generación del script ejecutable en paralelo, se insertan construcciones adicionales del runtime en el código.

Por ejemplo, un script que procesa dos archivos f1.md y f2.md cat f1.md f2.md | tr A-Z a-z | tr -cs A-Za-z ‘\n’ | sort | uniq | comm -13 dict.txt — > out cat out | wc -l | sed ‘s/$/ palabras mal escritas!/' en condiciones normales procesará los dos archivos de forma secuencial:


Fuente: opennet.ru
