summaryrefslogtreecommitdiff
path: root/lang/cairo/files
diff options
context:
space:
mode:
Diffstat (limited to 'lang/cairo/files')
-rw-r--r--lang/cairo/files/patch-rust-1.87.0336
1 files changed, 336 insertions, 0 deletions
diff --git a/lang/cairo/files/patch-rust-1.87.0 b/lang/cairo/files/patch-rust-1.87.0
new file mode 100644
index 000000000000..639d340b7993
--- /dev/null
+++ b/lang/cairo/files/patch-rust-1.87.0
@@ -0,0 +1,336 @@
+https://github.com/lambdaclass/cairo-vm/pull/1990
+
+From b427a3eddd4e40969eb910e559c6a28dd3e6c988 Mon Sep 17 00:00:00 2001
+From: YairVaknin-starkware
+ <141148375+YairVaknin-starkware@users.noreply.github.com>
+Date: Mon, 10 Mar 2025 11:39:57 +0200
+Subject: [PATCH] Update_to_rustc_1.85 (#1990)
+
+* Update_to_rustc_1.85
+
+* Fix montconfig
+
+* format
+
+* clippy
+
+* clippy fix
+
+---------
+
+Co-authored-by: Edgar Luque <git@edgl.dev>
+---
+ vm/src/air_public_input.rs | 2 +-
+ vm/src/cairo_run.rs | 6 +++---
+ .../builtin_hint_processor/signature.rs | 7 +------
+ .../builtin_hint_processor/uint256_utils.rs | 4 ++--
+ .../hint_processor/builtin_hint_processor/vrf/fq.rs | 2 +-
+ .../cairo_1_hint_processor/dict_manager.rs | 13 ++++++++++++-
+ .../cairo_1_hint_processor/hint_processor.rs | 7 ++++++-
+ vm/src/math_utils/mod.rs | 1 -
+ vm/src/serde/deserialize_program.rs | 4 ++--
+ vm/src/serde/deserialize_utils.rs | 2 +-
+ vm/src/vm/decoding/decoder.rs | 6 +++---
+ vm/src/vm/runners/builtin_runner/modulo.rs | 6 +++---
+ vm/src/vm/runners/cairo_pie.rs | 9 ++++-----
+ vm/src/vm/vm_core.rs | 4 ++--
+ vm/src/vm/vm_memory/memory.rs | 2 +-
+ 29 files changed, 62 insertions(+), 52 deletions(-)
+
+diff --git src/air_public_input.rs src/air_public_input.rs
+index d4f39dfc80..9c81aad591 100644
+--- cargo-crates/cairo-vm-1.0.2/src/air_public_input.rs
++++ cargo-crates/cairo-vm-1.0.2/src/air_public_input.rs
+@@ -48,7 +48,7 @@ mod mem_value_serde {
+
+ struct Felt252OptionVisitor;
+
+- impl<'de> de::Visitor<'de> for Felt252OptionVisitor {
++ impl de::Visitor<'_> for Felt252OptionVisitor {
+ type Value = Option<Felt252>;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+diff --git src/cairo_run.rs src/cairo_run.rs
+index 43ecd8b164..e5950c5e8f 100644
+--- cargo-crates/cairo-vm-1.0.2/src/cairo_run.rs
++++ cargo-crates/cairo-vm-1.0.2/src/cairo_run.rs
+@@ -45,7 +45,7 @@ pub struct CairoRunConfig<'a> {
+ pub allow_missing_builtins: Option<bool>,
+ }
+
+-impl<'a> Default for CairoRunConfig<'a> {
++impl Default for CairoRunConfig<'_> {
+ fn default() -> Self {
+ CairoRunConfig {
+ entrypoint: "main",
+@@ -152,9 +152,9 @@ pub fn cairo_run_pie(
+ if cairo_run_config.proof_mode {
+ return Err(RunnerError::CairoPieProofMode.into());
+ }
+- if !hint_processor
++ if hint_processor
+ .get_n_steps()
+- .is_some_and(|steps| steps == pie.execution_resources.n_steps)
++ .is_none_or(|steps| steps != pie.execution_resources.n_steps)
+ {
+ return Err(RunnerError::PieNStepsVsRunResourcesNStepsMismatch.into());
+ }
+diff --git src/hint_processor/builtin_hint_processor/signature.rs src/hint_processor/builtin_hint_processor/signature.rs
+index 878a379b7a..2a77752c7e 100644
+--- cargo-crates/cairo-vm-1.0.2/src/hint_processor/builtin_hint_processor/signature.rs
++++ cargo-crates/cairo-vm-1.0.2/src/hint_processor/builtin_hint_processor/signature.rs
+@@ -1,7 +1,5 @@
+ use crate::stdlib::{boxed::Box, collections::HashMap, prelude::*};
+
+-use num_integer::Integer;
+-
+ use crate::{
+ hint_processor::{
+ builtin_hint_processor::hint_utils::{get_integer_from_var_name, get_ptr_from_var_name},
+@@ -27,10 +25,7 @@ pub fn verify_ecdsa_signature(
+ if ecdsa_ptr.segment_index != ecdsa_builtin.base() as isize {
+ return Err(HintError::AddSignatureWrongEcdsaPtr(Box::new(ecdsa_ptr)));
+ }
+- if !ecdsa_ptr
+- .offset
+- .is_multiple_of(&(CELLS_PER_SIGNATURE as usize))
+- {
++ if !num_integer::Integer::is_multiple_of(&ecdsa_ptr.offset, &(CELLS_PER_SIGNATURE as usize)) {
+ return Err(HintError::AddSignatureNotAPublicKey(Box::new(ecdsa_ptr)));
+ }
+ ecdsa_builtin
+diff --git src/hint_processor/builtin_hint_processor/uint256_utils.rs src/hint_processor/builtin_hint_processor/uint256_utils.rs
+index 9c91fafa8a..0946dd5ad7 100644
+--- cargo-crates/cairo-vm-1.0.2/src/hint_processor/builtin_hint_processor/uint256_utils.rs
++++ cargo-crates/cairo-vm-1.0.2/src/hint_processor/builtin_hint_processor/uint256_utils.rs
+@@ -86,13 +86,13 @@ impl<'a> Uint256<'a> {
+ }
+ }
+
+-impl<'a> From<&BigUint> for Uint256<'a> {
++impl From<&BigUint> for Uint256<'_> {
+ fn from(value: &BigUint) -> Self {
+ Self::split(value)
+ }
+ }
+
+-impl<'a> From<Felt252> for Uint256<'a> {
++impl From<Felt252> for Uint256<'_> {
+ fn from(value: Felt252) -> Self {
+ let (high, low) = value.div_rem(pow2_const_nz(128));
+ Self::from_values(low, high)
+diff --git src/hint_processor/builtin_hint_processor/vrf/fq.rs src/hint_processor/builtin_hint_processor/vrf/fq.rs
+index c31047d8e0..470a96ac8c 100644
+--- cargo-crates/cairo-vm-1.0.2/src/hint_processor/builtin_hint_processor/vrf/fq.rs
++++ cargo-crates/cairo-vm-1.0.2/src/hint_processor/builtin_hint_processor/vrf/fq.rs
+@@ -71,7 +71,7 @@ pub fn uint512_unsigned_div_rem(
+ /// Implements hint:
+ /// ```python
+ /// from starkware.python.math_utils import div_mod
+-
++///
+ /// def split(a: int):
+ /// return (a & ((1 << 128) - 1), a >> 128)
+ ///
+diff --git src/math_utils/mod.rs src/math_utils/mod.rs
+index 565a768b7c..75ad9888e9 100644
+--- cargo-crates/cairo-vm-1.0.2/src/math_utils/mod.rs
++++ cargo-crates/cairo-vm-1.0.2/src/math_utils/mod.rs
+@@ -61,7 +61,6 @@ pub fn pow2_const_nz(n: u32) -> &'static NonZeroFelt {
+ /// let negative = Felt252::MAX;
+ /// assert_eq!(signed_felt(negative), BigInt::from(-1));
+ /// ```
+-
+ pub fn signed_felt(felt: Felt252) -> BigInt {
+ let biguint = felt.to_biguint();
+ if biguint > *SIGNED_FELT_MAX {
+diff --git src/serde/deserialize_program.rs src/serde/deserialize_program.rs
+index 8f0e9a0dee..dc13a2e9f6 100644
+--- cargo-crates/cairo-vm-1.0.2/src/serde/deserialize_program.rs
++++ cargo-crates/cairo-vm-1.0.2/src/serde/deserialize_program.rs
+@@ -309,7 +309,7 @@ impl ValueAddress {
+
+ struct Felt252Visitor;
+
+-impl<'de> de::Visitor<'de> for Felt252Visitor {
++impl de::Visitor<'_> for Felt252Visitor {
+ type Value = Felt252;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+@@ -377,7 +377,7 @@ impl<'de> de::Visitor<'de> for ReferenceIdsVisitor {
+
+ struct ValueAddressVisitor;
+
+-impl<'de> de::Visitor<'de> for ValueAddressVisitor {
++impl de::Visitor<'_> for ValueAddressVisitor {
+ type Value = ValueAddress;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+diff --git src/serde/deserialize_utils.rs src/serde/deserialize_utils.rs
+index 7b4c7bb20e..157c66de2f 100644
+--- cargo-crates/cairo-vm-1.0.2/src/serde/deserialize_utils.rs
++++ cargo-crates/cairo-vm-1.0.2/src/serde/deserialize_utils.rs
+@@ -88,7 +88,7 @@ fn register(input: &str) -> IResult<&str, Option<Register>> {
+ }
+
+ fn offset(input: &str) -> IResult<&str, i32> {
+- if input.eq("") {
++ if input.is_empty() {
+ return Ok(("", 0));
+ }
+
+diff --git src/vm/decoding/decoder.rs src/vm/decoding/decoder.rs
+index 9dd02ea276..095006adcc 100644
+--- cargo-crates/cairo-vm-1.0.2/src/vm/decoding/decoder.rs
++++ cargo-crates/cairo-vm-1.0.2/src/vm/decoding/decoder.rs
+@@ -37,9 +37,9 @@ pub fn decode_instruction(encoded_instr: u128) -> Result<Instruction, VirtualMac
+ const OFFX_MASK: u128 = 0xFFFF;
+
+ // Grab offsets and convert them from little endian format.
+- let off0 = decode_offset(encoded_instr >> OFF0_OFF & OFFX_MASK);
+- let off1 = decode_offset(encoded_instr >> OFF1_OFF & OFFX_MASK);
+- let off2 = decode_offset(encoded_instr >> OFF2_OFF & OFFX_MASK);
++ let off0 = decode_offset((encoded_instr >> OFF0_OFF) & OFFX_MASK);
++ let off1 = decode_offset((encoded_instr >> OFF1_OFF) & OFFX_MASK);
++ let off2 = decode_offset((encoded_instr >> OFF2_OFF) & OFFX_MASK);
+
+ // Grab flags
+ let flags = encoded_instr >> FLAGS_OFFSET;
+diff --git src/vm/runners/builtin_runner/modulo.rs src/vm/runners/builtin_runner/modulo.rs
+index ef11096535..37575ddd07 100644
+--- cargo-crates/cairo-vm-1.0.2/src/vm/runners/builtin_runner/modulo.rs
++++ cargo-crates/cairo-vm-1.0.2/src/vm/runners/builtin_runner/modulo.rs
+@@ -491,15 +491,15 @@ impl ModBuiltinRunner {
+
+ /// NOTE: It is advisable to use VirtualMachine::mod_builtin_fill_memory instead of this method directly
+ /// when implementing hints to avoid cloning the runners
+-
++ ///
+ /// Fills the memory with inputs to the builtin instances based on the inputs to the
+ /// first instance, pads the offsets table to fit the number of operations writen in the
+ /// input to the first instance, and caculates missing values in the values table.
+-
++ ///
+ /// For each builtin, the given tuple is of the form (builtin_ptr, builtin_runner, n),
+ /// where n is the number of operations in the offsets table (i.e., the length of the
+ /// offsets table is 3*n).
+-
++ ///
+ /// The number of operations written to the input of the first instance n' should be at
+ /// least n and a multiple of batch_size. Previous offsets are copied to the end of the
+ /// offsets table to make its length 3n'.
+diff --git src/vm/runners/cairo_pie.rs src/vm/runners/cairo_pie.rs
+index ca6960e2d4..b839be06f3 100644
+--- cargo-crates/cairo-vm-1.0.2/src/vm/runners/cairo_pie.rs
++++ cargo-crates/cairo-vm-1.0.2/src/vm/runners/cairo_pie.rs
+@@ -255,9 +255,9 @@ impl CairoPie {
+ HashMap::from_iter(segment_sizes.iter().map(|si| (si.index, si.size)));
+
+ let validate_addr = |addr: Relocatable| -> Result<(), CairoPieValidationError> {
+- if !segment_sizes
++ if segment_sizes
+ .get(&addr.segment_index)
+- .is_some_and(|size| addr.offset <= *size)
++ .is_none_or(|size| addr.offset > *size)
+ {
+ return Err(CairoPieValidationError::InvalidAddress);
+ }
+@@ -437,7 +437,6 @@ impl CairoPie {
+ pub(super) mod serde_impl {
+ use crate::stdlib::collections::HashMap;
+ use crate::types::builtin_name::BuiltinName;
+- use num_integer::Integer;
+ use num_traits::Num;
+
+ use super::CAIRO_PIE_VERSION;
+@@ -467,7 +466,7 @@ pub(super) mod serde_impl {
+
+ pub(crate) struct Felt252Wrapper<'a>(&'a Felt252);
+
+- impl<'a> Serialize for Felt252Wrapper<'a> {
++ impl Serialize for Felt252Wrapper<'_> {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: Serializer,
+@@ -723,7 +722,7 @@ pub(super) mod serde_impl {
+ }
+
+ pub fn from_bytes(bytes: &[u8]) -> Option<CairoPieMemory> {
+- if !bytes.len().is_multiple_of(&CELL_BYTE_LEN) {
++ if !num_integer::Integer::is_multiple_of(&bytes.len(), &CELL_BYTE_LEN) {
+ return None;
+ }
+
+diff --git src/vm/vm_core.rs src/vm/vm_core.rs
+index 447f9c85d0..9fc7ca7cab 100644
+--- cargo-crates/cairo-vm-1.0.2/src/vm/vm_core.rs
++++ cargo-crates/cairo-vm-1.0.2/src/vm/vm_core.rs
+@@ -78,10 +78,10 @@ impl DeducedOperands {
+ self.0 & 1 != 0
+ }
+ fn was_op0_deducted(&self) -> bool {
+- self.0 & 1 << 1 != 0
++ self.0 & (1 << 1) != 0
+ }
+ fn was_op1_deducted(&self) -> bool {
+- self.0 & 1 << 2 != 0
++ self.0 & (1 << 2) != 0
+ }
+ }
+
+diff --git src/vm/vm_memory/memory.rs src/vm/vm_memory/memory.rs
+index 9a20b60d05..c5f7e32055 100644
+--- cargo-crates/cairo-vm-1.0.2/src/vm/vm_memory/memory.rs
++++ cargo-crates/cairo-vm-1.0.2/src/vm/vm_memory/memory.rs
+@@ -233,7 +233,7 @@ impl Memory {
+ }
+
+ /// Retrieve a value from memory (either normal or temporary) and apply relocation rules
+- pub(crate) fn get<'a, 'b: 'a, K: 'a>(&'b self, key: &'a K) -> Option<Cow<MaybeRelocatable>>
++ pub(crate) fn get<'a, 'b: 'a, K: 'a>(&'b self, key: &'a K) -> Option<Cow<'b, MaybeRelocatable>>
+ where
+ Relocatable: TryFrom<&'a K>,
+ {
+--- cargo-crates/cairo-vm-1.0.2/src/hint_processor/cairo_1_hint_processor/dict_manager.rs.orig 2006-07-24 03:21:28.000000000 +0200
++++ cargo-crates/cairo-vm-1.0.2/src/hint_processor/cairo_1_hint_processor/dict_manager.rs 2025-05-20 15:28:17.489344000 +0200
+@@ -124,6 +124,18 @@ impl DictManagerExecScope {
+ let mut prev_end = vm.add_memory_segment();
+ for tracker in &self.trackers {
+ vm.add_relocation_rule(tracker.start, prev_end)?;
++ #[cfg(feature = "extensive_hints")]
++ {
++ vm.add_relocation_rule(
++ tracker.start,
++ MaybeRelocatable::RelocatableValue(prev_end),
++ )?;
++ }
++ #[cfg(not(feature = "extensive_hints"))]
++ {
++ vm.add_relocation_rule(tracker.start, prev_end)?;
++ }
++
+ prev_end += (tracker.end.unwrap_or_default() - tracker.start)?;
+ prev_end += 1;
+ }
+--- cargo-crates/cairo-vm-1.0.2/src/hint_processor/cairo_1_hint_processor/hint_processor.rs.orig 2006-07-24 03:21:28.000000000 +0200
++++ cargo-crates/cairo-vm-1.0.2/src/hint_processor/cairo_1_hint_processor/hint_processor.rs 2025-05-20 15:27:32.673984000 +0200
+@@ -1,3 +1,8 @@
++// ark-ff-macros mess workaround
++// can't put this directly above MontConfig derive because Rust can't parse it correctly.
++#![allow(non_local_definitions)]
++#![allow(unexpected_cfgs)]
++
+ use super::dict_manager::DictManagerExecScope;
+ use super::hint_processor_utils::*;
+ use crate::any_box;
+@@ -38,9 +43,9 @@ struct MemoryExecScope {
+ #[derive(MontConfig)]
+ #[modulus = "3618502788666131213697322783095070105623107215331596699973092056135872020481"]
+ #[generator = "3"]
+-
+ /// Returns the Beta value of the Starkware elliptic curve.
+ struct FqConfig;
++
+ type Fq = Fp256<MontBackend<FqConfig, 4>>;
+
+ fn get_beta() -> Felt252 {