I definitely think this is an improvement. As I mentioned in the other thread, I think that once you're in a mode of thinking about ownership, you want to be thinking about ownership everywhere, and you want the compiler to help enforce those invariants. Using the parameter annotations as a way to infer "ownership mode" is an elegant solution to the "how do I opt in" issue.
For the inout
issue: do we have a sense of how source breaking it would be? I'd guess that if you combined it with ImplicitlyCopyable
types (e.g. Int
, Float
etc. which never need a copy
annotation) you might end up with fairly narrow breakage, but that's only a guess (albeit one based on skimming through my own code).