Vision for the D language - stabilizing complexity?
sarn via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 13 03:25:55 PDT 2016
On Wednesday, 13 July 2016 at 10:02:58 UTC, Ola Fosheim Grøstad
wrote:
> «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.
You're confusing "undefined" with "implementation defined".
Implementation-defined stuff is something that's not specified,
but can be presumed to do *something*. Undefined stuff is
something that's officially considered to not even make sense, so
a compiler can assume it never happens (even though a programmer
can make the mistake of letting it happen). This is sometimes
controversial, but does let optimisers do some extra tricks with
sane code.
More information about the Digitalmars-d
mailing list