Slicing static arrays should be @system

Jonathan M Davis jmdavisProg at gmx.com
Sun Nov 4 06:15:11 PST 2012


On Sunday, November 04, 2012 08:59:10 Andrei Alexandrescu wrote:
> Slicing of static arrays is unsafe only if they're stack-allocated and
> the slice is subsequently escaped.

If we want to make it so that slicing a static array is @safe when the 
compiler can determine for sure that the slice isn't escaping, then fine, but 
in general, it can't do that. And taking the address of a local variable is 
already considered @system regardless of what you do with it. Taking the slice 
of a static array is really no different from taking the address of a local 
variable. It's just that it has a length along with the address. So, it would 
be completely in line with how taking the address of a local variable is 
treated to make taking the slice of a static array which is a local variable 
@system.

Regardless, the point is that there is a major hole at this point with how 
slicing static arrays is always considered @safe. Nothing which the compiler 
can't guarantee is @safe should be considered @safe. So, even if we treat 
slicing static arrays as @safe in some cases, they need to be cases where the 
compiler is able to prove that it's safe.

- Jonathan M Davis


More information about the Digitalmars-d mailing list