Open MostAwesomeDude opened 7 years ago
you have my buy-in on treating meta.context()
and meta.getState()
as syntactic sugar, though it's not at all obvious to me how to do so.
What do these expand to? AOT is "Ahead of time"? Why is abstract interpretation needed?
Hi Mark, we chatted about this a bit...
simpson> That's a fair question. I don't have that context paged in right now.
dash> DanC: I think it's pretty simple... from previous discussions, MarkM has indicated that expanding meta.getState()
to produce a mapping of names to bindings in the current object's frame is sufficient
dash> since this can be determined statically doing it in expansion is sensible.
meta.context()
really just needs to have enough info to make 'interface' work, like FQN
simpson> It has to be completely figured out, but it's largely figured out already.
meta.context()
may have to remain in Kernel for AST-revealing objects à la OpenSource
. #192 is tracking that work.
We are removing the
meta.context()
andmeta.getState()
nodes from MAST, as we intend to add them to canonical expansion instead.Since we are only removing nodes, we technically do not need a version bump immediately, but it should be rolled into the next version bump for MAST since it eases the implementation burden for everybody.
Things to do:
Rewrite t.nano.scopes to use abstract interpretation instead of scope treesThat compiler one is a doozy, isn't it? Basically, we can use abstract interpretation to do full AOT bindings. I'd like to remove the meta node expansion from t.nano.scopes first though!Any optimizing compiler passes should be done in Monte at this point. The rest of the plan is still there though.