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 es una biblioteca de interfaz gráfica moderna para Ada que combina estilos CSS con recarga en vivo, diseños XML declarativos, animaciones, gráficos SVG y Lottie, internacionalización y empaquetado de recursos, todo implementado nativamente sobre SDL3. Permite crear aplicaciones de escritorio y web (WebAssembly) con un único binario de menos de 10 MB, sin dependencias externas en tiempo de ejecución. Incluye un puente MCP para que editores y asistentes de IA puedan interactuar con la aplicación en ejecución, facilitando pruebas de extremo a extremo. Ideal para desarrolladores que buscan una alternativa ligera y segura en memoria a Qt, Flutter o Electron, con soporte para Windows XP y versiones recientes, macOS, Linux y navegadores.
Adi2 te ofrece un toolkit de widgets real con las ventajas que los desarrolladores esperan de una pila de UI moderna, implementado de forma nativa en Ada sobre SDL3.
- Rochus
Buen proyecto. Buena idea usar SDL3; trae consigo mucho más que SDL2, donde tenías que usar muchas otras bibliotecas para ser independiente de la plataforma con todas las funciones. La desventaja podría ser que SDL3 en sí (como SDL2) es bastante grande. Ada pasó un poco de moda (desafortunadamente), pero sigue siendo un lenguaje impresionante y excelente. Aun así, es una elección interesante. Quizás puedas dar más información sobre tu elección y planes con la biblioteca GUI.
- nicoburns
Voy a hacer la pregunta obvia: ¿por qué ADA?
---
Mi framework (Dioxus Native - https://github.com/dioxuslabs/blitz) encajaría muy bien en tu tabla comparativa:
- Compila a un paquete de aplicación nativa del sistema operativo autocontenido
- <10 MB (compilado con Oz) o ~15MB (con O3) (se puede reducir más)
- Renderizado por GPU o CPU
- Windows 10+ / macOS / Linux / móvil / wasm / (+ DOM web con Dioxus Web)
- Rust
- Seguridad de memoria: verificación de préstamos
- Estilos: CSS (matriz de soporte: https://blitz.is/status/css)
- tosti
Hay mucha repetición ahí. Por ejemplo: (adi-json.adb)
if not W.After_Key (W.Depth) then
-- cosas
else
W.After_Key (W.Depth) := False;
end if;
-- ...más cosas...
W.After_Key (W.Depth) := False;
¿Y qué pasa con esos nombres de archivo? Si reemplazas adi- con TIMMEH, verás a lo que me refiero.
El código debería ser más DRY (no te repitas).