Le projet PaSh, qui développe des outils pour l'exécution parallèle de scripts shell, a annoncé qu'il évolue sous les auspices de la Linux Foundation, qui fournira l'infrastructure et les services nécessaires à la poursuite du développement. Le code du projet est distribué sous licence MIT et comprend des composants en Python, Shell, C et OCaml.
PaSh comprend un compilateur JIT, un runtime et une bibliothèque d'annotations :
- Le runtime fournit un ensemble de primitives pour prendre en charge l'exécution parallèle de scripts.
- La bibliothèque d'annotations définit un ensemble de propriétés qui décrivent les situations dans lesquelles la parallélisation de commandes individuelles POSIX et GNU Coreutils est autorisée.
- Le compilateur analyse à la volée le script Shell proposé dans un arbre de syntaxe abstraite (AST), le divise en fragments adaptés à une exécution parallèle et forme sur leur base une nouvelle version du script, dont certaines parties peuvent être exécutées simultanément. Les informations sur les commandes permettant la parallélisation sont extraites par le compilateur de la bibliothèque d'annotations. Lors du processus de génération d'une version exécutée en parallèle du script, des constructions supplémentaires du Runtime sont insérées dans le code.
Par exemple, un script qui traite deux fichiers f1.md et f2.md cat f1.md f2.md | tr AZ az | tr -cs A-Za-z '\n' | trier | unique | comm -13 dict.txt — > out cat out | wc-l | sed 's/$/ mots mal orthographiés !/' traiterait normalement deux fichiers séquentiellement :
Source: opennet.ru