Hello Team,
I’d like to propose moving the nll
prototype and chalk
into rust-lang-nursery. My ultimate vision is that I want to have simplified “reference version” of the Rust compiler, free of most of the complexities of the real thing. nll
and chalk
are steps in this direction:
- The
nll
prototype defines the borrow checking rules in a manner that very closely mirrors the specificaiton. - the
chalk
project defines lowering rules from traits/impls into pure logic and a solving algorithm for those.
In my ideal world, changes to region inference, the borrow checker, or trait solver would all be prototyped first in the appropriate tool. Before that can happen, more work is needed to clean up and complete the code (though chalk
is much farther along than nll
in this respect.)
If were to take the following steps, then I think these two tools would form a reaosnable stab at a featherweight Rust definition:
- Expand NLL to take most of MIR as input
- Implement the MIR type-checker (the rules for which are much, much simpler than the full Rust type checker) in NLL
- Connect to Chalk for doing trait solving
- Chalk does not solve regon constraints, so NLL would play that role
Thoughts?
One question: what to name them? I’d like to keep the name Chalk, as I’m fond of it =), but it might be worth renaming nll
to something like mir-typeck
, though I’d prefer a more fun name.
(As part of this, all members of compiler and lang would be made administrators of the two projects, I suppose.)