Hello! I'm still working on this.
(I took a holiday break, then unrelatedly got sick, then was extremely busy for a while.)
I pushed another update (v5, diff) that (hopefully) clarifies when monomorphisation happens and when it does not.
Changes:
- Added section "(Pending changes to this draft)", since I haven't gotten around to inserting explicit binding yet but want to clarify that it's coming to the draft.
- Revised "
TypeIdof generic type parameters' opaque types" as tuples are implementation-invariant. - Replaced section "Contextual monomorphisation of generic implementations and generic functions" with sections "Binding choice by implementations' bounds" and "Binding and generics".
- Added sections "Marking a generic as implementation-invariant is a breaking change" and "Efficient compilation".
- Renamed future possibilities section "Scoped bounds as contextual alternative to sealed traits" to "Sealed trait bounds".
- Added future possibilities section "Reusable limited-access APIs".
- a range of smaller adjustments to wording and formatting
I will likely still need a few weeks to work explicit binding into the proposal properly though, since I still have a stack of pending organisational work sitting next to me here. That said, this version of the draft should be consistent (as far as I can tell, which is to say it's ready to have holes poked into it again).