Component map
The Core repository separates four roles: subsystems, libraries, drivers and executables. All are Rust crates; a Rust module is a language construct, not a separate architectural category.
Where does a component belong?
- Subsystem: owns or coordinates an installed runtime capability with a lifecycle in the assembled Xila instance. The VFS owns the mounted namespace; graphics coordinates LVGL and input state.
- Library: defines reusable contracts, helpers or implementations that do not need a separate installation/lifecycle. File system defines storage contracts; LittleFS implements them.
- Driver: adapts a generic capability to a particular platform, as in the browser driver or native driver.
- Executable: consumes the assembled services as a program, launcher or guest runtime. The WASM executable owns Wasmi execution within WASM and guest/host bindings.
Internal mutable state alone is not evidence of a subsystem: the key is runtime ownership and assembly. Some reusable executable helpers depend on subsystem interfaces without themselves becoming runtime services.
Follow a request
A file request starts in an executable, reaches the VFS, uses file-system contracts, then dispatches to a mounted LittleFS instance or device driver.
A WebAssembly guest uses the WASM runtime and bindings owned by the WASM executable. Those adapters pass operations to the same task/VFS/time/graphics subsystem managers used by native executables.
See the architecture overview for lifecycle, dependency and process-global integration details.