Pnut — преобразование подмножества C99 в POSIX shell

Pnut — транспилятор C, который преобразует подмножество кода C99 в читаемые скрипты POSIX shell. Он предназначен для создания переносимых shell-скриптов без прямого написания кода на shell, а также для самовоспроизводимых сборок компиляторов.
Возможности и состав проекта
Pnut поддерживает компиляцию C-кода в shell-скрипты, включая препроцессор, файловый ввод-вывод и динамическое выделение памяти. Скрипты, созданные Pnut, могут включать исходный C-код в виде комментариев. Поддерживается интеграция с существующими shell-скриптами через директиву #include "file.sh".
Начало работы и требования
Pnut генерирует чистый POSIX shell-код, который может выполняться в любой POSIX-совместимой оболочке, такой как ksh, dash или bash. Для сборки Pnut требуется git, make и совместимый C-компилятор. Проект имеет ограничения в поддержке C, например, отсутствие плавающей точки, беззнаковых целых чисел и goto.
Ограничения и выбор сценария
Pnut не является полной реализацией C99: README исключает плавающую точку, беззнаковые целые, goto и ряд вариантов указателей, массивов и структур. Перенос программы требует проверки поддерживаемого подмножества. Читаемый shell-результат полезен для bootstrap и аудита сборки, но производительность и поведение зависят от оболочки; их нельзя приравнивать к нативной C-сборке.
Лицензия и условия использования
GitHub определяет лицензию репозитория как BSD-2-Clause. Перед использованием и распространением проверьте полный текст LICENSE и отдельные условия зависимостей, данных или моделей: лицензия репозитория не заменяет их лицензии.





