Open-source

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

Обзор по документации проекта · Проверено

Pnut — изображение проекта

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 и отдельные условия зависимостей, данных или моделей: лицензия репозитория не заменяет их лицензии.

Источники и документация