Initial
ci / test (push) Waiting to run

This commit is contained in:
2026-04-24 22:11:05 +00:00
commit 93add075cb
24 changed files with 1321 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
# graphis
inspects OCaml heap values and lowers the reachable object graph to
graphviz DOT
![graphis heap graph](docs/readme-graph.svg)
## api
the capture context is the alias analysis boundary. values captured through the same context share one address table so repeated physical values lower to the same node and cycles terminate through the visited set
```ocaml
Graphis.context (fun ctx ->
let shared = [| "left"; "right" |] in
let root = shared, shared in
Graphis.print_dot Format.std_formatter
[ "root", Graphis.capture ctx root ])
```
the same graph can be written as DOT for graphviz
```ocaml
Graphis.context (fun ctx ->
let shared = [| "left"; "right" |] in
let root = shared, shared in
Graphis.write_dot "heap.dot"
[ "root", Graphis.capture ctx root ])
```