Unboxed closures

A relatively complete description of by reference closures that aims to encompass entirety of current thinking, except for bound lifetimes.

cc @pcwalton
@eddyb I think @thestinger is right. The closures-only-have-one-method-lets-inline-it optimization only always works with byref closures. Byval closures will need to clean up any heap memory they own. A byval closure that captured only stack memory and references could get away with it. You have to give up on this being a universal optimization if you allow byval closures.