RADLib
RADical C++ application framework
RADLib Beta SDK Documentation

RADLib is a modular C++20 application framework for Linux desktop, embedded Linux, instrumentation, media, networking, and UI applications. The beta SDK includes public headers, shared libraries, examples, package metadata, and this searchable API reference.

The documentation below is written for application developers consuming the RADLib SDK. It does not require access to RADLib implementation source files.

License Acknowledgement

External builds must define RADLIB_LICENSE_ACCEPTED=1 and one license tier macro before including public RADLib headers. Valid tier macros are RADLIB_LICENSE_TIER_COMMUNITY, RADLIB_LICENSE_TIER_SMALL_BUSINESS, RADLIB_LICENSE_TIER_COMMERCIAL, and RADLIB_LICENSE_TIER_PARTNER. Commercial applications should verify signed node-locked license files at runtime with RADSecurity::LicenseManager. Expose RADLicense::compileAuditStamp() in diagnostics or about dialogs so compiled license tier declarations are easy to audit on running systems.

RADLib runtime binaries also expose an edition stamp through RADCore::runtimeAuditStamp(). Public beta packages are Community Edition and report RADLIB_EDITION=community-edition; future paid packages should report RADLIB_EDITION=paid-edition and verify signed licenses with RADSecurity::LicenseManager.

Crimson releases can include a signed universal community license file under licenses/. License documents include a public issuer key_id so applications can select the correct trusted public key. Commercial licenses should be customer-specific and node-locked. Issuer private keys are never part of the SDK.

Modules

  • RADCore: events, event loops, timers, IODevice, files, JSON, settings, process handling, thread pool, filesystem helpers, and utility types.
  • RADDataStructures: RAD-owned vector, small-vector, ring buffer, queue, stack, SPSC queue, flat hash map/set, and list containers.
  • RADUi: UI thread bridge, Slint backend, theme system, app-shell/dock/workspace models, model-backed widgets, plotting, terminal helpers, and frame scheduling.
  • RADNet: UDP/TCP sockets, server primitives, socket reactor, and HTTP client.
  • RADSerial: event-loop integrated Linux serial ports.
  • RADLogging: async category logging with console, file, rotating file, and syslog sinks.
  • RADSettings: JSON and INI application settings.
  • RADCLI: command-line parsing and app utility helpers.
  • RADInstaller: manifest-driven install, rollback, uninstall, package metadata, and RADUi installer example support.
  • RADSecurity: SHA-256, secure random, RSA-SHA256 signing, capability reporting, and declarative sandbox profiles.
  • RADInput: evdev input discovery, input event delivery, and pointer/touch calibration helpers.
  • RADDisplay: DRM/KMS and framebuffer discovery, backlight control, orientation helpers, and display capability reporting.
  • RADDevice: GPIO, I2C, SPI, PWM, ADC, watchdog, and LED helpers for embedded Linux devices.
  • RADPower: battery/charger, thermal, CPU governor, and guarded suspend/reboot/shutdown helpers.
  • RADService: systemd unit generation, daemon helpers, watchdog notification, and single-instance app locks.
  • RADUpdate: signed app-bundle manifests, payload verification, RADInstaller handoff, and A/B metadata tracking.
  • RADDsp: reusable audio/SDR/DSP helpers including level, channel, resampling, FIR, window, and IQ primitives.
  • RADMedia: WAV parsing/streaming, audio device enumeration, audio input/output, player convenience APIs, and decoder streams.
  • RADDatabase: SQLite-backed database access.
  • RADWeb: WebKitGTK browser window API with tabs, history, bookmarks, downloads, settings, permissions, and profiles.
  • RADNet Protocol Generation: JSON-defined generated C++ message structs and binary TCP frame helpers.

Release Status

RADLib is currently a beta SDK. APIs are suitable for evaluation and early application development, but ABI compatibility is not yet guaranteed across minor beta updates.