Появился production-ready шаблон для создания приложений под Flipper Zero на языке Zig. Проект сам настраивает интеграцию между компиляцией Zig под ARM Cortex-M4 и официальным Flipper SDK. Всё, что нужно разработчику — написать код на Zig, а сборку и упаковку в .fap-файл шаблон берёт на себя.
Процесс разбит на два этапа. Сначала Zig собирает исходники в объектный файл app.o для архитектуры thumb с CPU cortex-m4 и ABI eabihf (Embedded Application Binary Interface, Hard Float). Оптимизация по умолчанию — ReleaseSmall, чтобы бинарник был минимальным. Затем в дело вступает UFBT (Unofficial Flipper Build Tool) — он линкует объектник с SDK и пакует готовый .fap. После этого приложение можно сразу запустить на подключённом по USB Flipper Zero.
Из требований: Zig версии 0.15.1 или новее, UFBT (ставится через pip), Python 3. SDK автоматически скачивается в ~/.ufbt. Шаблон из коробки настроен под ARM64 macOS, но путь к тулчейну легко правится в build.zig.
В src/root.zig лежит минимальный пример "Hello World". Он подключает заголовки SDK через @cImport() — FURI, HAL, библиотеки для Sub-GHz, NFC, RFID, Infrared, периферию (GPIO, SPI, I2C, UART). Все экспортируемые функции должны использовать ARM AAPCS calling conventions, а для колбэков с плавающей точкой — AAPCS-VFP. Некоторые сложные заголовки вроде input/input.h Zig не может переварить автоматически, поэтому для таких случаев в шаблоне показано, как объявить внешние функции вручную.
В документации разобраны типичные проблемы: заголовок furi.h не найден (лечится ufbt update), ошибки линковки (undefined reference) — надо использовать команду zig build fap, а не просто zig build. Если устройство не обнаружено — проверьте USB и убедитесь, что Flipper разблокирован. При падении приложения стоит увеличить stack_size в application.fam или проверить calling conventions.
Шаблон легко кастомизировать: в build.zig можно менять макросы через addCMacro и выбирать другой уровень оптимизации — ReleaseFast или Debug. Если нужно портировать на другой ARM-чип, достаточно поменять cpu_model и abi в конфиге цели. Проект распространяется под лицензией MIT, это неофициальный шаблон, не связанный с Flipper Devices.