и о GC. я тут подумал, что можно обойтись без сканирования стека, запилив вместо этого полностью precise GC. на входе в процедуру с указателями создавать скрытый массивчик с указателями на все локалы, которые временные корни, и регистрировать этот массивчик. при выходе — дерегистрировать. тащемта, оверхэд — несколько mov да два быстрых call. ерунда. благо, у нас нет никаких дурацких исключений и `longjmp()`. а кто попробует — тот сам виноват.

и ещё подумал, что имеет смысл добавить тип STRING — строка типа дельфийской: динамического размера, refcounted, cow. и удобно, и технику rc/cow с Nanojit обкатать можно.

тем временем сделал short-circuit bools и функции (то есть, процедуры, которые что-то возвращают).