[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
New GC concept
From: |
Daniel Colascione |
Subject: |
New GC concept |
Date: |
Thu, 3 Jun 2021 20:30:26 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
Emacs has had the same GC for a decent amount of time now (since the
1980s, really). I spent some time in 2020 rewriting it from scratch. I
haven't had time to work on the new GC recently, but I figure I'd throw
it out here to get some feedback on the general concept.
Check out
https://github.com/dcolascione/emacs-1/blob/newgc-wip/src/alloc.c,
specifically the big doc comment on top
The new GC basically replaces alloc.c and a few other things. It has a
few cool features:
* fully copying and compacting
* special treatment of sxhash to preserve object identify even while we
move it around in memory
* generational
* contiguous storage of mark bits separately from the data heap
* concurrent (in design, not current implementation): idea is that we do
concurrent marking and barely pause for sweep
* small string optimization
* bump pointer allocation of new objects
* heap enumeration support
* hard requirement on pdumper
* specialized GC spaces for conses, strings, arrays, and so on: no
stupid header word for cons cells bloating memory use by 50%!
* cool modern C implementation that relies heavily on compiler inlining
and constant propagation
The current implementation is deficient in many ways. Honestly, I'm not
even sure whether that specific revision compiles. But like I said, I
haven't had time recently to continue work on it.
Still, I'm still curious about what people think of the overall effort.
It might work nicely with the new native compilation stuff, giving us a
managed code execution environment kind-of, sort-of on par with the big
modern managed-code runtimes.
- New GC concept,
Daniel Colascione <=
Re: New GC concept, Andrea Corallo, 2021/06/04
Re: New GC concept, Matt Armstrong, 2021/06/07