The page on the garbage collector doesn’t specify whether D uses an incremental garbage collector or a stop-the-world version. It does mention pausing a few times, which could be a hint at a stop-the-world garbage collector, but I’m not sure.
If it doesn’t use an incremental garbage collector, are there any particular reasons for this? A stop-the-world GC gives a hard time to interactive applications.
Current implementations (Druntime) use a stop-the-world garbage collector, but the language itself doesn’t place many restrictions on the details of an implementation.
There is a concurrent garbage collector for D, CDGC, for *nix-like OSes (it uses forking).
Incremental GCs are difficult to use in a compiled environment, because of the need of write barriers. VMs can track references, however system languages, which can call
memcpyand similar functions, cannot.