the other tinylang is concatenative — you write the stack operations directly and it interprets them. this one is different: you write something that looks like a normal little language (variables, if, while, arithmetic), and it gets compiled to a flat bytecode that a stack machine runs. the disassembly panel shows the actual instructions. the whole thing — lexer, parser, compiler, vm — is a few hundred lines.
source
output
bytecode
the language
numbers, strings, variables, + - * / %, comparisons == != < <= > >=,
if / else, while, print. statements end at a newline or ;.
# starts a comment. uninitialized variables read as 0. dividing by zero gives 0 (documented, not a crash).