By the way, the "detectable difference" between functions, especially
if you mean detectable at runtime without debug tricks and
string.dump() (i.e. different extensionally as some would put it), is
quite vague and surprisingly hard to decide upon in practice (trust
me, I know). Any chance of this being elaborated further?
Possible alternate wording (may or may not be what you meant; note
that string.dump() equality never implied extensional equality anyway
so this isn't a breaking change really):
A function is always equal to itself. Functions may also compare equal
to other functions (depending on internal caching details). If they
do, their observable behaviour, but not necessarily the internal
represenation as observed via e.g. string.dump(), will be equivalent.