Blazingly fast, modular and contributor friendly Solidity compiler, written in Rust.
## Features and Goals > [!CAUTION] > Solar is under active development and is not yet feature complete. > Use it to speed up your development workflows and tooling. > Please do not use it in production environments. - ⚡ Instant compiles and low memory usage - 🔍 Expressive and useful diagnostics - 🧩 Modular, library-based architecture - 💻 Simple and hackable code base - 🔄 Compatibility with the latest Solidity language breaking version (0.8.*)
## Getting started Solar is available through a command-line interface, or as a Rust library. ### Library usage You can add Solar to your Rust project by adding the following to your `Cargo.toml`: ```toml [dependencies] solar = { version = "0.1.0", package = "solar-compiler" } ``` Or through the CLI: ```bash cargo add solar-compiler --rename solar ``` You can see examples of how to use Solar as a library in the [examples](/examples) directory. ### Binary usage Pre-built binaries are available for macOS, Linux and Windows on the [releases page](https://github.com/paradigmxyz/solar/releases) and can be installed with the following commands: - On macOS and Linux: ```bash curl -LsSf https://paradigm.xyz/solar/install.sh | sh ``` - On Windows: ```powershell powershell -c "irm https://paradigm.xyz/solar/install.ps1 | iex" ``` - For a specific version: ```bash curl -LsSf https://paradigm.xyz/solar/v0.1.0/install.sh | sh powershell -c "irm https://paradigm.xyz/solar/v0.1.0/install.ps1 | iex" ``` You can also build Solar from source: - From crates.io: ```bash cargo install solar-compiler --locked ``` - From GitHub: ```bash cargo install --git https://github.com/paradigmxyz/solar --locked ``` - From a Git checkout: ```bash git clone https://github.com/paradigmxyz/solar cd solar cargo install --locked --path crates/solar ``` Once installed, check out the available options: ```bash solar -h ``` Here's a few examples: ```bash # Compile a single file and emit ABI to stdout. solar Counter.sol --emit abi # Compile a contract through standard input (`-` file). echo "contract C {}" | solar - solar - <