| 47 | EmbeddedClient, EmbeddedClientBuilder, EmbeddedExecuteOnlyClient, |
| 48 | EmbeddedOpts, GuestProgram, ProverClient, VerboseMode, |
| 49 | VerifyConstraintsExtension, ZiskStdin, |
| 50 | }; |
| 51 | |
| 52 | #[derive(Parser, Debug)] |
| 53 | #[command(author, version, about, long_about = None)] |
| 54 | struct Args { |
| 55 | /// Run shards in the VM only — no proof or proving key required. |
| 56 | #[arg(long, conflicts_with = "verify_constraints")] |
| 57 | execute: bool, |
| 58 | |
| 59 | /// Run the constraint checker without generating a proof (single shard |
| 60 | /// only). |
| 61 | #[arg(long)] |
| 62 | verify_constraints: bool, |
| 63 | |
| 64 | /// Enable GPU-accelerated proving. |
| 65 | #[arg(long)] |
| 66 | gpu: bool, |
| 67 | |
| 68 | /// Use the Emulator executor instead of the default Assembly executor. |
| 69 | /// Assembly is the default: it is markedly faster at trace generation |
| 70 | /// (measured ~4-6x on EXECUTE, ~11x on COMPUTE_MINIMAL_TRACE) and is the |
| 71 | /// prerequisite for the hints stream. Pass `--emulator` to opt back into |
| 72 | /// the Emulator (e.g. to debug, or on a box without the memlock rlimit the |
| 73 | /// ASM executor's MAP_LOCKED mmaps require). See the multi-program |
| 74 | /// setup-ordering note on `build_client`. |
| 75 | #[arg(long)] |
| 76 | emulator: bool, |
| 77 | |
| 78 | /// Path to a `.ixe` file. Repeatable: pass `--ixe` multiple times to |
| 79 | /// prove a batch of inputs in one warm process and aggregate them all |
| 80 | /// into a single proof. If omitted entirely, one empty `IxonEnv` is |
| 81 | /// used. |
| 82 | #[arg(long)] |
| 83 | ixe: Vec<PathBuf>, |
| 84 | |
| 85 | /// Fixed-count partitioning: maximum work items per shard. `0` |
| 86 | /// (default) puts the whole env in one shard. Mutually exclusive |
| 87 | /// with `--shard-bytes`. Applied independently to each input. "Consts" |
| 88 | /// here is the work-item unit returned by `build_anon_work` — one per |
| 89 | /// Standalone constant or per Muts block; a single Muts block work |
| 90 | /// item may cover many target constants in the kernel-check sense. |
| 91 | #[arg(long, default_value_t = 0, conflicts_with = "shard_bytes")] |
| 92 | shard_consts: u32, |
| 93 | |
| 94 | /// Cost-based partitioning: pack contiguous work items into shards |
| 95 | /// until cumulative serialized-AST bytes exceed this budget, then |
| 96 | /// open a new shard. Bytes are summed via |
| 97 | /// `LazyConstant::raw_bytes().len()` over each item's `targets()` — |
| 98 | /// for a Standalone item that's its own body; for a Muts block it's |
| 99 | /// the sum across all member + ctor projections. Strong proxy for |
| 100 | /// kernel work, computable without parsing or executing. Applied |
| 101 | /// independently to each input. |
| 102 | /// |
| 103 | /// Doubles as the hard per-item ceiling: any single work item whose |
| 104 | /// serialized cost exceeds this budget aborts at planning time, with |
| 105 | /// an error naming the offending item. A would-be-oversized item gets |
| 106 | /// caught before any prove runs (otherwise it'd silently produce an |
nothing calls this directly
no outgoing calls
no test coverage detected