Adi2 - Modern GUI library for Ada with CSS styling and XML UI
Show HN: A Modern GUI Library for Ada: CSS Styling, XML UI, SDL3

Adi2 — это современная библиотека графического интерфейса для Ada, которая предлагает привычные веб-разработчикам возможности: CSS-стили с живой перезагрузкой, декларативные XML-макеты, анимации, поддержку SVG и Lottie, интернационализацию и упаковку ресурсов в один исполняемый файл. Библиотека построена на SDL3 и работает на Windows (включая XP), macOS, Linux и WebAssembly. Размер итогового приложения — менее 10 МБ. Adi2 позволяет описывать интерфейсы как на XML, так и на чистом Ada, а также включает встроенный HTML-виджет для отображения документации. Проект уже используется в производстве, но API может меняться. Попробуйте живые демо в браузере или начните с документации.
Adi2 даёт вам настоящий набор виджетов с удобствами, которые разработчики ожидают от современного UI-стека — CSS-подобные стили с живой перезагрузкой, декларативные XML-макеты, анимации, SVG и Lottie-графика, интернационализация и упаковка ресурсов — всё это реализовано нативно на Ada поверх SDL3.
- Rochus
Крутой проект. Хорошая идея использовать SDL3; она даёт гораздо больше, чем SDL2, где приходилось подключать кучу других библиотек, чтобы стать платформонезависимым со всеми фичами. Минус может быть в том, что сама SDL3 (как и SDL2) довольно большая. Ada немного вышла из моды (к сожалению), но это всё ещё впечатляющий, отличный язык. Всё равно интересный выбор. Может, расскажешь подробнее о своём выборе и планах насчёт GUI-библиотеки.
- nicoburns
Задам очевидный вопрос: почему ADA?
---
Мой фреймворк (Dioxus Native - https://github.com/dioxuslabs/blitz) неплохо вписался бы в твою сравнительную таблицу:
- Компилируется в автономный нативный бандл приложения для ОС
- <10 МБ (сборка с Oz) или ~15 МБ (с O3) (можно ужать ещё меньше)
- Рендеринг через GPU или CPU
- Windows 10+ / macOS / Linux / мобильные / wasm / (+ веб-DOM через Dioxus Web)
- Rust
- Безопасность памяти: проверка заимствований
- Стилизация: CSS (матрица поддержки: https://blitz.is/status/css)
- tosti
Там столько повторений. Например: (adi-json.adb)
if not W.After_Key (W.Depth) then
-- things
else
W.After_Key (W.Depth) := False;
end if;
-- ...more things...
W.After_Key (W.Depth) := False;
И что за дела с этими именами файлов? Если заменить adi- на TIMMEH, поймёшь, о чём я.
Код должен быть более DRY (don't repeat yourself).