Adi2: Ada 语言现代图形界面开发库
Show HN: A Modern GUI Library for Ada: CSS Styling, XML UI, SDL3

Adi2 是一款为 Ada 语言打造的现代图形用户界面库,基于 SDL3 构建。它支持类似 CSS 的样式定义与实时重载,允许开发者通过 XML 声明式布局或直接编写 Ada 代码来构建界面。Adi2 内置 HTML 视图、SVG 及 Lottie 动画渲染,支持国际化和本地化,并能将字体、图片等所有资源打包进单个可执行文件。无论是 Windows XP 还是现代 macOS,甚至 WebAssembly 环境,Adi2 都能提供一致且高效的跨平台体验,让 Ada 开发者也能享受现代化的 UI 开发流程。
用熟悉的 CSS 语法设计界面,编辑保存即刻生效,无需重新编译;将字体、图片和翻译全部打包进一个可执行文件,实现真正的零依赖部署。
HN 评论区
23- Rochus
很酷的项目。选用 SDL3 是个好主意;相比 SDL2,它带来的功能要多得多,而在 SDL2 时代,要实现所有功能的跨平台兼容,你不得不依赖大量其他库。缺点可能是 SDL3 本身(就像 SDL2 一样)体积相当大。Ada 语言确实有点过时了(很遗憾),但它依然是一门令人印象深刻、极其优秀的语言。这仍然是一个有趣的选择。也许你可以多分享一些关于你选择 Ada 以及该 GUI 库未来计划的细节。
- nicoburns
我要问一个显而易见的问题:为什么要选 ADA?
---
我的框架(Dioxus Native - https://github.com/dioxuslabs/blitz)应该很适合放进你的对比表中:
- 编译为自包含的原生 OS 应用包
- 小于 10 MB(使用 Oz 编译)或约 15MB(使用 O3)(还可以进一步压缩)
- 支持 GPU 或 CPU 渲染
- 支持 Windows 10+ / macOS / Linux / 移动端 / wasm /(配合 Dioxus Web 支持 Web DOM)
- 语言:Rust
- 内存安全:经过借用检查(borrow checked)
- 样式: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,不要重复自己)。