Jeremy DeHaan wrote:
Thank you all for the feedback.

I think I might still need a little more feedback as to what the project
should actually entail, but here's what it's looking like so far:

Implement lock free allocation using std.experimental.allocator's
freelists (SharedFreeList? It was the only thing in the documentation
that specifically mentions lock free allocation)

Implement a generational garbage collector

Implement precise garbage collection (possibly piggybacking off of
Rainer's work)


Does anyone think that might be too much to take on or does it sound
pretty good? I have other garbage collector things I'd like to explore,
but I they should probably go in the "if time allows" category at this
point.

    Jeremy

If I may make a suggestion. The lock free work is unlikely to require the entirety of GSoC. And the precise GC is the next most important thing on your list and will have the biggest impact on GC performance.

Once the GC is fully precise we can implement a fully compacting GC, which improves the usefulness of generational collection. Additionally, precision allows a significant amount of work to be done in improving the performance of the GC in multi-threaded scenarios. It should be quite possible to avoid needing fork() or anything like it altogether. I know that the .NET GC doesn't need to use anything like it.

Also, I would strongly recommend getting this book and reading it cover to cover before starting:
http://www.amazon.com/gp/product/1420082795/ref=pd_lpo_sbs_dp_ss_1?pf_rd_p=1944687562&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=0471941484&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=0QD9X3E5QATSBCBT6BMM

I think Rainer's Precise GC only dealt with Heap objects. What needs work is Register and Stack scanning. Expanding on Rainer's existing Precise GC work is the right idea, but Register and Stack scanning is a very big project in it's own right.I suspect it will take up the remainder of your GSoC time. :)

--
// Adam Wilson
// quiet.dlang.dev

Reply via email to