Universe

Stack Pointer is a library for visualizing the execution of (imperative) computer programs, particularly in terms of effects on the call stack: stack frames and local variables therein.

Stack Pointer lets you represent an example program (e.g. a C or Java program) using typst code with minimal hassle, and get the execution state of that program at different points in time. For example, the following C program

int main() {
  int x = foo();
  return 0;
}

int foo() {
  return 0;
}

would be represented by the following Typst code (see the manual for a detailled explanation):

#let steps = execute({
  let foo() = func("foo", 6, l => {
    l(0)
    l(1); retval(0)
  })
  let main() = func("main", 1, l => {
    l(0)
    l(1)
    let (x, ..rest) = foo(); rest
    l(1, push("x", x))
    l(2)
  })
  main(); l(none)
})

The steps variable now contains an array, where each element corresponds to one of the mentioned lines of code.

Take a look at this complete example of using Stack Pointer together with Polylux.