Thoughts from newcommer

Jerry via Digitalmars-d digitalmars-d at puremagic.com
Mon Apr 17 14:20:42 PDT 2017


On Monday, 17 April 2017 at 16:06:20 UTC, Stanislav Blinov wrote:
> On Monday, 17 April 2017 at 15:24:26 UTC, Jerry wrote:
>
>> It has everything to do with @nogc, if it isn't @nogc then it 
>> is using the garbage collector and even if it is using 
>> Destroy() it is still invoking the GC and something is still 
>> going to have to be freed by the GC, even if that class is 
>> empty. You can't say it is RAII if it is using the GC, that's 
>> just nonsense. So it is not just for convenience.
>
> On the contrary. All RAII does is establish a relation between 
> resource lifetime and another resource's (e.g. object's) 
> lifetime. It doesn't necessarily have to be limited to any 
> particular scope.

So what happens when the resource outlives the object's lifetime. 
That's exactly what is happening when you are using the garbage 
collector. That's exactly the case with the containers in phobos. 
So calling them RAII container is just incorrect. You are using 
two techniques that do the same thing. Call it pure RAII 
containers if you want, for containers that only use RAII and the 
current implementation that is GC'd RAII/deterministic destructor 
containers.

>> Not to mention for some reason Array's internal implementation 
>> is ref counted. If you want ref counted arrays you should do 
>> RefCounted!(Array!T). Std.containers is just a giant mess.
>
> The "some reason" is mutable slices.

Not really, slices aren't included in the ref counting. So if the 
array object is detroyed, the slices are no longer valid. You 
have to deal with the same issue, with or without ref counting. 
You manually have to ensure the array outlives the slice, and 
that the slices aren't invalidated by an operation like resize.

>> I feel like if your solution is, don't use Phobo's containers 
>> here use this person's that isn't updating it anymore of 
>> questionable quality. Then I feel like you are agreeing with 
>> me that phobos containers suck. Oh and it looks like 
>> hackerpilot is responsible for merging pull request, lovely.
>
> Yes, std.container does need quite a bit of love. That doesn't 
> mean that D doesn't have RAII or that it's RAII support is 
> somehow deficient.

I was never arguing that it didn't. Jack said it had RAII 
containers, which it doesn't. The standard library containers are 
shiat.


More information about the Digitalmars-d mailing list