A CLI tool that Stylus developers run during development to check whether their Rust dependencies are compatible with Arbitrum Stylus contracts. Stylus imposes hard constraints that most Rust crates violate: (no_std, no floats, no async, WASM-only, and a contract size limit) and developers typically only find out when their build fails. This tool catches those problems as you add dependencies, not after.
You point it at your Cargo.toml, it checks every dependency against Stylus constraints, and tells you which ones are problematic and why. It can also run in CI with --strict to block merges that introduce incompatible deps.
The tool has two layers: a core library that does all the analysis, and a CLI that formats and presents results. They live in separate crates (crates/core and crates/cli) so fellows can work on check logic without touching CLI code, and vice versa.
The analysis pipeline is straightforward:
Cargo.toml and extract all dependenciesno_std requirement, WASM target compatibility, floating-point usage, and async runtime detection. We may add more as the project evolves.The curated registry is a pair of TOML files in data/ with ~50 hand-verified crate entries. Each entry says whether a crate requires std, uses floats, uses async, and optionally suggests a Stylus-friendly alternative.
The scaffold is a working, tested foundation for this project. Here's what's built and what's left for fellows:
Built:
core (library) and cli (binary) cratesCrateCheck trait that all checks implement. This is the main extension point