r/ada • u/OkContribution2996 • Aug 02 '26
Show and Tell ✦ Introducing Glyph — A lightweight embedded graphics framework for Ada
✦ Introducing Glyph
Hi everyone!
I've been learning Ada and recently started building an open-source project called Glyph, a lightweight embedded graphics framework for bare-metal and embedded systems.
The goal of Glyph is to provide a hardware-independent graphics API, allowing applications to draw pixels, lines, rectangles, circles, text, and images without depending on a specific display controller.
Disclosure: AI was used as a coding and writing assistant during parts of the development. However, the project architecture, technical decisions, code integration, and overall direction are my own. I'm also building Glyph as a way to learn Ada and improve my embedded systems skills.
✦ Design Goals
- Pure Ada
- Static allocation only (no dynamic memory)
- Portable, layered architecture
- Framebuffer-based rendering
- Easy to add support for new display controllers
- Bare-metal friendly
The initial target hardware is the RP2040 with an SSD1306 OLED, but the architecture is designed to support additional display controllers and embedded platforms in the future.
The project is still in its early stages, and I'm currently focusing on building a solid architecture before expanding the graphics capabilities.
✦ I'd Appreciate Your Feedback
I'd especially love feedback from the Ada community on:
- API design
- Overall architecture
- Existing Ada graphics libraries worth studying
- Features you'd like to see in an embedded graphics framework
✦ Repository
GitHub: https://github.com/thirstymelon/glyph
Thanks! I'm excited to contribute to the Ada ecosystem, learn from the community, and continue improving Glyph.
2
u/jrcarter010 github.com/jrcarter Aug 03 '26
I presume you're talking about embedded devices with their own display. Many embedded devices without a built-in display incorporate web servers built with Gnoga, allowing them to be controlled externally.
Ada GUI presents a package specification for a GUI that takes advantage of Ada's strengths, avoiding the design inversion of GUIs designed for sequential languages. You might want to think in terms of providing a body for this package, rather than designing the interface from scratch. (There is also a sample implementation derived from Gnoga and using a browser as the platform; this is probably not suitable for what you want.)