Steven Schveighoffer wrote:
On Fri, 19 Feb 2010 10:22:15 -0500, grauzone <[email protected]> wrote:
SafeD will take care of it. As the compiler has to support SafeD
anyway, the same mechanisms can be used to create warnings or even
errors in normal D code.
I'm not sure where Andrei will draw the line for SafeD. SafeD still has
to be UsefulD ;)
Good point, but safe means safe. It's can't be a hint. Perhaps the
biggest crisis between Walter and me consumed when he mentioned he
wanted to make "safe" just a hint and still disable bounds checking in
release mode, safe or not. He was kind enough to back off, which was
very nice of him - I see no way in which I could accept a compromise on
that particular matter. (By the way, much of the very fruitful
collaboration between us has been caused by our ability to work out good
compromises even though we have sometimes different viewpoints.)
Statically-allocated arrays are not a difficult safety issue. We have
two solutions - (a) have the compiler just disable conversions for
stack-allocated T[N] to T[] in safe mode, (b) have the compiler perform
its own flow analysis and transparently switch to dynamic allocation
when needed, just like in the case of closures.
But I think slicing a static array makes the compiler lose all knowledge
that it is a scoped entity.
I thought the same, but then I figured this works:
int[10] a;
int[5] b = a[0 .. 5];
Well it's off-topic, I know.
I agree that the current situation needs addressing.
Andrei