From e22d45ef7b952b8d83aa1e7e9badb20d895e542c Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 1 Apr 2025 18:32:36 +0100 Subject: [PATCH 1/2] feat: add support for aliases destination in program serde --- vm/src/serde/deserialize_program.rs | 9 +++++++++ vm/src/serde/serialize_program.rs | 3 +++ vm/src/types/program.rs | 20 ++++++++++++++++++++ vm/src/vm/runners/cairo_runner.rs | 4 ++++ 4 files changed, 36 insertions(+) diff --git a/vm/src/serde/deserialize_program.rs b/vm/src/serde/deserialize_program.rs index dc13a2e9f6..0789e5f0c9 100644 --- a/vm/src/serde/deserialize_program.rs +++ b/vm/src/serde/deserialize_program.rs @@ -103,6 +103,8 @@ pub struct Identifier { pub members: Option>, pub cairo_type: Option, pub size: Option, + // In case of an alias - resolves to the original identifier + pub destination: Option, } #[cfg_attr(feature = "test_utils", derive(Arbitrary))] @@ -1014,6 +1016,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1028,6 +1031,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1040,6 +1044,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: Some(String::from("starkware.cairo.common.math.unsigned_div_rem")), }, ); identifiers.insert( @@ -1054,6 +1059,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1066,6 +1072,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1078,6 +1085,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1090,6 +1098,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); diff --git a/vm/src/serde/serialize_program.rs b/vm/src/serde/serialize_program.rs index 1e9f83e8d1..7ad6add212 100644 --- a/vm/src/serde/serialize_program.rs +++ b/vm/src/serde/serialize_program.rs @@ -128,6 +128,7 @@ pub(crate) struct IdentifierSerializer { pub members: Option>, pub cairo_type: Option, pub size: Option, + pub destination: Option, // in case of alias } impl From for Identifier { @@ -140,6 +141,7 @@ impl From for Identifier { members: identifier_serialer.members, cairo_type: identifier_serialer.cairo_type, size: identifier_serialer.size, + destination: identifier_serialer.destination, } } } @@ -154,6 +156,7 @@ impl From for IdentifierSerializer { members: identifier_serialer.members, cairo_type: identifier_serialer.cairo_type, size: identifier_serialer.size, + destination: identifier_serialer.destination, } } } diff --git a/vm/src/types/program.rs b/vm/src/types/program.rs index fcc2cb1a3e..da5d8c69ed 100644 --- a/vm/src/types/program.rs +++ b/vm/src/types/program.rs @@ -721,6 +721,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -734,6 +735,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -776,6 +778,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -789,6 +792,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -939,6 +943,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -952,6 +957,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -1066,6 +1072,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -1079,6 +1086,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -1132,6 +1140,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -1145,6 +1154,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -1193,6 +1203,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1205,6 +1216,7 @@ mod tests { members: Some(HashMap::new()), cairo_type: None, size: Some(0), + destination: None, }, ); identifiers.insert( @@ -1217,6 +1229,7 @@ mod tests { members: Some(HashMap::new()), cairo_type: None, size: Some(0), + destination: None, }, ); identifiers.insert( @@ -1229,6 +1242,7 @@ mod tests { members: Some(HashMap::new()), cairo_type: None, size: Some(0), + destination: None, }, ); identifiers.insert( @@ -1241,6 +1255,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); @@ -1297,6 +1312,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); identifiers.insert( @@ -1309,6 +1325,7 @@ mod tests { members: Some(HashMap::new()), cairo_type: None, size: Some(0), + destination: None, }, ); identifiers.insert( @@ -1321,6 +1338,7 @@ mod tests { members: Some(HashMap::new()), cairo_type: None, size: Some(0), + destination: None, }, ); identifiers.insert( @@ -1333,6 +1351,7 @@ mod tests { members: Some(HashMap::new()), cairo_type: None, size: Some(0), + destination: None, }, ); identifiers.insert( @@ -1345,6 +1364,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ); diff --git a/vm/src/vm/runners/cairo_runner.rs b/vm/src/vm/runners/cairo_runner.rs index 1c5fabd466..b371d6622a 100644 --- a/vm/src/vm/runners/cairo_runner.rs +++ b/vm/src/vm/runners/cairo_runner.rs @@ -4597,6 +4597,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, )] .into_iter() @@ -4626,6 +4627,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ), ( @@ -4638,6 +4640,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, ), ] @@ -4668,6 +4671,7 @@ mod tests { members: None, cairo_type: None, size: None, + destination: None, }, )] .into_iter() From 4b484100a2b9fec21067e2c1588656d9dd2c8438 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 16 Apr 2025 17:15:57 +0100 Subject: [PATCH 2/2] add changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8724213dd4..2020a5e96c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ #### Upcoming Changes +* feat: add support for alias identifiers destination in program serde [#2071](https://github.com/lambdaclass/cairo-vm/pull/2071) + * dev: add Memory::get_maybe_relocatable [#2039](https://github.com/lambdaclass/cairo-vm/pull/2039) * refactor: remove duplicated get_val function [#2065](https://github.com/lambdaclass/cairo-vm/pull/2065)