New Issue: Should ==/!= on records be defined as module code or by the compiler?

28708, "bradcray", "Should ==/!= on records be defined as module code or by the compiler?", "2026-04-21T18:40:51Z"

In a discussion today about #28699 and #14139, it was pointed out that there may be differences in language semantics between whether a language-provided / compiler-provided == operator was defined directly withini the compiler (as it is today for records) or as module code (as it is for unions in #28699), specifically around things like visibility, POI, forwarding, etc.

That led to a question about whether the preferable implementation for record == would be to define it within the compiler, specific to each record type and within the module that introduces that record if the user hasn't provided their own definition. Or to define it as module code, assuming the language and reflection module are strong enough to support that (or strengthening them until they can).

This issue is intended to ask which approach is preferable, putting questions of breaking changes aside for the moment.