previously we'd create (argument_count + let_count) locals, which doesn't make sense.
so now `let`s use their own counter for their own locals, and we only request as many empty locals as there are `let`s.
> #81 Compiling brush doesn't seem to finish correctly sometimes, which causes loss of data
> Sometimes it seems like the client state can get desynced (server render thread dies due to a panic?) and then the server starts dropping all requests for drawing the brush.
> These panics should never happen of course, but we need better logging first to determine the exact cause.
the arity of unary and binary ops is guaranteed by the fact they're, well, unary and binary ops.
right now there's no way to call them with less or more arguments, so we may as well.
introduce a new, more ergonomic syntax for haku
not all features are implemented just yet. still missing:
- custom tags (non-True/False)
- color literals
- lists
this fixes the case where
(def botsbuildbots (fn () (botsbuildbots))) (botsbuildbots)
would not run properly (return with a "set def index out of bounds" error)
also make exceptions store String instead of &'static str for better error reporting
closes#33