Building
EVAnalyzer is written in Rust (2024 edition) and uses Cargo as its build system.
Requirements
Section titled “Requirements”| Tool | Version |
|---|---|
| Rust toolchain | 1.80 or later |
| Java JDK | 11 or later (required for Bio-Formats) |
| Linux system libraries (GUI) | libinput10 libxkbcommon0 libfontconfig1 libgbm1 |
Clone the repository
Section titled “Clone the repository”git clone https://github.com/evanalyzer/evanalyzer.gitcd evanalyzerDevelopment toolchain
Section titled “Development toolchain”rustup component add rustfmtcargo install slint-lsp # language server for .slint UI filescargo install slint-viewer # live preview of .slint filesBuild targets
Section titled “Build targets”Linux x86-64
Section titled “Linux x86-64”cargo build-linuxWindows x86-64 (cross-compile from Linux)
Section titled “Windows x86-64 (cross-compile from Linux)”cargo install cargo-xwincargo build-winLinux ARM64
Section titled “Linux ARM64”apt install gcc-aarch64-linux-gnurustup target add aarch64-unknown-linux-gnucargo build-linux-armBuild artifacts are placed in target/<target>/release/.
Workspace crates
Section titled “Workspace crates”The workspace is split into focused crates:
| Crate | Description |
|---|---|
evanalyzer_core | Image I/O (Bio-Formats via JVM), processing algorithms, ROI model, pipeline execution |
evanalyzer_cfg | Project settings, JSON serialisation, pipeline command configuration |
evanalyzer_app | Application handle, shared project state |
evanalyzer_gui | Slint-based desktop GUI - viewport, histogram, ROI tools, classification panel |
evanalyzer_cli | Command-line interface for headless batch analysis |
evanalyzer_bin | Binary entry point - launches GUI or CLI depending on arguments |
Previewing the GUI inside a container
Section titled “Previewing the GUI inside a container”If developing inside a Docker devcontainer on Linux, allow X11 forwarding before starting the container:
xhost +local:dockerCode coverage
Section titled “Code coverage”cargo install cargo-llvm-covrustup component add llvm-tools-preview
cargo llvm-cov # terminal reportcargo llvm-cov --html # HTML report → target/llvm-cov/cargo llvm-cov --lcov --output-path lcov.info # lcov format (e.g. VS Code Coverage Gutters)UI Performance Targets
Section titled “UI Performance Targets”| Action | Target | Rationale |
|---|---|---|
| Pan / drag | < 10 ms | Must feel attached to the cursor |
| Zoom | < 16 ms | Prevents motion sickness |
| Channel toggle | < 100 ms | Perceived as instant |
| Auto-adjust | < 200 ms | Acceptable for a complex calculation |