added a debug mode to generated binaries that switches to a live view of all updated tables in an iteration on Ctrl+C press, primarily so i can see when a process isn't exiting which updates are likely responsible.

but what i would _really_ like is a graph visualization with active rules and tables highlighted.

maybe the first step is to just generate a json trace file that can be fed into https://ui.perfetto.dev/ for instance. yes, as a compiler feature.

#devlog #nudl

Perfetto UI

and i have my trace. it visualizes iteration boundary ("main"), rules executed (in green) and instant events for when changed buffers were reset, so i can track which data was changed.

#devlog #nudl

slightly better. table-changed events are now placed where the buffer's topological position is, so we know that whatever's left to the buffer has likely changed it.

tbh i'd also like to embed a high level step debugger. stepping through with gdb has too many low level details i'm not interested in.

#devlog #nudl

thanks to the rudimentary step debugger, i figured out why recent semantic changes messed up a test: an event to clear a vertex buffer is set, but only executed _after_ the vertex buffer has already been filled. this was a user error :)

i have yet to acclimate to the fact that all cases need to be time-bracketed: i.e. "trigger this *after* x, but *before* y"

next i'm going to add dot output for graphviz.

#devlog #nudl

a convoluted test program (you might now realize why it's named "nudl") and the generated graph, as the scheduler sees it.

time to add some styling...

#devlog #nudl

same program, different layout.

it does help that a program iteration is acyclic, so all arrows point down, except for cue operations which feed the next iteration.

#devlog #nudl

flow graph for test_sdl3.n and test_hylo.n

reactive edges are now highlighted.

#devlog #nudl

@lritter feel free to ignore, I just only have one hand for a few weeks so I'm doing one off creative things that pique my interest

tried to make the nudl trace more noodley

@the_dot_matrix it's almost correct; as far as i can tell only clearcolor should not be connected to the gpu/window district.

lack of visible edge direction could be confusing if i didn't already know which way what went.

interesting idea to "bus" shared dependencies this way.

what i like the most is that it makes main execution order very obvious

@the_dot_matrix forgot to say may you soon be able to produce the sound of two hands clapping again!