On Friday, 2 September 2016 at 05:19:57 UTC, thedeemon wrote:
On Friday, 2 September 2016 at 03:25:33 UTC, Jeremy DeHaan
I know I'm super late to the party for this, and sorry for
that. While my work on the precise GC didn't go as planned, it
is closer than it was to be getting merged.
My open PR for the actual inclusion of the precise GC is here:
So what's its current state, how is it different from the
version Rainer had years ago? Is stack scan precise? Are
closures scanned precisely? What about unions?
The version in the pull request is not different from the one
Rainer presented at all. It's actually the same one, just updated
with what has been changed in druntime recently and my attempts
at making the marking phase faster. It isn't any faster, but I
didn't realize this due to benchmarking differences on AMD and
Intel platforms. I should correct this in the next couple of days
and performance can be assessed again.
Scanning the stack would require some support from the compiler.
Precisely scanning unions is tricky since they could mix pointer
and non pointer types. I'm not sure about closures. If I've done
anything with closures I'm not aware of it. I have yet to
actually work with the compiler, but in the future I will have to
We'd be happy to see some overview of this version, what it
does and how it succeeds (or fails).
It is essentially in a similar state that it was when Rainer
presented it at DConf2013. I spent a lot of time doing research
on techniques to improve its performance and I did start working
on a sort of proof of concept for some of these ideas, but
implementing it in a cohesive way would have required a lot more
than was possible in the GSoC timeframe and it just didn't
happen. It's pretty late for me here, but I will definitely
explain more about some of these things later. It's essentially
stuff that I do on my own time.