Skip to content

Commit 18f87cf

Browse files
committed
Usc full refactor
1 parent 31c66c4 commit 18f87cf

File tree

14 files changed

+59
-41
lines changed

14 files changed

+59
-41
lines changed

Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/declare.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,9 @@ pub fn get_class_hash(sierra_class: &SierraClass) -> Result<ClassHash> {
6868
}
6969

7070
fn get_contract_class(contract_artifact: &StarknetContractArtifacts) -> RunnableCompiledClass {
71-
let contract_class = CompiledClassV1::try_from_json_string(
72-
&contract_artifact.casm,
73-
get_current_sierra_version(),
74-
)
75-
.expect("Failed to read contract class from json");
71+
let contract_class =
72+
CompiledClassV1::try_from((contract_artifact.casm.clone(), get_current_sierra_version()))
73+
.expect("Failed to read contract class from json");
7674

7775
#[cfg(feature = "cairo-native")]
7876
return match &contract_artifact.executor {

crates/forge-runner/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use std::sync::{Arc, Mutex};
2222
use test_case_summary::{AnyTestCaseSummary, Fuzzing};
2323
use tokio::sync::mpsc::{Sender, channel};
2424
use tokio::task::JoinHandle;
25-
use universal_sierra_compiler_api::AssembledProgramWithDebugInfo;
25+
use universal_sierra_compiler_api::representation::RawCasmProgram;
2626

2727
pub mod build_trace_data;
2828
pub mod coverage_api;
@@ -106,7 +106,7 @@ pub fn maybe_generate_coverage(
106106
#[tracing::instrument(skip_all, level = "debug")]
107107
pub fn run_for_test_case(
108108
case: Arc<TestCaseWithResolvedConfig>,
109-
casm_program: Arc<AssembledProgramWithDebugInfo>,
109+
casm_program: Arc<RawCasmProgram>,
110110
forge_config: Arc<ForgeConfig>,
111111
versioned_program_path: Arc<Utf8PathBuf>,
112112
send: Sender<()>,
@@ -141,7 +141,7 @@ pub fn run_for_test_case(
141141
#[tracing::instrument(skip_all, level = "debug")]
142142
fn run_with_fuzzing(
143143
case: Arc<TestCaseWithResolvedConfig>,
144-
casm_program: Arc<AssembledProgramWithDebugInfo>,
144+
casm_program: Arc<RawCasmProgram>,
145145
forge_config: Arc<ForgeConfig>,
146146
versioned_program_path: Arc<Utf8PathBuf>,
147147
send: Sender<()>,

crates/forge-runner/src/package_tests.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use serde::Serialize;
1919
use starknet_types_core::felt::Felt;
2020
use std::collections::HashMap;
2121
use std::sync::Arc;
22-
use universal_sierra_compiler_api::AssembledProgramWithDebugInfo;
22+
use universal_sierra_compiler_api::representation::RawCasmProgram;
2323

2424
pub mod raw;
2525
pub mod with_config;
@@ -66,10 +66,7 @@ impl TestDetails {
6666
builtins
6767
}
6868

69-
pub fn try_into_program(
70-
&self,
71-
casm_program: &AssembledProgramWithDebugInfo,
72-
) -> Result<Program> {
69+
pub fn try_into_program(&self, casm_program: &RawCasmProgram) -> Result<Program> {
7370
let builtins = self.builtins();
7471

7572
let assembled_program = &casm_program.assembled_cairo_program;
@@ -102,7 +99,7 @@ pub struct TestTarget<C> {
10299
pub tests_location: TestTargetLocation,
103100
pub sierra_program: ProgramArtifact,
104101
pub sierra_program_path: Arc<Utf8PathBuf>,
105-
pub casm_program: Arc<AssembledProgramWithDebugInfo>,
102+
pub casm_program: Arc<RawCasmProgram>,
106103
pub test_cases: Vec<TestCase<C>>,
107104
}
108105

crates/forge-runner/src/package_tests/with_config_resolved.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use cheatnet::runtime_extensions::forge_config_extension::config::{
66
RawAvailableResourceBoundsConfig, RawFuzzerConfig,
77
};
88
use starknet_api::block::BlockNumber;
9-
use universal_sierra_compiler_api::AssembledProgramWithDebugInfo;
9+
use universal_sierra_compiler_api::representation::RawCasmProgram;
1010
use url::Url;
1111

1212
pub type TestTargetWithResolvedConfig = TestTarget<TestCaseResolvedConfig>;
@@ -29,10 +29,7 @@ impl TestCaseWithResolvedConfig {
2929
}
3030
}
3131

32-
pub fn try_into_program(
33-
&self,
34-
casm_program: &AssembledProgramWithDebugInfo,
35-
) -> Result<Program> {
32+
pub fn try_into_program(&self, casm_program: &RawCasmProgram) -> Result<Program> {
3633
self.test_details.try_into_program(casm_program)
3734
}
3835
}

crates/forge-runner/src/running.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use std::rc::Rc;
4343
use std::sync::{Arc, Mutex};
4444
use tokio::sync::mpsc::Sender;
4545
use tokio::task::JoinHandle;
46-
use universal_sierra_compiler_api::AssembledProgramWithDebugInfo;
46+
use universal_sierra_compiler_api::representation::RawCasmProgram;
4747

4848
pub mod config_run;
4949
mod execution;
@@ -62,7 +62,7 @@ pub use syscall_handler::syscall_handler_offset;
6262
#[tracing::instrument(skip_all, level = "debug")]
6363
pub fn run_test(
6464
case: Arc<TestCaseWithResolvedConfig>,
65-
casm_program: Arc<AssembledProgramWithDebugInfo>,
65+
casm_program: Arc<RawCasmProgram>,
6666
forge_config: Arc<ForgeConfig>,
6767
versioned_program_path: Arc<Utf8PathBuf>,
6868
send: Sender<()>,
@@ -93,7 +93,7 @@ pub fn run_test(
9393
#[tracing::instrument(skip_all, level = "debug")]
9494
pub(crate) fn run_fuzz_test(
9595
case: Arc<TestCaseWithResolvedConfig>,
96-
casm_program: Arc<AssembledProgramWithDebugInfo>,
96+
casm_program: Arc<RawCasmProgram>,
9797
forge_config: Arc<ForgeConfig>,
9898
versioned_program_path: Arc<Utf8PathBuf>,
9999
send: Sender<()>,
@@ -159,7 +159,7 @@ pub enum RunResult {
159159
#[tracing::instrument(skip_all, level = "debug")]
160160
pub fn run_test_case(
161161
case: &TestCaseWithResolvedConfig,
162-
casm_program: &AssembledProgramWithDebugInfo,
162+
casm_program: &RawCasmProgram,
163163
runtime_config: &RuntimeConfig,
164164
fuzzer_rng: Option<Arc<Mutex<StdRng>>>,
165165
versioned_program_path: &Utf8Path,

crates/forge-runner/src/running/config_run.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use starknet_api::block::{
1818
};
1919
use starknet_types_core::felt::Felt;
2020
use std::default::Default;
21-
use universal_sierra_compiler_api::AssembledProgramWithDebugInfo;
21+
use universal_sierra_compiler_api::representation::RawCasmProgram;
2222

2323
struct PhantomStateReader;
2424

@@ -61,7 +61,7 @@ impl StateReader for PhantomStateReader {
6161
#[tracing::instrument(skip_all, level = "debug")]
6262
pub fn run_config_pass(
6363
test_details: &TestDetails,
64-
casm_program: &AssembledProgramWithDebugInfo,
64+
casm_program: &RawCasmProgram,
6565
tracked_resource: &ForgeTrackedResource,
6666
) -> Result<RawForgeConfig> {
6767
let program = test_details.try_into_program(casm_program)?;

crates/scarb-api/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ itertools.workspace = true
2323
universal-sierra-compiler-api = { path = "../universal-sierra-compiler-api" }
2424
foundry-ui = { path = "../foundry-ui" }
2525
cairo-native = { workspace = true, optional = true }
26+
cairo-lang-starknet-classes.workspace = true
2627
native-api = { path = "../native-api", optional = true }
2728
tracing.workspace = true
2829

2930
[dev-dependencies]
3031
assert_fs.workspace = true
3132
indoc.workspace = true
33+
num-bigint.workspace = true

crates/scarb-api/src/artifacts.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use anyhow::Result;
22

33
use crate::artifacts::representation::StarknetArtifactsRepresentation;
4+
use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
45
#[cfg(feature = "cairo-native")]
56
use cairo_native::executor::AotContractExecutor;
67
use camino::{Utf8Path, Utf8PathBuf};
@@ -19,7 +20,7 @@ pub struct StarknetContractArtifacts {
1920
/// Compiled sierra code
2021
pub sierra: String,
2122
/// Compiled casm code
22-
pub casm: String,
23+
pub casm: CasmContractClass,
2324

2425
#[cfg(feature = "cairo-native")]
2526
/// Optional AOT compiled native executor
@@ -106,7 +107,7 @@ impl StarknetArtifactsFiles {
106107
fn compile_artifact_at_path(&self, path: &Utf8Path) -> Result<StarknetContractArtifacts> {
107108
let sierra = fs::read_to_string(path)?;
108109

109-
let casm = serde_json::to_string(&compile_contract_sierra_at_path(path)?)?;
110+
let casm = compile_contract_sierra_at_path(path)?;
110111

111112
#[cfg(feature = "cairo-native")]
112113
let executor = self.compile_to_native(&sierra)?;
@@ -153,9 +154,11 @@ mod tests {
153154
use crate::tests::setup_package;
154155
use assert_fs::TempDir;
155156
use assert_fs::fixture::{FileWriteStr, PathChild};
157+
use cairo_lang_starknet_classes::casm_contract_class::CasmContractEntryPoints;
156158
use camino::Utf8PathBuf;
157159
use deserialized::{StarknetArtifacts, StarknetContract, StarknetContractArtifactPaths};
158160
use indoc::indoc;
161+
use num_bigint::BigUint;
159162

160163
#[test]
161164
fn test_unique_artifacts() {
@@ -165,7 +168,15 @@ mod tests {
165168
(
166169
StarknetContractArtifacts {
167170
sierra: "sierra1".to_string(),
168-
casm: "casm1".to_string(),
171+
casm: CasmContractClass {
172+
prime: BigUint::default(),
173+
compiler_version: String::default(),
174+
bytecode: vec![],
175+
bytecode_segment_lengths: None,
176+
hints: vec![],
177+
pythonic_hints: None,
178+
entry_points_by_type: CasmContractEntryPoints::default(),
179+
},
169180
#[cfg(feature = "cairo-native")]
170181
executor: None,
171182
},

crates/scarb-api/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -611,15 +611,13 @@ mod tests {
611611

612612
let contract = contracts.get("ERC20").unwrap();
613613
assert_eq!(&sierra_contents_erc20, &contract.0.sierra);
614-
assert!(!contract.0.casm.is_empty());
615614

616615
let sierra_contents_erc20 = fs::read_to_string(
617616
temp.join("target/dev/basic_package_HelloStarknet.contract_class.json"),
618617
)
619618
.unwrap();
620619
let contract = contracts.get("HelloStarknet").unwrap();
621620
assert_eq!(&sierra_contents_erc20, &contract.0.sierra);
622-
assert!(!contract.0.casm.is_empty());
623621
}
624622

625623
#[test]

0 commit comments

Comments
 (0)