On Friday, 2 September 2016 at 08:14:33 UTC, Rory McGuire wrote:
Can we rather just make a special tagged union that is
scanned... rather avoid trying to make something that should be
minimal more and more complex? The compiler already treats some
parts of phobos as "special" as far as I know.
I had asked about unions in @safe code in other threads, but I
don't recall anyone responding.
@safe functions cannot access unions with pointers or references
overlapping with other types. In effect, there is already a
special tagged union that can be scanned. I would think that the
garbage collector already identifies these types of unions and
doesn't just treat every union with the same conservative
approach, but I have really no idea how it works and don't recall
hearing back about my questions.
Anyway, with @safe unions, my thinking is that it would mean that
the garbage collector can be made precise in @safe code in a way
that it can't in @system code (assuming unions with pointers
aren't snuck in through @trusted).