Skip to content

Building

EVAnalyzer is written in Rust (2024 edition) and uses Cargo as its build system.

ToolVersion
Rust toolchain1.80 or later
Linux system libraries (GUI)libinput10 libxkbcommon0 libfontconfig1 libgbm1
Terminal window
git clone https://github.com/evanalyzer/evanalyzer.git
cd evanalyzer
Terminal window
rustup component add rustfmt
cargo install slint-lsp # language server for .slint UI files
cargo install slint-viewer # live preview of .slint files
Terminal window
cargo build-linux
Terminal window
cargo install cargo-xwin
cargo build-win
Terminal window
apt install gcc-aarch64-linux-gnu
rustup target add aarch64-unknown-linux-gnu
cargo build-linux-arm

Build artifacts are placed in target/<target>/release/.

The workspace is split into focused crates:

CrateDescription
evanalyzer_coreImage I/O (scopeio), processing algorithms, object model, pipeline execution
evanalyzer_cfgProject settings, JSON serialisation, pipeline command configuration
evanalyzer_appApplication handle, shared project state
evanalyzer_guiSlint-based desktop GUI - viewport, histogram, annotation tools, classification panel
evanalyzer_cliCommand-line interface for headless batch analysis
evanalyzer_binBinary entry point - launches GUI or CLI depending on arguments

If developing inside a Docker devcontainer on Linux, allow X11 forwarding before starting the container:

Terminal window
xhost +local:docker
Terminal window
cargo install cargo-llvm-cov
rustup component add llvm-tools-preview
cargo llvm-cov # terminal report
cargo llvm-cov --html # HTML report → target/llvm-cov/
cargo llvm-cov --lcov --output-path lcov.info # lcov format (e.g. VS Code Coverage Gutters)
ActionTargetRationale
Pan / drag< 10 msMust feel attached to the cursor
Zoom< 16 msPrevents motion sickness
Channel toggle< 100 msPerceived as instant
Auto-adjust< 200 msAcceptable for a complex calculation