Vision for the D language - stabilizing complexity?
Ola Fosheim Grøstad via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 13 03:02:58 PDT 2016
On Wednesday, 13 July 2016 at 09:19:29 UTC, John Colvin wrote:
> Something like "it might be in ROM" is an implementation
> detail. It's the optimiser part that forces a formal decision
> about what is undefined behaviour or not.
«Undefined» simply means that such code is not part of the
specified language, as in, it is no longer the language covered.
The optimizer is an implementation detail, the optimizer is not
allowed to change the semantics of the language.
If casting away immutable is claimed to be undefined behaviour it
simply means that code that does this is not in the language and
the compiler could refuse to compile such code if it was capable
of detecting it. Or it _could_ specify it to have a specific type
of semantics, but that would be a new language.
Andrei seems to argue that casting away immutable is not
undefined behaviour in general.
> Implementation defined behaviour is in the realm of the
> "systems programming, be careful you know what you're doing".
> Undefined behaviour is a different beast.
When something is «implementation specific» it means that the
concrete compiler/hardware _must_ specify it. For instance, the
max available memory is usually implementation specific.
More information about the Digitalmars-d
mailing list