@@ -8,7 +8,10 @@ use crate::{
88 errors:: {
99 cairo_run_errors:: CairoRunError , runner_errors:: RunnerError , vm_exception:: VmException ,
1010 } ,
11- runners:: { cairo_pie:: CairoPie , cairo_runner:: CairoRunner } ,
11+ runners:: {
12+ cairo_pie:: CairoPie ,
13+ cairo_runner:: { CairoRunner , CairoRunnerBuilder , RunnerMode } ,
14+ } ,
1215 security:: verify_secure_runner,
1316 } ,
1417} ;
@@ -77,18 +80,31 @@ pub fn cairo_run_program_with_initial_scope(
7780 . allow_missing_builtins
7881 . unwrap_or ( cairo_run_config. proof_mode ) ;
7982
80- let mut cairo_runner = CairoRunner :: new (
83+ let mut runner_builder = CairoRunnerBuilder :: new (
8184 program,
8285 cairo_run_config. layout ,
8386 cairo_run_config. dynamic_layout_params . clone ( ) ,
84- cairo_run_config. proof_mode ,
85- cairo_run_config. trace_enabled ,
86- cairo_run_config. disable_trace_padding ,
87+ if cairo_run_config. proof_mode {
88+ RunnerMode :: ProofModeCanonical
89+ } else {
90+ RunnerMode :: ExecutionMode
91+ } ,
8792 ) ?;
93+ runner_builder. enable_trace ( cairo_run_config. trace_enabled ) ;
94+ runner_builder. disable_trace_padding ( cairo_run_config. disable_trace_padding ) ;
95+ runner_builder. allow_missing_builtins ( allow_missing_builtins) ;
96+ runner_builder. initialize_builtin_runners_for_layout ( ) ?;
97+ runner_builder. initialize_base_segments ( ) ;
98+ runner_builder. load_program ( ) ?;
99+ runner_builder. initialize_builtin_segments ( ) ;
100+ runner_builder. initialize_builtin_zero_segments ( ) ;
101+ let end = runner_builder. initialize_main_entrypoint ( ) ?;
102+ runner_builder. initialize_validation_rules ( ) ?;
103+
104+ let mut cairo_runner = runner_builder. build ( ) ?;
88105
89106 cairo_runner. exec_scopes = exec_scopes;
90107
91- let end = cairo_runner. initialize ( allow_missing_builtins) ?;
92108 // check step calculation
93109
94110 cairo_runner
0 commit comments