Skip to content

Commit 7f268dc

Browse files
authored
fix nightly (#2012)
- **Update deps** - **Update reading panic info in scarb-execute**
1 parent cab930a commit 7f268dc

File tree

9 files changed

+174
-203
lines changed

9 files changed

+174
-203
lines changed

Cargo.lock

+107-87
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+39-37
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ members = [
2525
"resolver" = "2"
2626

2727
[workspace.package]
28-
version = "2.10.0"
28+
version = "2.10.1"
2929
edition = "2021"
3030

3131
authors = ["Software Mansion <[email protected]>"]
@@ -135,7 +135,8 @@ smallvec = "1"
135135
smol_str = { version = "0.3", features = ["serde"] }
136136
snapbox = { version = "0.4", features = ["cmd", "path"] }
137137
starknet-types-core = "0.1"
138-
stwo_cairo_prover = { version = "*", features = ["std"] }
138+
stwo_cairo_prover = { version = "*" }
139+
stwo-cairo-adapter = { version = "*", features = ["std"] }
139140
syn = "2"
140141
tar = "0.4"
141142
target-triple = "0.1"
@@ -167,41 +168,42 @@ zstd = "0.13"
167168
# on some of them directly.
168169
# This ensures no duplicate instances of Cairo crates are pulled in by mistake.
169170
[patch.crates-io]
170-
cairo-lang-casm = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
171-
cairo-lang-compiler = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
172-
cairo-lang-debug = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
173-
cairo-lang-defs = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
174-
cairo-lang-diagnostics = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
175-
cairo-lang-doc = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
176-
cairo-lang-eq-solver = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
177-
cairo-lang-executable = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
178-
cairo-lang-filesystem = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
179-
cairo-lang-formatter = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
180-
cairo-lang-lowering = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
181-
cairo-lang-parser = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
182-
cairo-lang-plugins = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
183-
cairo-lang-proc-macros = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
184-
cairo-lang-project = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
185-
cairo-lang-runnable-utils = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
186-
cairo-lang-runner = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
187-
cairo-lang-semantic = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
188-
cairo-lang-sierra = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
189-
cairo-lang-sierra-ap-change = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
190-
cairo-lang-sierra-gas = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
191-
cairo-lang-sierra-generator = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
192-
cairo-lang-sierra-to-casm = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
193-
cairo-lang-sierra-type-size = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
194-
cairo-lang-starknet = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
195-
cairo-lang-starknet-classes = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
196-
cairo-lang-syntax = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
197-
cairo-lang-syntax-codegen = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
198-
cairo-lang-test-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
199-
cairo-lang-test-runner = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
200-
cairo-lang-test-utils = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
201-
cairo-lang-utils = { git = "https://github.com/starkware-libs/cairo", rev = "cefadd5ea60d9f0790d71ae14c97d48aa93bd5bf" }
202-
cairo-language-server = { git = "https://github.com/software-mansion/cairols", rev = "4e70b9cddefb1b2dd8910471bbaa5d9e4368eb28" }
203-
cairo-lint-core = { git = "https://github.com/software-mansion/cairo-lint", rev = "3ac5b157a8ba333ad3c196044020d6bfd4a74ecf" }
204-
stwo_cairo_prover = { git = "https://github.com/starkware-libs/stwo-cairo", rev = "5ac2490aa48cc1fc6a97fcd3bbaa98600e79c4c3" }
171+
cairo-lang-casm = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
172+
cairo-lang-compiler = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
173+
cairo-lang-debug = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
174+
cairo-lang-defs = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
175+
cairo-lang-diagnostics = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
176+
cairo-lang-doc = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
177+
cairo-lang-eq-solver = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
178+
cairo-lang-executable = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
179+
cairo-lang-filesystem = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
180+
cairo-lang-formatter = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
181+
cairo-lang-lowering = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
182+
cairo-lang-parser = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
183+
cairo-lang-plugins = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
184+
cairo-lang-proc-macros = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
185+
cairo-lang-project = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
186+
cairo-lang-runnable-utils = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
187+
cairo-lang-runner = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
188+
cairo-lang-semantic = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
189+
cairo-lang-sierra = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
190+
cairo-lang-sierra-ap-change = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
191+
cairo-lang-sierra-gas = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
192+
cairo-lang-sierra-generator = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
193+
cairo-lang-sierra-to-casm = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
194+
cairo-lang-sierra-type-size = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
195+
cairo-lang-starknet = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
196+
cairo-lang-starknet-classes = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
197+
cairo-lang-syntax = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
198+
cairo-lang-syntax-codegen = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
199+
cairo-lang-test-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
200+
cairo-lang-test-runner = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
201+
cairo-lang-test-utils = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
202+
cairo-lang-utils = { git = "https://github.com/starkware-libs/cairo", rev = "01cdc6e5866fffc68f7d123ef54520b7cafafb9f" }
203+
cairo-language-server = { git = "https://github.com/software-mansion/cairols", rev = "ac5cfde0372fce38e24bb4266b4ada3ddd457483" }
204+
cairo-lint-core = { git = "https://github.com/software-mansion/cairo-lint", rev = "a418ae7680caec87c176b9ad391f012e23a6d9ca" }
205+
stwo_cairo_prover = { git = "https://github.com/starkware-libs/stwo-cairo", rev = "4f16a586138170f9c565a424fec75df2b8cee750" }
206+
stwo-cairo-adapter = { git = "https://github.com/starkware-libs/stwo-cairo", rev = "4f16a586138170f9c565a424fec75df2b8cee750" }
205207

206208
[profile.release]
207209
lto = true

extensions/scarb-execute/src/lib.rs

+12-10
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use crate::args::{BuildTargetSpecifier, OutputFormat};
2-
use crate::output::{ExecutionOutput, ExecutionResources, ExecutionStatus, ExecutionSummary};
3-
use anyhow::{bail, ensure, Context, Result};
2+
use crate::output::{ExecutionOutput, ExecutionResources, ExecutionSummary};
3+
use anyhow::{anyhow, bail, ensure, Context, Result};
44
use bincode::enc::write::Writer;
55
use cairo_lang_executable::executable::{EntryPointKind, Executable};
6+
use cairo_lang_runner::casm_run::format_for_panic;
67
use cairo_lang_runner::{build_hints_dict, Arg, CairoHintProcessor};
78
use cairo_vm::cairo_run::cairo_run_program;
89
use cairo_vm::cairo_run::CairoRunConfig;
@@ -134,10 +135,15 @@ pub fn execute(
134135
..Default::default()
135136
};
136137

137-
let mut runner = cairo_run_program(&program, &cairo_run_config, &mut hint_processor)
138-
.with_context(|| "Cairo program run failed")?;
138+
let mut runner =
139+
cairo_run_program(&program, &cairo_run_config, &mut hint_processor).map_err(|err| {
140+
if let Some(panic_data) = hint_processor.markers.last() {
141+
anyhow!(format_for_panic(panic_data.iter().copied()))
142+
} else {
143+
anyhow::Error::from(err).context("Cairo program run failed")
144+
}
145+
})?;
139146

140-
let execution_status = ExecutionStatus::try_new(&runner, &hint_processor);
141147
ui.print(ExecutionSummary {
142148
output: args
143149
.run
@@ -201,11 +207,7 @@ pub fn execute(
201207
fs::write(air_private_input_path, output_value)?;
202208
}
203209

204-
if let ExecutionStatus::Panic { reason } = execution_status? {
205-
Err(anyhow::anyhow!(reason))
206-
} else {
207-
Ok(execution_id)
208-
}
210+
Ok(execution_id)
209211
}
210212

211213
fn find_build_target<'a>(

extensions/scarb-execute/src/output.rs

-45
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use anyhow::Context;
22
use anyhow::Result;
3-
use cairo_lang_runner::casm_run::format_for_panic;
43
use cairo_lang_runner::CairoHintProcessor;
54
use cairo_vm::vm::runners::cairo_runner::CairoRunner;
65
use scarb_ui::Message;
@@ -141,47 +140,3 @@ where
141140
.collect::<Vec<String>>()
142141
.join(", ")
143142
}
144-
145-
#[derive(Serialize)]
146-
pub enum ExecutionStatus {
147-
Success,
148-
Panic { reason: String },
149-
}
150-
151-
impl ExecutionStatus {
152-
pub fn try_new(runner: &CairoRunner, hint_processor: &CairoHintProcessor) -> Result<Self> {
153-
Ok(
154-
if let [.., start_marker, end_marker] = &hint_processor.markers[..] {
155-
let size = (*end_marker - *start_marker).with_context(|| {
156-
format!("panic data markers mismatch: start={start_marker}, end={end_marker}")
157-
})?;
158-
let panic_data = runner
159-
.vm
160-
.get_integer_range(*start_marker, size)
161-
.with_context(|| "failed reading panic data")?;
162-
let reason = format_for_panic(panic_data.into_iter().map(|value| *value));
163-
Self::Panic { reason }
164-
} else {
165-
Self::Success
166-
},
167-
)
168-
}
169-
}
170-
171-
impl Message for ExecutionStatus {
172-
fn print_text(self)
173-
where
174-
Self: Sized,
175-
{
176-
if let ExecutionStatus::Panic { reason } = self {
177-
println!("{reason}");
178-
}
179-
}
180-
181-
fn structured<S: Serializer>(self, ser: S) -> std::result::Result<S::Ok, S::Error>
182-
where
183-
Self: Sized,
184-
{
185-
self.serialize(ser)
186-
}
187-
}

extensions/scarb-execute/tests/build.rs

-16
Original file line numberDiff line numberDiff line change
@@ -216,25 +216,9 @@ fn can_print_panic_reason() {
216216
[..]Compiling hello v0.1.0 ([..]Scarb.toml)
217217
[..]Finished `dev` profile target(s) in [..]
218218
[..]Executing hello
219-
Program output:
220-
1
221-
Resources:
222-
steps: [..]
223-
memory holes: [..]
224-
builtins: ([..])
225-
syscalls: ()
226-
Saving output to: target/execute/hello/execution1
227219
error: Panicked with "abcd".
228220
"#},
229221
);
230-
t.child("target/execute/hello/execution1/air_private_input.json")
231-
.assert_is_json::<serde_json::Value>();
232-
t.child("target/execute/hello/execution1/air_public_input.json")
233-
.assert_is_json::<serde_json::Value>();
234-
t.child("target/execute/hello/execution1/memory.bin")
235-
.assert(predicates::path::exists().and(is_file_empty().not()));
236-
t.child("target/execute/hello/execution1/trace.bin")
237-
.assert(predicates::path::exists().and(is_file_empty().not()));
238222
}
239223

240224
#[test]

extensions/scarb-prove/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ camino.workspace = true
2121
serde_json.workspace = true
2222
create-output-dir = { path = "../../utils/create-output-dir" }
2323
stwo_cairo_prover.workspace = true
24+
stwo-cairo-adapter.workspace = true
2425
scarb-execute = { path = "../scarb-execute" }
2526

2627
[dev-dependencies]

extensions/scarb-prove/src/main.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ use scarb_ui::{OutputFormat, Ui};
1111
use std::env;
1212
use std::fs;
1313
use std::process::ExitCode;
14-
use stwo_cairo_prover::adapter::vm_import::adapt_vm_output;
15-
use stwo_cairo_prover::cairo_air::{prove_cairo, ProverConfig};
14+
use stwo_cairo_adapter::vm_import::adapt_vm_output;
15+
use stwo_cairo_prover::cairo_air::{
16+
default_prod_prover_parameters, prove_cairo, ProverConfig, ProverParameters,
17+
};
1618
use stwo_cairo_prover::stwo_prover::core::vcs::blake2_merkle::Blake2sMerkleChannel;
1719

1820
/// Proves `scarb execute` output using Stwo prover.
@@ -120,7 +122,8 @@ fn main_inner(args: Args, ui: Ui) -> Result<()> {
120122
.display_components(args.prover.display_components)
121123
.build();
122124

123-
let proof = prove_cairo::<Blake2sMerkleChannel>(prover_input, config)
125+
let ProverParameters { pcs_config } = default_prod_prover_parameters();
126+
let proof = prove_cairo::<Blake2sMerkleChannel>(prover_input, config, pcs_config)
124127
.context("failed to generate proof")?;
125128

126129
ui.print(Status::new(

extensions/scarb-verify/src/main.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ use scarb_ui::{OutputFormat, Ui};
99
use std::env;
1010
use std::fs;
1111
use std::process::ExitCode;
12-
use stwo_cairo_prover::cairo_air::verify_cairo;
1312
use stwo_cairo_prover::cairo_air::CairoProof;
13+
use stwo_cairo_prover::cairo_air::{
14+
default_prod_prover_parameters, verify_cairo, ProverParameters,
15+
};
1416
use stwo_cairo_prover::stwo_prover::core::vcs::blake2_merkle::{
1517
Blake2sMerkleChannel, Blake2sMerkleHasher,
1618
};
@@ -68,8 +70,10 @@ fn main_inner(args: Args, ui: Ui) -> Result<()> {
6870
};
6971

7072
let proof = load_proof(&proof_path)?;
73+
let ProverParameters { pcs_config } = default_prod_prover_parameters();
7174

72-
verify_cairo::<Blake2sMerkleChannel>(proof).with_context(|| "failed to verify proof")?;
75+
verify_cairo::<Blake2sMerkleChannel>(proof, pcs_config)
76+
.with_context(|| "failed to verify proof")?;
7377

7478
ui.print(Status::new("Verified", "proof successfully"));
7579

scarb/tests/build.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1375,7 +1375,7 @@ fn add_statements_code_locations_debug_info() {
13751375
.get("statements_code_locations")
13761376
.expect("Expected statements_code_locations info to exist");
13771377
assert!(
1378-
serde_json::from_value::<HashMap<StatementIdx, Vec<(String, SourceCodeSpan)>>>(
1378+
serde_json::from_value::<HashMap<StatementIdx, Vec<(String, SourceCodeSpan, bool)>>>(
13791379
mappings.clone()
13801380
)
13811381
.is_ok(),
@@ -1392,7 +1392,7 @@ fn add_statements_code_locations_debug_info() {
13921392
.get("statements_code_locations")
13931393
.expect("Expected statements_code_locations info to exist");
13941394
assert!(
1395-
serde_json::from_value::<HashMap<StatementIdx, Vec<(String, SourceCodeSpan)>>>(
1395+
serde_json::from_value::<HashMap<StatementIdx, Vec<(String, SourceCodeSpan, bool)>>>(
13961396
mappings.clone()
13971397
)
13981398
.is_ok(),
@@ -1567,7 +1567,7 @@ fn add_statements_code_locations_debug_info_to_tests() {
15671567
.get("statements_code_locations")
15681568
.expect("Expected statements_code_locations info to exist");
15691569
assert!(
1570-
serde_json::from_value::<HashMap<StatementIdx, Vec<(String, SourceCodeSpan)>>>(
1570+
serde_json::from_value::<HashMap<StatementIdx, Vec<(String, SourceCodeSpan, bool)>>>(
15711571
mappings.clone()
15721572
)
15731573
.is_ok(),

0 commit comments

Comments
 (0)