LVGL (Light and Versatile Graphics Library) is an embedded GUI library written in C, providing a comprehensive widget toolkit (30+ widgets), style system, layout managers (flex, grid, split), animation framework, and multiple rendering backends (software, GPU-accelerated via VG-Lite, NanoVG, OpenGL ES, and hardware-specific backends for various MCU/MPU platforms). It is designed for resource-constrained devices with a small memory footprint (~100kB RAM for typical UIs) and supports a wide range of display drivers (SDL, Wayland, DRM, UEFI, Windows, and many embedded display controllers) and input devices (touch, keypad, mouse, gestures). The library features a public/private header pattern for encapsulation, a configurable build system via Kconfig, extensive Unity-based test suites with screenshot comparison, and a GDB plugin for runtime introspection. It is actively maintained with frequent commits, comprehensive CI/CD, and a large ecosystem of examples and demos.
This repository is the NumWorks Epsilon operating system and firmware for a graphing calculator. It is a complete software stack including a custom GUI framework (Escher), a symbolic math engine (PoincarΓ©), a MicroPython interpreter, numerous educational apps (calculation, graphing, statistics, inference, finance, sequences, etc.), and low-level hardware drivers (Ion) for real devices and a cross-platform SDL-based simulator. The architecture is monolithic: all components share a custom memory pool, a responder-based UI framework, and a common record-based persistent storage system. Key entry points are the bootloader, the Ion::Main function, and an app container that launches snapshots of each app. The system handles user input through keyboard events, renders via a 2D graphics library (Kandinsky), and persists data (scripts, preferences, calculations) in a file-system-like record store. External dependencies include a vendored SDL 2.0 (for simulation), a bespoke MicroPython port, OpenBSD math functions, and an embedded SQLite memory allocator. While the math engine and many apps are well-crafted, the large third-party code and numerous platform backends introduce moderate technical drift risk.