On Thursday, 22 December 2016 at 03:57:10 UTC, Chris Wright wrote:
You can implement write barriers as runtime calls, but omit them in @nogc code.
That means redefining what @nogc means. Currently it basically means "does not GC-allocate" and you want to change it to "does not mutate GC-allocated objects" which is very different and hardly possible to check in compiler without further changing the language.
However, this would be costly -- it's an expensive technique in general;
Yep, that's what I'm saying. Fast GC has a price on the rest code speed. Fast code has a price on GC. Unless you separate them very clearly by language means.