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