INSIDE THE EXECUTION

Every object. Every effect.

Explore a bounded C subset, one Rust engine operation at a time.

Build & limitations
Prototype model Independent C subset · 32-bit int · left-to-right evaluation

This Rust evaluator is independent of bcc’s full C frontend. It supports local integers, pointers, fixed arrays, named calls, and basic control flow. It has no preprocessing, globals, library I/O, or allocation. Nested side effects are rejected. Stores are atomic; deferred effects and full C99 sequencing checks are not implemented. This prototype starts automatic lifetimes at declarations; C99 fixed objects instead begin lifetime at block entry. A completed run does not establish that a program is free of undefined behavior.

Not loadedSTEP —
01

Source

objects.c
No current evaluation
int bump(int *value) {
int before = *value;
*value = before + 1;
return *value;
}
int main(void) {
int total = 0;
int values[3] = {2, 4, 6};
int *cursor = &values[0];
for (int i = 0; i < 3; i = i + 1) {
int next = bump(cursor);
total = total + next;
cursor = cursor + 1;
}
return total;
}
02

Call stack

0 frames
  1. Load a program to inspect its call stack.
03

Objects

0 objects
Alive Lifetime ended→ pointer target

Object identity, storage, lifetime, and values will appear here.

04

Evaluation & sequencing

Awaiting engine

LAST COMPLETED OPERATION

Load the Rust engine to begin stepping.

Load a program to inspect the prototype’s sequencing model.

Pending effects 0

  • No execution state loaded.