4 个版本 (2 个稳定)
2.2.0 | 2024 年 8 月 2 日 |
---|---|
2.2.0-rc.1 | 2024 年 7 月 10 日 |
2.2.0-rc.0 | 2024 年 7 月 2 日 |
2.1.0 | 2024 年 3 月 22 日 |
#2 in #casm
844 每月下载
用于 4 个 crate (3 直接)
1MB
289 行
通用-Sierra-编译器
通用-Sierra-编译器是用于 Sierra 编译的工具/crate。它可以将任何永恒存在的 Sierra 版本编译成 CASM。
支持的 Sierra 版本 |
---|
1.6.0 |
1.5.0 |
~1.4.0 |
~1.3.0 |
~1.2.0 |
1.1.0 |
1.0.0 |
0.1.0 |
安装
要安装 universal-sierra-binary
的最新稳定版本,请运行
curl -L https://raw.githubusercontent.com/software-mansion/universal-sierra-compiler/master/scripts/install.sh | sh
或者,要将 USC 作为 Rust 依赖项使用,只需将其放入您的 Cargo.toml
中,如下所示
universal-sierra-compiler = "2.1.0"
您几乎总是想安装最新稳定版本。在极少数情况下,如果存在带有新不稳定 Sierra 版本的预发布版本,并且您想使用它,请运行以下命令并指定所需的预发布版本
curl -L https://raw.githubusercontent.com/software-mansion/universal-sierra-compiler/master/scripts/install.sh | sh -s -- v2.0.0-rc.0
📝 注意
如果脚本无法将已安装的二进制文件添加到 PATH,它将打印手动添加的说明。
作为二进制文件使用
命令行工具
该工具由两个子命令组成
compile-contract
compile-raw
第一个子命令编译 Starknet 合同的 Sierra,而第二个子命令编译纯 Cairo 代码的 Sierra。
compile-contract
子命令
此子命令的输入是包含合同 Sierra(cairo_lang_starknet_classes::contract_class::ContractClass
)的文件的路径,格式为 json
$ universal-sierra-compiler \
compile-contract \
--sierra-path ./path/to/sierra.json
{"bytecode": ...}
📝 注意
请注意,输出是 JSON 格式。
要自动保存 CASM,请传递 --output-path
参数
$ universal-sierra-compiler \
compile-contract \
--sierra-path ./path/to/sierra.json
--output-path ./path/to/casm.json
compile-raw
子命令
此子命令的输入是包含 Sierra 程序(cairo_lang_sierra::program::Program
)的文件的路径,格式为 json
$ universal-sierra-compiler \
compile-raw \
--sierra-path ./path/to/sierra.json
{"assembled_cairo_program": ...}
📝 注意
请注意,输出是 JSON 格式。
要自动保存已编译的cairo程序,请传递--output-path
参数
$ universal-sierra-compiler \
compile-raw \
--sierra-path ./path/to/sierra.json
--output-path ./path/to/casm.json
作为库使用
库crate导出两个函数
compile_contract(serde_json::Value) -> Result<serde_json::Value>
compile_raw(serde_json::Value) -> Result<serde_json::Value>
它们与它们的CLI对应函数执行相同的操作。然而,它们接受整个程序作为参数,精确地是一个json_serde::Value
。返回值是编译后的程序,位于Result<serde_json::Value>
中。
依赖项
~24–35MB
~513K SLoC