Вышла Adi2, современная GUI-библиотека для Ada с CSS-стилями

Разработчик Альдо Николас Бруно опубликовал Adi2, набор виджетов (widget toolkit) для языка программирования Ada, написанный нативно на самой Ada поверх библиотеки SDL3. Проект уже используется в продакшене, но ещё не имеет стабильного релиза: по статусу из README API между версиями пока может меняться.
Главная идея Adi2, принести в Ada привычные веб-паттерны интерфейсной разработки. Стили задаются CSS-подобным синтаксисом с селекторами, псевдоклассами, градиентами, тенями и переходами (transitions) на цвете, фоне, границах, отступах, прозрачности и размере шрифта; правки в CSS-файле подхватываются на лету (live reload) без пересборки. Тот, кто предпочитает чистую Ada, может не использовать CSS вовсе: правила стиля, это обычные Ada-агрегаты типа Style_Rules, которые пишутся вручную. Разметку интерфейса можно описывать декларативно в XML (теги вроде
В библиотеку встроен облегчённый HTML-виджет для показа документации с каскадными стилями, растровые изображения идут через SDL3_image, SVG, через встроенный plutosvg, Lottie-анимации, через встроенный rlottie. Всё, CSS, шрифты, картинки, переводы, SVG-спрайты, можно упаковать прямо в исполняемый файл: релизная сборка со всем этим (движком CSS, рендерингом SVG и Lottie) статически линкуется в один бинарник размером менее 10 МБ, без зависимостей от файловой системы во время работы; размер растёт только за счёт кода и ассетов самого приложения. Локализация построена на gettext-совместимом i18n с формами множественного числа, автоопределением локали и компиляцией .po-файлов в Ada. Из отдельных единиц измерения для адаптивной вёрстки под разные плотности экрана (HiDPI) доступны dp/dip для раскладки, rem для типографики, pix для точного пикселя рендерера и px, которая либо следует масштабу экрана, либо нет, в зависимости от настройки.
Отдельная особенность, MCP-мост для разработки: он позволяет редакторам кода и ИИ-ассистентам делать скриншоты запущенного приложения, обходить дерево виджетов и управлять им, кликать по кнопкам, вводить текст, переводить фокус, читать счётчики производительности. Автор описывает это как удобный способ писать сквозные (end-to-end) тесты силами ИИ. Примеры Adi2 также компилируются в WebAssembly через GNAT-LLVM и Emscripten и работают прямо в браузере.
Рендеринг идёт через абстракцию SDL: на Windows это Direct3D, на macOS, Metal, там, где есть Vulkan или OpenGL, они, а на любом другом железе, программный рендеринг как база. Из-за этого один и тот же исходный код даёт бинарник, который запускается и на Windows XP (через Direct3D 9), и на современном Mac (через Metal). Проект протестирован на GNU/Linux, Windows XP/7/8/10/11 (через MinGW), macOS и WebAssembly (Emscripten); по словам автора, там, где собираются GNAT и SDL3, должно работать и всё остальное, включая BSD-системы.
Минимальный пример на XML+CSS с обработчиком нажатия кнопки укладывается в связку из CSS-файла, XML-разметки и примерно 25-строчной Ada-программы (hello_example.adb), которая просто подключает сгенерированный тулчейном пакет. Библиотека распространяется по лицензии Apache-2.0; вклад в проект по умолчанию считается сделанным на тех же условиях, подписывать отдельное соглашение о передаче прав (CLA) не нужно. Автор, независимый разработчик, поддержка и развитие проекта финансируются спонсорством; организации, которым нужны гарантированные сроки ответа или обязательства по доставке функциональности, могут обратиться за отдельным коммерческим соглашением на адрес adi@aldustechnology.com.
В списке того, что запланировано, но ещё не сделано (сроки и версии не названы): более широкий охват CSS-свойств и селекторов; таблицы, flex и grid в HTML-виджете; новые виджеты, дерево, таблица данных, меню, индикаторы прогресса, подсказки, разделяемые панели, выбор даты и цвета; готовые темы Material, Fluent, Adwaita и macOS в светлом и тёмном вариантах; поддержка письма справа налево и двунаправленного текста; доступность для программ чтения с экрана через AT-SPI, UI Automation и NSAccessibility; подключаемые бэкенды рендеринга, Win32/Direct2D, Cocoa, GLFW, raylib или Skia вместо SDL3; поддержка встраиваемых устройств; визуальный редактор интерфейса; скриптование через встроенный компилятор HAC; горячая перезагрузка для XML-разметки (сейчас так уже работает CSS); более надёжные колбэки, которые не роняют приложение при сбое; контракты Pre/Post/Type_Invariant и поднабор режима SPARK; стабильный C-интерфейс для вызова из других языков.
Автор также рассказывал про Adi2 на 3-м семинаре разработчиков Ada (Ada Developers Workshop) в рамках конференции AEiC 2026, 13 июня 2026 года, доклад был посвящён созданию приложения на Adi2 и управлению работающим интерфейсом из LLM через MCP-мост.
Ключевые факты
- Независимый разработчик Альдо Николас Бруно выпустил Adi2, GUI-тулкит для Ada поверх SDL3: CSS-стили с горячей перезагрузкой, декларативный XML для разметки интерфейса, анимации, поддержка SVG и Lottie, i18n, упаковка ассетов в один бинарник
- Релизная сборка со всем движком (CSS, SVG, Lottie), это один статический бинарник размером менее 10 МБ
- Есть MCP-мост для разработки: редакторы кода и ИИ-ассистенты могут делать скриншоты запущенного приложения, обходить дерево виджетов и управлять им для сквозных тестов
- Проект протестирован на GNU/Linux, Windows XP/7/8/10/11, macOS и WebAssembly; один код даёт бинарник и для Windows XP, и для современного Mac
- Статус, уже используется в продакшене, но релиз ещё не стабильный: API между версиями может меняться; лицензия Apache-2.0
Почему это важно
Ada, язык с узкой, но давней нишей, и современных, активно развивающихся GUI-тулкитов под него немного. Adi2 переносит в эту экосистему привычные веб-разработчику паттерны, CSS-стили с горячей перезагрузкой, декларативную XML-разметку, анимации и упаковку всего в единственный бинарник, при этом оставляя путь через чистую Ada без XML и CSS для тех, кто их не хочет. Для широкой аудитории вне сообщества Ada новость скорее нишевая, но внутри самого сообщества это заметное пополнение инструментария.
Кому это важно
В первую очередь, разработчикам на Ada, которым нужен современный виджет-тулкит для десктопных приложений с единым бинарником без внешних зависимостей от файловой системы. Также релевантно тем, кто интересуется кросс-платформенной разработкой на редких стеках (сборка одного и того же кода под Windows XP, современные Windows/macOS/Linux и WebAssembly), и тем, кто экспериментирует с управлением UI-приложениями из ИИ-агентов через протокол MCP.
Как это применить
Библиотека подключается к своему проекту через файл adi.gpr (линковка с SDL уже включена); публичные заголовки используют конструкции Ada 2022, поэтому модули, использующие пакеты Adi.*, должны собираться с pragma Ada_2022 или флагом -gnat2022. Интерфейс можно писать в XML+CSS с горячей перезагрузкой стилей на время разработки, либо конструировать виджеты напрямую в Ada-коде, оба подхода используют один и тот же API. Библиотека распространяется по лицензии Apache-2.0 и бесплатна для использования; организациям, которым нужна поддержка с гарантированными сроками или финансирование конкретной функции/порта, предлагается писать на adi@aldustechnology.com для отдельного коммерческого соглашения.
Можно ли доверять
Источник, официальный README проекта на GitHub, без сторонней проверки или сравнения с другими тулкитами. Сам проект честно указывает на предпродакшен-статус: API «ещё может меняться между версиями», хотя библиотека уже используется в продакшене. Автор, один человек (Альдо Николас Бруно); данных о размере команды, истории проекта или числе внешних участников в источнике нет. Заявления о поддерживаемых платформах (от Windows XP до WebAssembly) исходят от самого автора и не подкреплены независимыми тестами или бенчмарками, сравнение размера и переносимости с другими GUI-тулкитами дано только в виде прозы, без цифр.
Риски и подводные камни
Проект ещё не достиг стабильного релиза, и API прямо заявлен как потенциально нестабильный между версиями, это риск для тех, кто хочет завязать production-код на текущий интерфейс. Значительная часть заявленной функциональности, таблицы и flex/grid в HTML-виджете, новые виджеты, готовые темы, поддержка RTL и доступности для экранных читалок, подключаемые бэкенды рендеринга, визуальный редактор, C-интерфейс, пока лишь в списке планов без сроков и версий. Разработка держится на одном независимом авторе, и гарантированная поддержка или сроки доставки требуют отдельного платного соглашения, для критичных проектов это стоит учитывать заранее.