Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm familiar with that keynote, and I've written about it before. Long story short, the Go developers never tested a generational GC with bump allocation in the nursery. Without that, they haven't given generational GC a fair shake.

Regarding JavaScriptCore, they are constrained by compatibility with native code that takes pointers into the GC heap, particularly iTunes. So the situation is not really comparable. Nevertheless, Filip has done a better job with reducing allocation overhead in JSC than the Go team has, because the "bump'n'pop" fast path is inlined into allocation sites. It's still a throughput loss over a pure bump allocator, because it has a little more bookkeeping to do [1]—but not by much. Note also that JavaScriptCore has—you guessed it—a generational GC [2], though a non-moving one.

If Go doesn't switch to a generational GC, they should at least adopt bump'n'pop.

[1]: https://trac.webkit.org/browser/trunk/Source/JavaScriptCore/...

[2]: https://webkit.org/blog/7122/introducing-riptide-webkits-ret...



> they should at least adopt bump'n'pop.

I wrote a rudimentary hack of bump'n'pop for CRuby, but in that context, it had almost no effect. The real issue for CRuby is all objects larger than a few bytes are malloced and freed but there's a proposal now for: https://bugs.ruby-lang.org/issues/14858




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: