Improve reability of GC on win64

Adam Wilson via Digitalmars-d digitalmars-d at puremagic.com
Fri Mar 25 11:16:34 PDT 2016


On 3/24/2016 23:06, Brad Anderson wrote:
> On Thursday, 24 March 2016 at 18:58:56 UTC, Adam Wilson wrote:
>> [snip]
>>
>> Interestingly enough, there is a GSoC candidate this year that is
>> proposing a project that would make the D GC precise.
>
> There was already a GSOC project to make the GC precise by Antti-Ville
> Tuuainen back in 2012. Rainer expanded upon it[1] and gave a talk about
> it at DConf 2013[2].
>
> I'm not sure why it never went anywhere.
>
> In any case, I don't think a precise GC is a good GSOC project since
> most of the work has already been done. I feel like a GC focused GSOC
> project should be more ambitious than merely tying up the loose ends of
> the existing precise GC work.
>
> 1. https://github.com/rainers/druntime/tree/gcx_precise
> 2. http://dconf.org/2013/talks/schuetze.pdf

(DISCLOSURE: I am a Mentor for GSoC and worked with the student on the 
proposal in question.)

Well, it's not quite that simple. First, the Precise GC is two years 
bit-rotten according to Rainer. So it needs to be pulled up to current D 
spec.

Second, there was never a well engineered integration solution, which is 
a major part of the reason that it never got accepted in the first 
place. The GSoC project proposal calls for work to be done on making the 
new GC a command-line switch so you can pick the right GC for your 
project. This will also enable a faster iteration cycle on the new GC by 
making it optional so we can try new algorithms and experiment without 
making the experiments mandatory for everyone.

Third, there were suggestions on the forum about how to make the 
allocation low-lock or lock-free and that also made it in to the proposal.

Lastly, the student is going to spend most of their time plumbing the 
bowls of the Compiler and GC looking for more ways to improve precision. 
Stack/TLS/Register scanning are going to be added or improved. Automatic 
pinning of C-style pointers and concurrent scanning were also mentioned 
in the forums as useful as well, but it is unlikely the student will 
have the time to get to those items.

So yes, Rainer and Antti-Ville's work is a starting point. But the goal 
of the project is to get something that actually works into the mainline 
D releases. And that is, from an engineering standpoint, a significant 
undertaking.

While the volume of new code written might not be as high as other 
projects, the GC needs to maintain a higher level of quality than the 
average Phobos submission due to the fact that the GC is fundamental to 
D. Meeting that high quality bar is going to be a significant 
undertaking on it's own, and work will probably progress a little slower 
than a Phobos module would in order to maintain that quality.


More information about the Digitalmars-d mailing list