| Crates.io | universal-sierra-compiler |
| lib.rs | universal-sierra-compiler |
| version | 2.6.0-rc.0 |
| created_at | 2024-03-22 14:08:54.931538+00 |
| updated_at | 2025-05-26 10:59:56.853447+00 |
| description | Universal-Sierra-Compiler is the tool for Sierra compilation. It compiles any ever-existing Sierra version to CASM. |
| homepage | https://github.com/software-mansion/universal-sierra-compiler |
| repository | https://github.com/software-mansion/universal-sierra-compiler |
| max_upload_size | |
| id | 1182650 |
| size | 4,585,726 |
Universal-Sierra-Compiler is the tool/crate for Sierra compilation. It compiles any ever-existing Sierra version to CASM.
| Supported Sierra Versions |
|---|
| 1.7.0 |
| 1.6.0 |
| 1.5.0 |
| ~1.4.0 |
| ~1.3.0 |
| ~1.2.0 |
| 1.1.0 |
| 1.0.0 |
| 0.1.0 |
To install the latest stable version of universal-sierra-binary run:
curl -L https://raw.githubusercontent.com/software-mansion/universal-sierra-compiler/master/scripts/install.sh | sh
Alternatively, to use USC as a Rust dependency, just put it in your Cargo.toml like so:
universal-sierra-compiler = "2.1.0"
You almost always want to install the latest stable version. In rare cases where a prerelease with a new unstable sierra version exists, and you want to use it, run the following command with the requested prerelease version:
curl -L https://raw.githubusercontent.com/software-mansion/universal-sierra-compiler/master/scripts/install.sh | sh -s -- v2.0.0-rc.0
📝 Note
If the script can't add installed binary to the PATH, it will print the instructions about adding it manually.
Tool consist of two subcommands:
compile-contractcompile-rawThe first one compiles Sierra of the Starknet contract, while the second one compiles Sierra of the plain Cairo code.
compile-contract subcommandThe input of this subcommand is a path to a file with Sierra of the contract
(cairo_lang_starknet_classes::contract_class::ContractClass) in json format:
$ universal-sierra-compiler \
compile-contract \
--sierra-path ./path/to/sierra.json
{"bytecode": ...}
📝 Note
Please, note that the output is in the JSON format.
To automatically save CASM, pass --output-path argument:
$ universal-sierra-compiler \
compile-contract \
--sierra-path ./path/to/sierra.json
--output-path ./path/to/casm.json
compile-raw subcommandThe input of this subcommand is a path to a file with Sierra program (cairo_lang_sierra::program::Program) in json format:
$ universal-sierra-compiler \
compile-raw \
--sierra-path ./path/to/sierra.json
{"assembled_cairo_program": ...}
📝 Note
Please, note that the output is in the JSON format.
To automatically save assebled cairo program, pass --output-path argument:
$ universal-sierra-compiler \
compile-raw \
--sierra-path ./path/to/sierra.json
--output-path ./path/to/casm.json
Library crate exports two functions:
compile_contract(serde_json::Value) -> Result<serde_json::Value>compile_raw(serde_json::Value) -> Result<serde_json::Value>They do the same as their CLI counterparts. However, they accept the whole program in json format as a parameter, precisely a json_serde::Value.
Return value is the compiled program inside Result<serde_json::Value>.