Moving nll and chalk to rust-lang-nursery


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


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


Yes please!


Sounds like a great idea to me!


The term nll is familiar to anyone who followed that proposal, so that’s imho the best name possible.