On Tuesday, 14 March 2017 at 10:05:54 UTC, Russel Winder wrote:
[...]
My gut feeling is that the D language execution and data model
is not compatible with a "do not stop the world" GC. However
this is opinion not really backed with evidence.
I've recently been made aware of [1] and [2]. GC seems to always
be a question of what you're willing to sacrifice, and if you
want low pause times AFAIK the only known way to get that is to
sacrifice overall throughput. This seems to be contradictory to
D's goals of efficiency and control to me.
What needs to happen is for a group of people who like
complaining about the GC to get together and gather evidence as
to what needs to change in the D language to support a soft
real-time compatible GC such as Go, Nim, Java G1, etc. You
can't just transplant an algorithm since the GC has to fit with
the language data and execution model and D is more like C than
like Java or Go.
If the result is that a change to the D execution or data model
is needed then this has to be proposed and debated. If this is
not something open to change, then there is no point in going
any further.
The problem with changing D's execution and/or data model is that
AFAIK to be viable for a better GC the necessary sacrifices will
ensure that D cannot compete with C in terms of performance
anymore. I'm not sure how the majority of the D community would
feel about that, but I don't think I at least could still
advocate D as a better drop-in replacement for C.
I cannot commit to being involved in anything such as this
until 2017- 06-30Y17:01+01:00, but from then there is a good
possibility of getting me on board an effort to create a new GC
for D (but note I really abhor the Phobos coding style with
it's wrongly place opening braces).
OT: That's what (GIT) commit hooks are for. Write how you want,
automatically commit as whatever non-Allman, wrong style the
project uses.
[1]
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e?gi=78635e05a6ac#.6zz5an77a
[2]
http://www.infognition.com/blog/2014/the_real_problem_with_gc_in_d.html