Axiom One primitives

Axiom One

Embedded applications repeatedly need small, well-bounded control, signal, sequence and state operations without adopting a framework or paying for unused code.

A dependency-free C99 static library of 22 focused deterministic primitives. Its ONE modules keep state with the caller, use no heap, timers, callbacks or I/O, and expose a plain C API that can be included as one umbrella header or as narrow module headers.

DevelopmentMITC99
Last verified
2026-08-28
Platform scope
Portable C99; caller-owned state and no dynamic allocation

What it solves

Embedded applications repeatedly need small, well-bounded control, signal, sequence and state operations without adopting a framework or paying for unused code.

How it works

1Application-owned state2focused ONE module3explicit result4application policy

Use it when

Apply bounded slew, hysteresis, filtering or quantization to a control signal
Arbitrate work, generate a fractional rate or calculate capped retry delay
Track freshness, replay windows, cyclic sequence numbers or K-of-N votes
Use fixed-capacity buffers, packed fields, sets, records and traces without a general container framework

Quick Start

#include <one.h>

uint32_t current = 0u;
(void)one_slew_u32(100u, 10u, 20u, &current);
/* current advances toward 100 by at most 10 on this call. */

Engineering evidence

  • 22 independent modules are exposed through one.h; using the umbrella header does not pull every module into a static-linked binary
  • The module family covers scheduling; signal and numeric operations; sequence and protocol handling; and fixed-capacity state containers
  • Repository documentation records Debug, Release, AddressSanitizer and MSVC /W4 /WX test configurations, plus a linker-map-based footprint report

Known limits

  • It is a collection of independent primitives, not an RTOS, scheduler, hardware abstraction layer or application framework
  • Mutable one_*_t objects remain owned and synchronized by the caller
  • Callers must check documented status values and preserve each API’s numeric-domain contracts