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.
chalk are steps in this direction:
nllprototype defines the borrow checking rules in a manner that very closely mirrors the specificaiton.
chalkproject 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
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.)