diff --git a/Cargo.lock b/Cargo.lock index 162d10d43..a273447c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -313,7 +313,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.43", + "syn 2.0.48", "which", ] @@ -336,7 +336,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.43", + "syn 2.0.48", "which", ] @@ -594,7 +594,7 @@ checksum = "ad0bfcae383df402157f70087e8e6d3e13c012356d57a2f60662b1c21e6cfabf" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -885,6 +885,7 @@ dependencies = [ "num-traits 0.2.17", "pretty_assertions_sorted", "proptest", + "serde", "serde_json", "starknet-types-core", "tempfile", @@ -1037,7 +1038,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -1417,7 +1418,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -1458,7 +1459,7 @@ checksum = "05aa0010e0e391b9a82dc87bfc4dbee3cb8260eec12ad9d83c12788299fa9093" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -1540,7 +1541,7 @@ checksum = "d4cf186fea4af17825116f72932fe52cce9a13bae39ff63b4dc0cfdb3fb4bde1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2030,7 +2031,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.43", + "syn 2.0.48", "tblgen", "unindent", ] @@ -2475,7 +2476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ "proc-macro2", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2514,9 +2515,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2558,9 +2559,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2866,22 +2867,22 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3067,7 +3068,7 @@ checksum = "af6527b845423542c8a16e060ea1bc43f67229848e7cd4c4d80be994a84220ce" dependencies = [ "starknet-curve 0.4.0", "starknet-ff", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3153,9 +3154,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -3255,7 +3256,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3267,7 +3268,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "test-case-core", ] @@ -3288,7 +3289,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3433,7 +3434,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3602,7 +3603,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -3624,7 +3625,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3825,7 +3826,7 @@ checksum = "255c4596d41e6916ced49cfafea18727b24d67878fa180ddfd69b9df34fd1726" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3845,5 +3846,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] diff --git a/Cargo.toml b/Cargo.toml index eb0a5435b..d1cf7f7f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,8 @@ required-features = ["build-cli"] default = ["build-cli", "with-runtime"] build-cli = ["clap", "tracing-subscriber"] with-debug-utils = [] -with-runtime = ["cairo-native-runtime"] +with-runtime = ["dep:cairo-native-runtime"] +with-serde = ["dep:serde"] [dependencies] bumpalo = "3.14" @@ -63,6 +64,7 @@ libloading = "0.8.1" tracing-subscriber = { version = "0.3", features = [ "env-filter", ], optional = true } +serde = { version = "1.0.195", features = ["derive"], optional = true } [dev-dependencies] cairo-felt = "0.8.5" diff --git a/src/executor.rs b/src/executor.rs index ce7c07b1e..54fb8cfdd 100644 --- a/src/executor.rs +++ b/src/executor.rs @@ -450,8 +450,8 @@ impl<'a> ArgumentMapper<'a> { self.push_aligned(get_integer_layout(252).align(), &value.to_le_digits()); } (CoreTypeConcrete::Felt252Dict(_), JitValue::Felt252Dict { .. }) => { - #[cfg(not(feature = "cairo-native-runtime"))] - unimplemented!("enable the `cairo-native-runtime` feature to use felt252 dicts"); + #[cfg(not(feature = "with-runtime"))] + unimplemented!("enable the `with-runtime` feature to use felt252 dicts"); // TODO: Assert that `info.ty` matches all the values' types. diff --git a/src/starknet.rs b/src/starknet.rs index 4a4903ff0..d5afc58c2 100644 --- a/src/starknet.rs +++ b/src/starknet.rs @@ -15,11 +15,13 @@ pub struct Felt252Abi(pub [u8; 32]); /// Binary representation of a `u256` (in MLIR). // TODO: This shouldn't need to be public. #[derive(Debug, Clone)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(target_arch = "x86_64", repr(C, align(8)))] #[cfg_attr(not(target_arch = "x86_64"), repr(C, align(16)))] pub struct U256(pub [u8; 32]); #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct ExecutionInfo { pub block_info: BlockInfo, pub tx_info: TxInfo, @@ -29,6 +31,7 @@ pub struct ExecutionInfo { } #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct ExecutionInfoV2 { pub block_info: BlockInfo, pub tx_info: TxV2Info, @@ -38,6 +41,7 @@ pub struct ExecutionInfoV2 { } #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct TxV2Info { pub version: Felt, pub account_contract_address: Felt, @@ -55,6 +59,7 @@ pub struct TxV2Info { } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct ResourceBounds { pub resource: Felt, pub max_amount: u64, @@ -62,6 +67,7 @@ pub struct ResourceBounds { } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct BlockInfo { pub block_number: u64, pub block_timestamp: u64, @@ -69,6 +75,7 @@ pub struct BlockInfo { } #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct TxInfo { pub version: Felt, pub account_contract_address: Felt, diff --git a/src/values.rs b/src/values.rs index 08260356c..b4ead666e 100644 --- a/src/values.rs +++ b/src/values.rs @@ -29,6 +29,7 @@ use std::{alloc::Layout, collections::HashMap, ops::Neg, ptr::NonNull}; /// /// A Boxed value or a non-null Nullable value is returned with it's inner value. #[derive(Clone, Educe)] +#[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] #[educe(Debug, Eq, PartialEq)] pub enum JitValue { Felt252(#[educe(Debug(method(std::fmt::Display::fmt)))] Felt),