Skip to main content

x86/
lib.rs

1//! Cross-platform native x86 machine library.
2//!
3//! The crate intentionally exposes platform-neutral Rust APIs. It does not
4//! require a browser, WebAssembly runtime, DOM, or platform-specific GUI.
5
6pub mod bootloader;
7pub mod error;
8pub mod image;
9pub mod machine;
10pub mod state;
11
12#[cfg(feature = "native-runtime")]
13pub mod native_backend;
14
15pub use bootloader::{Bootloader, FetchOptions, Resource, copy_resource_to, load_resource};
16pub use error::{Result, X86Error};
17pub use image::{Image, ImageKind};
18pub use machine::{
19    ConsoleConfig, ConsoleMode, ExecutionBackend, Machine, MachineConfig, MachineStatus,
20    RunOptions, RunReport,
21};
22pub use state::{SavedState, StateHeader, StateSummary};
23
24#[cfg(feature = "native-runtime")]
25pub use native_backend::NativeBackend;
26
27pub const API_VERSION: &str = env!("CARGO_PKG_VERSION");
28
29pub fn native_capabilities() -> &'static [&'static str] {
30    &[
31        "raw-image-memory",
32        "raw-image-file",
33        "bootloader-file",
34        "bootloader-http",
35        "bootloader-https",
36        "saved-state-v86-v6",
37        "console-host-api",
38        "vga-framebuffer-ppm",
39        "ps2-keyboard-input",
40        "backend-trait",
41        "native-v86-interpreter",
42        "no-webassembly-runtime",
43    ]
44}