Introduction

A UI library for safety-critical products - no runtime allocation, no hidden state, deterministic rendering, and the evidence trail your product's certification needs.

LVGL Safe is a small, dependency-free UI library written specifically for safety-critical industries. Unlike a general-purpose GUI toolkit, it trades feature richness and convenience for predictability, auditability, and determinism.

It is not a stripped-down variant you have to qualify from scratch. The delivery includes the documentation and verification evidence that feeds directly into your own product's certification process, across four target industries: automotive, medical, industrial, and avionics.

Evaluation preview only - v0.1.0. LVGL Safe is in early preview and is not ready for production use. It is published for evaluation and feedback only.

  • The public API is unstable and will change without notice.
  • The safety-oriented properties described in these docs are design goals. They are not yet verified, audited, or qualified.
  • Do not deploy LVGL Safe in any real product or safety-critical system.

See Standards for the levels the full delivery is built to support.

Design principles

These are the goals the library is built around:

  • No runtime dynamic memory allocation - no malloc/free at runtime. The application owns every widget struct and every buffer.
  • No internal global or static state - all state lives in caller-supplied structures.
  • Widgets are never deleted - once created on a screen they live for the lifetime of the program.
  • No external dependencies - C99 and the standard library only.
  • Deterministic rendering - frame rendering is intended to be deterministic in time and in output.
  • MISRA C:2012 (mandatory rules) as a conformance target.
  • Abstract display driver - the library only writes pixels into a framebuffer you provide. You own the buffer and the main loop. There is no built-in RTOS or OS layer, which also means the library can be integrated into any such environment unchanged.

Feature snapshot

  • Built-in software renderer writing an RGB565 framebuffer. Supports RGB888, RGB565, ARGB8888 or A8 image sources.
  • Multiple displays and screens.
  • Widgets: rectangle, label, button, image, image button, arc.
  • Input / event handling (touch / pointer) with index-based keyboard focus.
  • Multi-language translations and integer binding on labels.
  • Offline image and font converters - nothing is decoded at runtime.

Note: RGB888 and RGB565 image sources are not yet supported.

Where to start

Last updated on

On this page