Source-owned local scheduler/run-loop construction from the live World. The local scheduling policy, readiness service, deadlines, clock, active-stack callbacks and MIR step are assembled here; callers do not supply complete RunLoopHooks or LocalSchedulerHooks records. Only process interrupt observation and abnormal host cleanup remain explicit host operations.
Instances For
Equations
- Miri.Input.EvalRunConstruction.User Os R P H D O Aff B Poll Instant System Native Profiler = Miri.Input.EvalCallbackMachine.ThreadUser Os R P H D O Aff B Poll Instant System Native Profiler
Instances For
Equations
- Miri.Input.EvalRunConstruction.State Os R P H D O Aff B Poll Instant System Native Profiler = Miri.Input.EvalCallbackMachine.State Os R P H D O Aff B Poll Instant System Native Profiler
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
CTRL_C_RECEIVED is process-global in Rust, and abnormal profiler cleanup
is an environment operation. Keep only these narrow residuals explicit.
- interrupted : S → Bool
- handleAbnormalTermination : S → S
Instances For
Build the exact local scheduler branch. communicate is read from the
same HostRuntime configuration used at startup. The routed IO hook, deadline
registry, ThreadManager and ThreadStacks are all the live World instances.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a complete source loop. Main/TLS stack-empty callbacks, thread termination and MIR stepping use their established source machines; ThreadStacks.bindRunLoop adds source stack-switch synchronization. A finite choice tape is still a caller-side execution bound and must remain pending when exhausted; this hook record itself makes no completion claim.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source Core construction is fallible because compiler and host facts are
queried while building each choice-specific configuration. Preserve those
failures at the step boundary; do not turn them into an arbitrary default
ExecutionMachine.Config.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source startup can run main before constructing the optional
callback protocol. This scheduler preserves the source's cheap branches: an
enabled active thread returns before host polling, empty delayed/readiness and
blocking registries take their actual empty branches, and no-deadline states
do not read a clock. If execution reaches a branch that needs an unconnected
physical poll, delayed readiness update, timed deadline, or host-source query,
it returns Unsupported. It never treats a missing callback dictionary as an
empty successful result.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- outerChoicesExhausted (iterations : Nat) : PendingCause
- iterationFuelExhausted (iterations : Nat) : PendingCause
- choiceTapeExhausted (iterations : Nat) : PendingCause
- sourceResourceExhausted (iterations : Nat) (error : Interpreter.StepError) : PendingCause
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
A bounded process driver returns a status only for a source terminal outcome. Exhausting either external bound is explicitly pending/unknown.
- exited {S : Type} (state : S) (code : Int) (leakCheck : Bool) : RunResult S
- undefinedBehavior {S : Type} (state : S) (error : Interpreter.StepError) : RunResult S
- unsupported {S : Type} (state : S) (error : Interpreter.StepError) : RunResult S
- failed {S : Type} (state : S) (error : Interpreter.StepError) : RunResult S
- pending {S : Type} (state : S) (cause : PendingCause) : RunResult S
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Profiling is an identity on the state, including failed prefixes. Log the first 64 iterations, then every 64th; the count is outer scheduler iterations, not MIR instructions. Labels are evaluated only with profiling enabled.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Time complete scheduler iterations, retaining their starting frame identity. Only profiling emits spans; the local threshold defaults to 10ms to avoid printing every fast iteration. A span includes scheduling and callbacks, not just the MIR instruction at its starting location.
Equations
- One or more equations did not get rendered due to their size.
Instances For
This reuses RunLoop.iteration directly. No stop predicate can turn a
prefix boundary into process success, and no callback is permitted to claim
completion. A source TerminationInfo::Exit is the only successful process
result represented here.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Original API, with observation disabled.
Equations
- Miri.Input.EvalRunConstruction.runUntilTerminal loop iterationFuel outerChoices initial = Miri.Input.EvalRunConstruction.runUntilTerminalProfiled ∅ loop iterationFuel outerChoices initial
Instances For
Every choice, state mutation and terminal/error/pending result is preserved for arbitrary profiling options, hooks, bounds and initial states.