I’m generally ok with Ref / MutableRef, but the naming does feel somewhat like an echo from the past. For those of us familiar with C-family languages, these terms are easy to adopt, but I’m not sure they communicate the intended semantics as clearly to a broader Swift audience.
If I had a preference, I would lean toward something like Borrow / Mutable (MutableBorrow). That terminology feels more aligned with the underlying ownership model being introduced, and it emphasizes the temporary, non-owning nature of these values. While I understand there has been an effort to avoid the term “borrow,” it still seems like the most semantically direct option, especially for users trying to build an accurate mental model.
By contrast, Ref carries a fair amount of historical and conceptual baggage. In many contexts, “reference” implies shared identity, indirection or reference semantics tied to heap allocation. Even if those associations are only partially accurate here, they may still lead to confusion, particularly when the implementation may optimize storage (e.g. copying small values). In that sense the name risks overemphasizing representation rather than semantics.
I do see the argument that aligning with existing “reference type” terminology could be helpful. However, this connection might also blur important distinctions, especially since these constructs are not simply “reference types” in the traditional Swift sense.
Another concern is that Ref is a very general term, and it might be more valuable to reserve it for more explicitly reference-like abstractions such as RefBox (which I would personally prefer to see named something like UniqueHeapRef, to make its ownership and allocation semantics more explicit).
Finally, while the MutableXYZ pattern is well established, MutableRef reads a bit awkwardly to me. It describes mutability of the reference itself rather than the referent, which could introduce ambiguity. Alternatives that express the borrowing relationship more directly might avoid that confusion.
Overall, I think Ref / MutableRef is workable, but I’m not fully convinced it’s the most expressive or least confusing option available.