It was absolutely a mistake to push this through without an RFC, and I apologize for signing off on it. It wound up causing some painful fallout, and it’s clear that many have strong opinions about the order here that weren’t taken into account. Of course, this kind of thing won’t happen in the future, since we won’t be able to make changes to stable APIs.
That said, I’m in much the same boat as @nikomatsakis: it’s not clear to me whether it’s worth another round of breakage at this point – something we want to reserve for emergencies only. But I definitely do see the argument that “muscle memory” from memcpy could easily get you into trouble here.
One possibility to avoid outright breakage would be to deprecate the functions, and introduce differently-named replacements. (copy used to be called copy_memory until a short while ago, anyway.) That would give people more time and help in making an adjustment, and we can do a deprecation cleanup before 1.0 ships.
Note, however, that if we do revert the change to ptr operations, that would reintroduce inconsistency with IO operations, and changing all of the relevant functions, even through deprecation, would be pretty massive. (That’s why the ptr functions were changed in the first place). We could, of course, decide internal consistency across ptr and IO isn’t so important.