XEmacs is a highly customizable open source text editor and application development system. See http://www.xemacs.org.
I am developing a new memory manager for XEmacs. Here is the work that I already did:
Here are some details:
Configure with `--enable-newgc' (implies `--enable-mc-alloc' and `--enable-kkcc').
The patch is not yet committed to CVS. Download the patch and apply it to current CVS.
The new allocator provides size-based allocation (rather than object-based allocation what the old allocator provides). This allows many simplifications: the distinction between lrecords and lcrecords is no longer needed, I merged the two types into one. Thus, the new allocator has a small and straight forward interface.
Configure with `--enable-mc-alloc'.
Together with Markus Kaltenbach I worked on a new marking algorithm using memory descriptions.
The mark algorithm uses an explicit stack that keeps track of the current progress of traversal. Every Lisp object type has a memory layout description. The mark algorithm parses the memory descriptions to determine all live pointers. This way, the traversal is able to follow all pointers from the root set transitively to other objects on the heap.
Configure with `--use-kkcc'.