Skip to content

Subsystems ​

A subsystem owns or coordinates a runtime capability installed by a final Xila binary. It manages state/lifecycle or the unavoidable process-global integration of an active runtime service. It is not simply a crate with mutable types.

Foundation services ​

Coordinating services ​

Boundaries ​

Subsystems use contracts from libraries and concrete drivers. The final binary constructs them in a valid dependency order and passes managers to executables. The allocator, logger and LVGL remain partially process-global by design.

C ABI contracts are libraries. Wasmi and guest bindings belong to the WASM executable rather than representing new independent subsystems.

How to read each subsystem reference ​

Every subsystem page is intended to serve as an engineering reference, not just an overview. Read its public contract first (what consumers may depend on), then its implementation and ownership (who constructs it, which resources it retains, and how it is synchronized), then its failure and portability boundaries. Use the Rustdoc and source links for exact signatures; implementation details can change without changing the contract.

SubsystemCore responsibilityKey integration boundary
TaskTask identity, metadata, spawn and joinEmbassy executors and user context
UsersUser/group identifiers and membershipsAuthentication and VFS authorization
TimeRead current clock and startup-relative durationDirect character-device clock
MemoryAllocation contract and global allocationTarget allocator and capabilities
LogGlobal logging facade and filteringBackend LoggerTrait
Virtual file systemNamespace, mounts, permissions and handlesFile-system and device contracts
NetworkInterface stacks and socket servicessmoltcp, driver and VFS control
GraphicsLVGL lifecycle, display/input and windowsTarget display/input drivers and guest events

Stability and completeness ​

These pages describe the current Core implementation, not a promise that every interface is stable. In particular, the time manager's startup-relative reading is not a monotonic clock, the Users credential check is not an authentication mechanism, and logging initialization is process-global. Consult the individual pages for the consequences and known limitations.

For changes affecting application-facing interfaces, check both the subsystem and the corresponding library contract, driver or executable integration.