monte-language / typhon

A virtual machine for Monte.
Other
67 stars 10 forks source link

Next MAST Version: No More Meta #175

Open MostAwesomeDude opened 7 years ago

MostAwesomeDude commented 7 years ago

We are removing the meta.context() and meta.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:

That 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.

dckc commented 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.

erights commented 7 years ago

What do these expand to? AOT is "Ahead of time"? Why is abstract interpretation needed?

dckc commented 7 years ago

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.

MostAwesomeDude commented 6 years ago

meta.context() may have to remain in Kernel for AST-revealing objects à la OpenSource. #192 is tracking that work.