Adi2: Thư viện GUI hiện đại cho Ada với CSS, XML UI và SDL3

24 tháng 8, 2026·4 phút đọc

Adi2 là một thư viện GUI mới dành cho ngôn ngữ lập trình Ada, mang đến khả năng tạo giao diện giống web với CSS styling, bố cục XML khai báo, animation SVG/Lottie, và hỗ trợ đa nền tảng từ Windows XP đến WebAssembly. Được phát triển bởi Aldo Nicolas Bruno, Adi2 hướng tới việc cung cấp một widget toolkit hoàn chỉnh, hiệu suất cao, với binary duy nhất dưới 10 MB, phù hợp cho các ứng dụng nhúng và desktop.

Adi2: Thư viện GUI hiện đại cho Ada với CSS, XML UI và SDL3

Adi2: Thư viện GUI hiện đại cho Ada — CSS, XML UI và SDL3

Adi2 là một thư viện GUI mã nguồn mở mới dành cho ngôn ngữ Ada, mang đến trải nghiệm phát triển giao diện giống như web với CSS styling, bố cục XML khai báo, animation SVG và Lottie, và hỗ trợ đa nền tảng rộng rãi. Thư viện này được xây dựng hoàn toàn bằng Ada trên nền SDL3, hướng tới việc tạo ra các ứng dụng desktop và nhúng hiệu suất cao, đóng gói trong một binary duy nhất dưới 10 MB.

Minh họa giao diện Adi2Minh họa giao diện Adi2

Vì sao nên chọn Adi2?

Phong cách CSS quen thuộc

Adi2 cho phép bạn tạo kiểu giao diện bằng cú pháp CSS quen thuộc với bộ chọn (selectors), pseudo-classes, các thuộc tính như transition, gradient, box-shadow. Điểm đặc biệt là tính năng live reload — chỉnh sửa file CSS, lưu lại và thấy thay đổi ngay lập tức, không cần biên dịch lại trong quá trình phát triển.

function Style return Style_Builder renames Adi.Widget_Styles.Create;

Primary_Base : constant Style_Rules :=
  (Background_Color => Set_Bg (RGB (37, 99, 235)),
   Border_Radius    => Set (Radius (Px (8.0))),
   Padding          => Set (CSS_Box (Px (10.0), Px (16.0))),
   Transition       => Set ((Duration   => 0.15,
                             Easing     => Ease_Out,
                             Properties => Props (Prop_Background_Color))),
   others           => <>);

Khai báo UI linh hoạt

Bạn có thể mô tả giao diện bằng XML hoặc xây dựng trực tiếp bằng mã Ada. Cả hai cách đều dẫn đến cùng một API, giúp bạn lựa chọn phương pháp phù hợp nhất với dự án của mình. Công cụ dòng lệnh tự động chuyển đổi XML thành các package Ada sạch sẽ.

Đa nền tảng, đa thiết bị

Adi2 hỗ trợ Windows (từ XP đến 11), macOS, GNU/Linux, và WebAssembly (thông qua GNAT-LLVM và Emscripten). Nhờ sử dụng SDL renderer abstraction, ứng dụng có thể tận dụng Direct3D trên Windows, Metal trên macOS, Vulkan/OpenGL nếu có, và phần mềm dự phòng — tất cả từ cùng một mã nguồn.

Dễ dàng đóng gói

Mọi tài nguyên — CSS, font chữ, hình ảnh, bản dịch, SVG sprite — đều được nhúng vào một binary duy nhất, không phụ thuộc vào filesystem khi chạy. Điều này giúp việc triển khai trở nên vô cùng đơn giản và đáng tin cậy.

Ví dụ HTML view trong Adi2Ví dụ HTML view trong Adi2

Tính năng nổi bật

  • Internationalization: Hỗ trợ i18n tương thích Gettext với plural forms, tự động phát hiện ngôn ngữ hệ thống.
  • HiDPI-ready: Đơn vị dp/dip cho layout, rem cho typography, pix khi bạn muốn chính xác pixel màn hình.
  • Animation không boilerplate: CSS transitions trên các thuộc tính như màu sắc, border, padding, margin, opacity, box-shadow.
  • HTML view widget: Hiển thị nội dung documentation-style với CSS cascading.
  • Tích hợp MCP: Cầu nối dành riêng cho development, cho phép editor và AI assistant chụp màn hình, duyệt widget tree, điều khiển ứng dụng — lý tưởng cho test end-to-end.
  • Chạy trên trình duyệt: Ví dụ có thể biên dịch sang WebAssembly và chạy trực tiếp trên web.

Bắt đầu nhanh

# Biên dịch thư viện
alr build -- -j0

# Chạy bộ test
tools/run_tests.sh

# Biên dịch tất cả ví dụ
tools/build_examples.sh

# Chạy demo
./examples/bin/material_demo
./examples/bin/html_view_example

Ví dụ animation Lottie trong Adi2Ví dụ animation Lottie trong Adi2

Lộ trình phát triển

Adi2 đang tiếp tục hoàn thiện với kế hoạch bổ sung:

  • CSS: Hỗ trợ nhiều thuộc tính, selector và giá trị hơn.
  • HTML view: Bảng (table), flex và grid layout.
  • Widgets: Tree view, data grid, menu bar, tooltips, date picker, color picker.
  • Giao diện làm sẵn: Material, Fluent, Adwaita và macOS (cả light và dark).
  • Accessibility: Hỗ trợ màn hình đọc qua AT-SPI, UI Automation, NSAccessibility.
  • Backends đa dạng: Win32/Direct2D, Cocoa, GLFW, raylib, Skia (thiết kế dạng pluggable).
  • C API: Giao diện ổn định cho người dùng không dùng Ada.

Giấy phép và đóng góp

Adi2 được phát hành dưới giấy phép Apache-2.0. Dự án chào đón mọi đóng góp — hãy mở issue trên GitHub trước khi thực hiện thay đổi lớn để thảo luận cách tiếp cận. Mã nguồn của bên thứ ba trong thư mục vendor/ giữ nguyên giấy phép gốc.

Kết luận

Adi2 là một lựa chọn đáng chú ý cho các nhà phát triển Ada đang tìm kiếm một GUI toolkit hiện đại, mạnh mẽ và dễ sử dụng. Với phong cách CSS quen thuộc, khả năng đa nền tảng ấn tượng và hiệu suất tốt, đây là một dự án mã nguồn mở xứng đáng được theo dõi trên con đường trở thành một thư viện GUI hàng đầu cho ngôn ngữ Ada.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗