D 2015/2016 Vision?

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Tue Oct 6 01:34:35 PDT 2015


On Tuesday, 6 October 2015 at 08:27:02 UTC, Ola Fosheim Grøstad 
wrote:
> On Tuesday, 6 October 2015 at 06:45:47 UTC, Jonathan M Davis 
> wrote:
>> On Monday, 5 October 2015 at 23:08:37 UTC, bitwise wrote:
>>> Well, again that has it's pros and cons. This is why I just 
>>> want a normal language solution like DIP74.
>>
>> They're not the same thing at all. scoped is supposed to put 
>> the class on the stack, not the heap. And it's not 
>> ref-counted. It's so that you can create a class object in 
>> place, use it, and throw it away without doing any heap 
>> allocation. Essentially, it allows you to use a class as if it 
>> were a non-copyable struct. Even if we end up with 
>> ref-counting supported in the language, it doesn't obviate the 
>> need for scoped classes. They're for different use cases.
>
> Why not leave stack allocation of objects to the compiler, like 
> inlining? Then add a "@stack" constraint that will make the 
> compilation fail if the compiler is unable to put it on the 
> stack?
>
> You need the compiler to prove that that the life time of the 
> object is shorter than the stack frame in order to have memory 
> safety anyway.

scoped is not designed with the idea that it's memory safe. 
scoped is very much an @system operation. And scoped is intended 
to replace scope classes in the language, so I don't think that 
any language support is going to be added for this. It's 
something that someone who knows what they're doing and needs 
that extra bit of efficiency can do, not something that's really 
intended to be in your average D program. In most cases, anything 
that's supposed to live on the stack should have been a struct 
anyway. It's just an issue when you want to use something on the 
stack in a particular case whereas it normally would be on the 
heap. And given D's lack of flow analysis and Walter's insistence 
on not adding it, I rather doubt that he's going to be big on the 
idea of having the compiler decide that it's safe to allocate a 
class object on the stack rather than the heap. But I don't 
remember him ever saying anything on that topic specifically.

- Jonathan M Davis


More information about the Digitalmars-d mailing list