RADLib
RADical C++ application framework
RADLib 0.2.0 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.

RADLib 0.2.0 also provides the RADpm package-manager executable used by RadBuild and RADPx package flows. RADpm is built as a RADLib-owned tool so package resolution, packagegroup handling, sysroot staging, and future RADPx live-package operations share the same library foundation.

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.
  • RADEmbeddedKernel: POSIX-like embedded kernel services for simulator and bare-metal HAL backends. RADPx OS now owns the broader POSIX kernel direction; this RADLib module remains the portable embedded service/runtime layer and historical compatibility surface.
  • 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.

Package and 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.

Host Linux packages are published as Debian packages through RadicalPackages. RADPx image builds consume RADLib through .radpm metadata and RADPx-specific payloads. For normal RADPx image creation, select RADLib through the radpx-terminal-base or radpx-desktop-base packagegroups rather than adding individual RADLib packages by hand.