I wonder if it might be a good idea to allow zvals (if you don’t know what it is, you might want to read something about it before continuing) carry custom information – e.g. in a form of a pointer. This may allow various custom modules to tag zvals – e.g. security module to have zvals coming from users separated from zvals coming from engine. Or debugger could record where particular variable was created/modified.
Of course, that would need a protocol for coordinating this info between modules – so that two modules could store zval info without stepping on each other’s toes.