The "no gc" crowd

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Oct 8 19:22:34 PDT 2013


On 10/8/13 9:29 AM, ponce wrote:
> On Tuesday, 8 October 2013 at 16:22:25 UTC, Dicebot wrote:
>> It is not overblown. It is simply "@nogc" which is lacking but
>> absolutely mandatory. Amount of hidden language allocations makes
>> manually cleaning code of those via runtime asserts completely
>> unreasonable for real project.
>
> Hidden language allocations:
> - concatenation operator   ~
> - homogeneous arguments   void (T[]... args)
> - "real" closures that escapes
> - array literals
> - some phobos calls
>
> What else am I missing?
> I don't see the big problem, and a small fraction of projects will
> require a complete ban on GC allocation, right?

It's clear that the perception of GC will not change soon, however good 
or not the arguments may be as applied to various situations and 
projects. It is also a reality that our GC is slow.

So we need to attack this problem from multiple angles:

* Make RefCounted work as immutable data. There will be a casting away 
of immutability in there, but since it's under the aegis of the standard 
library, it is admissible. All implementations must ensure RefCounted works.

* Add reference counted slice and associative array types that are as 
close as humanly possible to the built-in ones.

* Advertise all of the above in a top module such as std.refcounted. 
It's amazing how many D programmers have no idea RefCounted even exists.

* Review all of Phobos for hidden allocations and make appropriate 
decisions on how to give the user more control over allocation. I have 
some idea on how that can be done, at various disruption costs.

* Get Robert Schadek's precise GC in. Walter and I have become 101% 
convinced a precise GC is the one way to go about GC.

I'm up to my neck in D work for Facebook so my time is well spent. We 
must definitely up the ante in terms of development speed, and pronto.


Andrei


More information about the Digitalmars-d mailing list