The concurrent GC is a great idea. A few interrogations.
- How "stoppy" would a stop-the-world parallel GC be in practice? The more parallelism
you have, the more work is done, the higher the frequency of a major collection.
- Would major allocations be serialized? What about other serialization points?
- I'm afraid true concurrency will introduce an awful lot of bugs in native bindings. Thread-unsafe libraries will have to be replaced (Str, etc.) Also what would be the CPU
and memory costs? Don't concurrent GCs require extra colors?
- In case of performance impacts, will the old single-threaded mode still be available?
The argument that "you'll get the same old perfomance if you run it in single-threaded mode"
is not valid IMHO. Many people will use a thread here or there and then you won't realistically be able to run in single-threaded mode.
But then we can't pretend multi-core doesn't exist. A suggestion: making the parallel GC available only on 64-bit seems a reasonable restriction (if that's ever needed.)
Also Damien Doligez (in addition to Xavier Leroy) certainly have nice things to say about all this.
--
Berke Durak