27.10.2021

Система распараллеливания shell-скриптов PaSh перешла под крыло Linux Foundation

Проект PaSh, развивающий инструменты для параллельного выполнения shell-скриптов, объявил о переходе под покровительство организации Linux Foundation, которая предоставит инфраструктуру и сервисы, необходимые для продолжения разработки. Код проекта распространяется под лицензией MIT и включает компоненты на языках Python, Shell, C и OCaml.

PaSh включает JIT-компилятор, runtime и библиотеку аннотаций:

  • Runtime предоставляет набор примитивов для поддержки параллельного выполнения скирптов.
  • Библиотека аннотаций определяет набор свойств, описывающих ситуации в которых допускается распараллеливание отдельных команд POSIX и GNU Coreutils.
  • Компилятор на лету разбирает предложенный Shell-скрипт в абстрактное синтаксическое дерево (AST), разбивает на фрагменты, пригодные для параллельного выполнения, и формирует на их основе новый вариант скрипта, части которого могут выполняться одновременно. Информация о командах, которые допускают распараллеливания, берётся компилятором из библиотеки аннотаций. В процессе генерации параллельно выполняемого варианта скрипта в код подставляются дополнительные конструкции из Runtime.

Например, скрипт, обрабатывающий два файла f1.md и 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/$/ mispelled words!/'

в обычных условиях обработает два файла последовательно: а при запуске под управлением PaSh будет разбит на два одновременно выполняемых потока, каждый из которых обрабатывает свой файл: Источник.