* VM Signals are used by running functions to dictate whether a function
should return, or if it should call another function. These signals
can be injected at any time allowing for user functions to inject
themselves at runtime.
* obj::Method is gone since it's not being used yet.
* Obj impls must implement as_any(&self) -> &dyn Any now. This allows
for UserFun and NativeFun to be explicitly cast (among other things,
in the future).
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
* Variables were previously named "Local"s because they described a
local variable - however, this is kind of a misnomer because it
handles globals as well. This has been changed pretty much everywhere
when appropriate (hopefully).
* Renamed obj/names.rs to obj/reserved.rs, freeing up the "names" module
for the new Names handle
* Renamed obj/locals.rs to obj/names.rs, see above
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
* Basic are a more linear way of representing code. Thunks beget basic
blocks, which beget vectors of instructions.
* Basic blocks are also being flattened into a vector of instructions
(hopefully, no tests done yet)
* OH yeah locals can be collected too (but currently are not being
collected in the compiler, that should come soon)
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
Some instructions are currently implemented. Others are not. This is
mostly just a checkpoint so I can implement lexical name definitions.
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
While I like the idea of having a runtime completely decoupled from the
syntax and compiler, I don't think this is that big of a project for
that to be necessary or even useful yet.
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>