#gui #formal-verification #machine-check #temp-dir #browser #compiled-wasm #wasm

build machine-check-gui

Utility crate for the formal verification tool machine-check

1 unstable release

new 0.4.0-alpha.1 Mar 22, 2025

#6 in #machine-check

MIT/Apache

1MB
5K SLoC

Rust 4K SLoC // 0.1% comments JavaScript 865 SLoC // 0.0% comments TypeScript 33 SLoC // 0.4% comments

Utility machine manipulation crate for machine-check

This crate implements the graphical user interface (GUI) for use in the formal verification tool machine-check. The GUI is an optional feature intended for deepening the understanding of the systems, specifications, and the verification process. Machine-check can also be used headless using the command-line interface only.

Implementation Details

The GUI is based on a WebView, i.e. uses the browser installed on the machine to show the HTML/CSS GUI in a native-style application. This has the advantage of rapid development compared to a non-standard UI library and of small executable size compared to the Electron-style approach where the browser is bundled in the executable. However, it may suffer from compatibility quirks and issues.

The frontend is not implemented in Javascript, but in Rust compiled to WebAssembly, interacting with the Rust-based backend running natively. This speeds up development and prevents language-interaction bugs, but makes building the GUI more tricky: a wasm32-unknown-unknown Rust target is needed to build the frontend, which is usually done in a temporary directory.

Usage and Compatibility

This crate is a utility crate for machine-check and should not be used on its own. No compatibility guarantees are made.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~14–55MB
~813K SLoC