Expand description
Implements an nfa-like regex engine for over chars.
The engine keeps all threads in lockstep (all threads are at the same input index),
and the NFA’s epsilon transitions are flattened to a single epsilon transition between symbols
(including handling anchors and capture tags).
Currently we flatten all epsilon transitions for the VM so that epsilon transitions are at most a single step between symbols.
I’ll have to review to ensure we avoid this causing large binary size overhead,
but it should be worst-case O(n^2) in the number of states, and far fewer on average.