How does Rebindable suppress the compiler's optimizations for immutable?

SimonN eiderdaus at
Sat Feb 16 06:14:48 UTC 2019

Thanks for the detailed answers!

Yes, I accept that immutable guarantees should be implemented 
only during @safe that doesn't call into @trusted.

On Friday, 15 February 2019 at 18:59:36 UTC, H. S. Teoh wrote:
> At the very least, such [union] code should be automatically 
> @system.


> Honestly, I'm pretty sure that Rebindable technically
> violates the type system to do what it does.

Hmm, I remember we discussed this, and I feel the same now about 
Rebindable. Either the spec gets extra rules for @trusted or 
unions, or Rebindable generates latent bugs.

> Think of immutable as hint for the programmer, not for the 
> compiler.

Right, if the compilers don't use it yet, I'm fine with that 
interpretation. It's merely strange that we have this very 
restrictive const/immutable that is advertized to help 
optimization, but then the compiler won't take advantage. Let's 
see how this develops in the long term, whether the spec gets 
clearer on the allowed optimization.

More information about the Digitalmars-d-learn mailing list