rigless 0.1.0

Virtual hardware-in-the-loop runtime: run unmodified firmware on an emulated MCU with every peripheral, chip model and unit of virtual time in Rust, and a CPU core of its own that translates the firmware's instructions to host code
Documentation
// Copyright (c) 2026 Rigless Labs.
// SPDX-License-Identifier: MIT OR Apache-2.0
// The crate's documentation is its own file rather than the README: the README is the
// repository's landing page and points here, and a front page that has to be both ends up
// serving neither. The guide is what rustdoc publishes and what its doctests are compiled from.
#![doc = include_str!("lib.md")]

// Every generated register table imports `rigless::soc`, and so does the fixture the
// generator's own test compiles. This alias is what makes that one emitted literal resolve
// inside the library as well as outside it. Deleting it breaks every generated table at once. The
// gate is every SoC feature, because a build with none compiles no generated table, so add a new
// SoC's feature here as well as to `soc`.
#[cfg(feature = "stm32f427")]
extern crate self as rigless;

#[cfg(all(test, not(emulator_absent)))]
mod laid;
#[cfg(not(emulator_absent))]
mod rtt;
mod runtime;

pub mod chip;
#[cfg(feature = "cli")]
pub mod cli;
pub mod cpu;
pub mod edge;
pub mod machine;
pub mod soc;
#[cfg(feature = "svd")]
pub mod svd;

// What `cargo fuzz` drives, compiled only under its `--cfg fuzzing`, so it's no part of the API.
#[cfg(all(fuzzing, not(emulator_absent)))]
#[doc(hidden)]
pub mod fuzzing;

pub use runtime::{
    coverage, device, elf, emulator, image, link, mcu, session, snapshot, symbols, time, version,
};