Skip to content

Commit

Permalink
rebase PR
Browse files Browse the repository at this point in the history
  • Loading branch information
OmriEshhar1 committed Mar 6, 2025
1 parent 441cc4e commit ad19ba2
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## Cairo-VM Changelog

#### Upcoming Changes
* feat: adding `all_cairo_stwo` layout to vm [#1957](https://github.com/lambdaclass/cairo-vm/pull/1957)

- refactor: Fixed some warnings [#1980](https://github.com/lambdaclass/cairo-vm/pull/1980)

Expand Down
43 changes: 43 additions & 0 deletions vm/src/types/instance_definitions/builtins_instance_def.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,28 @@ impl BuiltinsInstanceDef {
}
}

pub(crate) fn all_cairo_stwo() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::new(Some(256))),
range_check: Some(RangeCheckInstanceDef::default()),
ecdsa: None,
bitwise: Some(BitwiseInstanceDef::new(Some(16))),
ec_op: None,
keccak: None,
poseidon: Some(PoseidonInstanceDef::new(Some(256))),
range_check96: Some(RangeCheckInstanceDef::new(Some(8))),
#[cfg(feature = "mod_builtin")]
add_mod: Some(ModInstanceDef::new(Some(128), 1, 96)),
#[cfg(feature = "mod_builtin")]
mul_mod: Some(ModInstanceDef::new(Some(256), 1, 96)),
#[cfg(not(feature = "mod_builtin"))]
add_mod: None,
#[cfg(not(feature = "mod_builtin"))]
mul_mod: None,
}
}

pub(crate) fn all_solidity() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
Expand Down Expand Up @@ -377,6 +399,27 @@ mod tests {
assert!(builtins.poseidon.is_some());
}

#[test]
fn get_builtins_all_cairo_stwo() {
let builtins = BuiltinsInstanceDef::all_cairo_stwo();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
assert!(builtins.ecdsa.is_none());
assert!(builtins.bitwise.is_some());
assert!(builtins.ec_op.is_none());
assert!(builtins.keccak.is_none());
assert!(builtins.poseidon.is_some());
#[cfg(feature = "mod_builtin")]
assert!(builtins.add_mod.is_some());
#[cfg(feature = "mod_builtin")]
assert!(builtins.mul_mod.is_some());
#[cfg(not(feature = "mod_builtin"))]
assert!(builtins.add_mod.is_none());
#[cfg(not(feature = "mod_builtin"))]
assert!(builtins.mul_mod.is_none());
}

#[test]
fn get_builtins_all_solidity() {
let builtins = BuiltinsInstanceDef::all_solidity();
Expand Down
26 changes: 26 additions & 0 deletions vm/src/types/layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ impl CairoLayout {
}
}

pub(crate) fn all_cairo_stwo_instance() -> CairoLayout {
CairoLayout {
name: LayoutName::all_cairo_stwo,
rc_units: 4,
cpu_component_step: DEFAULT_CPU_COMPONENT_STEP,
memory_units_per_step: DEFAULT_MEMORY_UNITS_PER_STEP,
builtins: BuiltinsInstanceDef::all_cairo_stwo(),
public_memory_fraction: 8,
diluted_pool_instance_def: Some(DilutedPoolInstanceDef::default()),
}
}

pub(crate) fn all_solidity_instance() -> CairoLayout {
CairoLayout {
name: LayoutName::all_solidity,
Expand Down Expand Up @@ -456,6 +468,20 @@ mod tests {
);
}

#[test]
fn get_all_cairo_stwo_instance() {
let layout = CairoLayout::all_cairo_stwo_instance();
let builtins = BuiltinsInstanceDef::all_cairo_stwo();
assert_eq!(layout.name, LayoutName::all_cairo_stwo);
assert_eq!(layout.rc_units, 4);
assert_eq!(layout.builtins, builtins);
assert_eq!(layout.public_memory_fraction, 8);
assert_eq!(
layout.diluted_pool_instance_def,
Some(DilutedPoolInstanceDef::default())
);
}

#[test]
fn get_all_solidity_instance() {
let layout = CairoLayout::all_solidity_instance();
Expand Down
3 changes: 3 additions & 0 deletions vm/src/types/layout_name.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ pub enum LayoutName {
all_solidity,
all_cairo,
dynamic,
all_cairo_stwo,
}

impl LayoutName {
Expand All @@ -37,6 +38,7 @@ impl LayoutName {
LayoutName::all_solidity => "all_solidity",
LayoutName::all_cairo => "all_cairo",
LayoutName::dynamic => "dynamic",
LayoutName::all_cairo_stwo => "all_cairo_stwo",
}
}
}
Expand All @@ -62,6 +64,7 @@ impl ValueEnum for LayoutName {
Self::all_solidity,
Self::all_cairo,
Self::dynamic,
Self::all_cairo_stwo,
]
}

Expand Down
24 changes: 24 additions & 0 deletions vm/src/vm/runners/cairo_runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ impl CairoRunner {
LayoutName::recursive_large_output => CairoLayout::recursive_large_output_instance(),
LayoutName::recursive_with_poseidon => CairoLayout::recursive_with_poseidon(),
LayoutName::all_cairo => CairoLayout::all_cairo_instance(),
LayoutName::all_cairo_stwo => CairoLayout::all_cairo_stwo_instance(),
LayoutName::all_solidity => CairoLayout::all_solidity_instance(),
LayoutName::dynamic => {
let params =
Expand Down Expand Up @@ -3407,6 +3408,29 @@ mod tests {
);
}

#[test]
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
fn run_empty_recursive_with_poseidon() {
let program = program!();
let mut cairo_runner =
cairo_runner!(&program, LayoutName::recursive_with_poseidon, false, true);
assert_matches!(
cairo_runner.initialize(false),
Err(RunnerError::MissingMain)
);
}

#[test]
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
fn run_empty_all_cairo_stwo() {
let program = program!();
let mut cairo_runner = cairo_runner!(&program, LayoutName::all_cairo_stwo, false, true);
assert_matches!(
cairo_runner.initialize(false),
Err(RunnerError::MissingMain)
);
}

#[test]
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
/*Program used:
Expand Down

0 comments on commit ad19ba2

Please sign in to comment.