diff --git a/Cargo.lock b/Cargo.lock index 29eaae8..44483f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -420,10 +420,23 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" dependencies = [ - "cairo-lang-utils 2.8.2", + "cairo-lang-utils 2.8.5", + "indoc", + "num-bigint", + "num-traits 0.2.19", + "parity-scale-codec", + "serde", +] + +[[package]] +name = "cairo-lang-casm" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" +dependencies = [ + "cairo-lang-utils 2.9.1", "indoc", "num-bigint", "num-traits 0.2.19", @@ -451,10 +464,19 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" +dependencies = [ + "cairo-lang-utils 2.8.5", + "good_lp", +] + +[[package]] +name = "cairo-lang-eq-solver" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" dependencies = [ - "cairo-lang-utils 2.8.2", + "cairo-lang-utils 2.9.1", "good_lp", ] @@ -512,11 +534,37 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" dependencies = [ "anyhow", - "cairo-lang-utils 2.8.2", + "cairo-lang-utils 2.8.5", + "const-fnv1a-hash", + "convert_case", + "derivative", + "itertools 0.12.1", + "lalrpop", + "lalrpop-util", + "num-bigint", + "num-integer", + "num-traits 0.2.19", + "regex", + "rust-analyzer-salsa", + "serde", + "serde_json", + "sha3", + "smol_str", + "starknet-types-core", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" +dependencies = [ + "anyhow", + "cairo-lang-utils 2.9.1", "const-fnv1a-hash", "convert_case", "derivative", @@ -567,13 +615,28 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" dependencies = [ - "cairo-lang-eq-solver 2.8.2", - "cairo-lang-sierra 2.8.2", - "cairo-lang-sierra-type-size 2.8.2", - "cairo-lang-utils 2.8.2", + "cairo-lang-eq-solver 2.8.5", + "cairo-lang-sierra 2.8.5", + "cairo-lang-sierra-type-size 2.8.5", + "cairo-lang-utils 2.8.5", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-ap-change" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" +dependencies = [ + "cairo-lang-eq-solver 2.9.1", + "cairo-lang-sierra 2.9.1", + "cairo-lang-sierra-type-size 2.9.1", + "cairo-lang-utils 2.9.1", "itertools 0.12.1", "num-bigint", "num-traits 0.2.19", @@ -611,13 +674,28 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" +dependencies = [ + "cairo-lang-eq-solver 2.8.5", + "cairo-lang-sierra 2.8.5", + "cairo-lang-sierra-type-size 2.8.5", + "cairo-lang-utils 2.8.5", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-gas" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" dependencies = [ - "cairo-lang-eq-solver 2.8.2", - "cairo-lang-sierra 2.8.2", - "cairo-lang-sierra-type-size 2.8.2", - "cairo-lang-utils 2.8.2", + "cairo-lang-eq-solver 2.9.1", + "cairo-lang-sierra 2.9.1", + "cairo-lang-sierra-type-size 2.9.1", + "cairo-lang-utils 2.9.1", "itertools 0.12.1", "num-bigint", "num-traits 0.2.19", @@ -666,16 +744,36 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" +dependencies = [ + "assert_matches", + "cairo-lang-casm 2.8.5", + "cairo-lang-sierra 2.8.5", + "cairo-lang-sierra-ap-change 2.8.5", + "cairo-lang-sierra-gas 2.8.5", + "cairo-lang-sierra-type-size 2.8.5", + "cairo-lang-utils 2.8.5", + "indoc", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "starknet-types-core", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-to-casm" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" dependencies = [ "assert_matches", - "cairo-lang-casm 2.8.2", - "cairo-lang-sierra 2.8.2", - "cairo-lang-sierra-ap-change 2.8.2", - "cairo-lang-sierra-gas 2.8.2", - "cairo-lang-sierra-type-size 2.8.2", - "cairo-lang-utils 2.8.2", + "cairo-lang-casm 2.9.1", + "cairo-lang-sierra 2.9.1", + "cairo-lang-sierra-ap-change 2.9.1", + "cairo-lang-sierra-gas 2.9.1", + "cairo-lang-sierra-type-size 2.9.1", + "cairo-lang-utils 2.9.1", "indoc", "itertools 0.12.1", "num-bigint", @@ -704,11 +802,20 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" dependencies = [ - "cairo-lang-sierra 2.8.2", - "cairo-lang-utils 2.8.2", + "cairo-lang-sierra 2.8.5", + "cairo-lang-utils 2.8.5", +] + +[[package]] +name = "cairo-lang-sierra-type-size" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" +dependencies = [ + "cairo-lang-sierra 2.9.1", + "cairo-lang-utils 2.9.1", ] [[package]] @@ -760,13 +867,35 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" dependencies = [ - "cairo-lang-casm 2.8.2", - "cairo-lang-sierra 2.8.2", - "cairo-lang-sierra-to-casm 2.8.2", - "cairo-lang-utils 2.8.2", + "cairo-lang-casm 2.8.5", + "cairo-lang-sierra 2.8.5", + "cairo-lang-sierra-to-casm 2.8.5", + "cairo-lang-utils 2.8.5", + "convert_case", + "itertools 0.12.1", + "num-bigint", + "num-integer", + "num-traits 0.2.19", + "serde", + "serde_json", + "sha3", + "smol_str", + "starknet-types-core", + "thiserror", +] + +[[package]] +name = "cairo-lang-starknet-classes" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" +dependencies = [ + "cairo-lang-casm 2.9.1", + "cairo-lang-sierra 2.9.1", + "cairo-lang-sierra-to-casm 2.9.1", + "cairo-lang-utils 2.9.1", "convert_case", "itertools 0.12.1", "num-bigint", @@ -810,8 +939,22 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.2#14b1d8c1566b3346545eb7e65724e3d0cbb80a81" +version = "2.8.5" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.8.5#aac3a51aa78e8f7d06bbb2aa659fb1767b8bc203" +dependencies = [ + "hashbrown 0.14.5", + "indexmap 2.3.0", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "schemars", + "serde", +] + +[[package]] +name = "cairo-lang-utils" +version = "2.9.1" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.9.1#3b1043862555f5a6ebd0e08d5a318d72890d1f35" dependencies = [ "hashbrown 0.14.5", "indexmap 2.3.0", @@ -3310,7 +3453,8 @@ dependencies = [ "bigdecimal", "cairo-lang-starknet-classes 2.6.4", "cairo-lang-starknet-classes 2.7.1", - "cairo-lang-starknet-classes 2.8.2", + "cairo-lang-starknet-classes 2.8.5", + "cairo-lang-starknet-classes 2.9.1", "chrono", "clap", "clap_complete", diff --git a/Cargo.toml b/Cargo.toml index b21d096..224534d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,8 @@ auto_impl = "1.1.0" bigdecimal = "0.4.1" cairo-starknet-2-6-4 = { package = "cairo-lang-starknet-classes", git = "https://github.com/starkware-libs/cairo", tag = "v2.6.4" } cairo-starknet-2-7-1 = { package = "cairo-lang-starknet-classes", git = "https://github.com/starkware-libs/cairo", tag = "v2.7.1" } -cairo-starknet-2-8-2 = { package = "cairo-lang-starknet-classes", git = "https://github.com/starkware-libs/cairo", tag = "v2.8.2" } +cairo-starknet-2-8-5 = { package = "cairo-lang-starknet-classes", git = "https://github.com/starkware-libs/cairo", tag = "v2.8.5" } +cairo-starknet-2-9-1 = { package = "cairo-lang-starknet-classes", git = "https://github.com/starkware-libs/cairo", tag = "v2.9.1" } chrono = "0.4.26" clap = { version = "4.3.8", features = ["derive", "env", "string"] } clap_complete = "4.3.1" diff --git a/src/casm.rs b/src/casm.rs index 0b51f92..06da835 100644 --- a/src/casm.rs +++ b/src/casm.rs @@ -73,7 +73,7 @@ impl CasmArgs { Some(network) => { let auto_version = match network { Network::Sepolia | Network::SepoliaIntegration | Network::Mainnet => { - CompilerVersion::V2_8_2 + CompilerVersion::V2_9_1 } }; diff --git a/src/compiler.rs b/src/compiler.rs index b7843d5..41358df 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -14,9 +14,13 @@ use cairo_starknet_2_7_1::{ casm_contract_class::CasmContractClass as Cairo271CasmClass, contract_class::ContractClass as Cairo271Class, }; -use cairo_starknet_2_8_2::{ - casm_contract_class::CasmContractClass as Cairo282CasmClass, - contract_class::ContractClass as Cairo282Class, +use cairo_starknet_2_8_5::{ + casm_contract_class::CasmContractClass as Cairo285CasmClass, + contract_class::ContractClass as Cairo285Class, +}; +use cairo_starknet_2_9_1::{ + casm_contract_class::CasmContractClass as Cairo291CasmClass, + contract_class::ContractClass as Cairo291Class, }; use clap::{builder::PossibleValue, ValueEnum}; use starknet::core::types::{ @@ -41,7 +45,8 @@ pub struct CompilerBinary { pub enum CompilerVersion { V2_6_4, V2_7_1, - V2_8_2, + V2_8_5, + V2_9_1, } impl BuiltInCompiler { @@ -75,11 +80,11 @@ impl BuiltInCompiler { } CompilerVersion::V2_7_1 => { // TODO: directly convert type without going through JSON - let contract_class: Cairo282Class = serde_json::from_str(&sierra_class_json)?; + let contract_class: Cairo271Class = serde_json::from_str(&sierra_class_json)?; // TODO: implement the `validate_compatible_sierra_version` call - let casm_contract = Cairo282CasmClass::from_contract_class( + let casm_contract = Cairo271CasmClass::from_contract_class( contract_class, false, MAX_BYTECODE_SIZE, @@ -87,13 +92,27 @@ impl BuiltInCompiler { serde_json::to_string(&casm_contract)? } - CompilerVersion::V2_8_2 => { + CompilerVersion::V2_8_5 => { // TODO: directly convert type without going through JSON - let contract_class: Cairo271Class = serde_json::from_str(&sierra_class_json)?; + let contract_class: Cairo285Class = serde_json::from_str(&sierra_class_json)?; // TODO: implement the `validate_compatible_sierra_version` call - let casm_contract = Cairo271CasmClass::from_contract_class( + let casm_contract = Cairo285CasmClass::from_contract_class( + contract_class, + false, + MAX_BYTECODE_SIZE, + )?; + + serde_json::to_string(&casm_contract)? + } + CompilerVersion::V2_9_1 => { + // TODO: directly convert type without going through JSON + let contract_class: Cairo291Class = serde_json::from_str(&sierra_class_json)?; + + // TODO: implement the `validate_compatible_sierra_version` call + + let casm_contract = Cairo291CasmClass::from_contract_class( contract_class, false, MAX_BYTECODE_SIZE, @@ -161,7 +180,7 @@ impl Default for CompilerVersion { impl ValueEnum for CompilerVersion { fn value_variants<'a>() -> &'a [Self] { - &[Self::V2_6_4, Self::V2_7_1, Self::V2_8_2] + &[Self::V2_6_4, Self::V2_7_1, Self::V2_8_5, Self::V2_9_1] } fn to_possible_value(&self) -> Option { @@ -178,12 +197,18 @@ impl ValueEnum for CompilerVersion { .alias("2.7") .alias("v2.7"), ), - Self::V2_8_2 => Some( - PossibleValue::new("2.8.2") - .alias("v2.8.2") + Self::V2_8_5 => Some( + PossibleValue::new("2.8.5") + .alias("v2.8.5") .alias("2.8") .alias("v2.8"), ), + Self::V2_9_1 => Some( + PossibleValue::new("2.9.1") + .alias("v2.9.1") + .alias("2.9") + .alias("v2.9"), + ), } } } @@ -195,7 +220,8 @@ impl FromStr for CompilerVersion { match s { "2.6.4" | "v2.6.4" | "2.6" | "v2.6" => Ok(Self::V2_6_4), "2.7.1" | "v2.7.1" | "2.7" | "v2.7" => Ok(Self::V2_7_1), - "2.8.2" | "v2.8.2" | "2.8" | "v2.8" => Ok(Self::V2_8_2), + "2.8.5" | "v2.8.5" | "2.8" | "v2.8" => Ok(Self::V2_8_5), + "2.9.1" | "v2.9.1" | "2.9" | "v2.9" => Ok(Self::V2_9_1), _ => Err(anyhow::anyhow!("unknown version: {}", s)), } } @@ -206,7 +232,8 @@ impl Display for CompilerVersion { match self { CompilerVersion::V2_6_4 => write!(f, "2.6.4"), CompilerVersion::V2_7_1 => write!(f, "2.7.1"), - CompilerVersion::V2_8_2 => write!(f, "2.8.2"), + CompilerVersion::V2_8_5 => write!(f, "2.8.5"), + CompilerVersion::V2_9_1 => write!(f, "2.9.1"), } } }