Skip to main content

loeres_device/
lib.rs

1//! `loeres-device` — deterministic edge-side solver entrypoints.
2//!
3//! Environment: `#![no_std]`, no `alloc`. Optimizes for bounded iteration,
4//! fixed memory, small binaries, and analyzable, panic-averse solve paths.
5//! Depends on `loeres` and `loeres-backend-static` only — never on
6//! `loeres-cluster`, `loeres-backend-std`, async runtimes, threads, logging,
7//! or FFI gateways.
8//!
9//! Public module topography (external design §1.5):
10//! `problem`, `solve`, `config`, `workspace`, `diagnostic`.
11//!
12//! Milestone 2 is complete. RFC 005 provides `config` (runtime
13//! `DeviceSolveConfig` / `TimingMode` policy and structural validation) and
14//! `workspace` (the caller-owned `DeviceWorkspace` / `DeviceWorkspaceDiagnostic`
15//! / `WorkspaceFor` lifecycle contracts). RFC 006 (v0.10.0) adds the baseline
16//! box/bound-constrained projected first-order kernel: `problem`
17//! (`ProjectedFirstOrderProblem`) and `solve` (`solve_projected_first_order`,
18//! the `DeviceSolveReport` outcome over the RFC 014 `SolveReport`, and the
19//! caller-owned `ProjectedFirstOrderWorkspace` scratch). The `problem`/`solve`
20//! kernel surface is gated behind `owned-arrays`, since the primal/gradient
21//! work vectors are RFC 004 `FixedVector<S, N>`. `diagnostic` is reserved for
22//! future richer diagnostics.
23#![cfg_attr(not(test), no_std)]
24#![forbid(unsafe_code)]
25
26pub mod config;
27pub mod diagnostic;
28pub mod problem;
29pub mod solve;
30pub mod workspace;