A cross-platform implementation of the Immix Garbage Collector
Switch branches/tags
Nothing to show
Clone or download
Latest commit a3846a5 May 31, 2014



gcix provides a cross-platform implementation of the Immix garbage collector

Why another GC?

The only GC that is providing a VM/language agnostic API is currently provided by boehm gc (see bdwgc). There is currently no Immix GC implementation in C++ that can be used/integrated as easily as the boehm gc. There are some Immix gc implementations around. but they are often tightly integrated into a specific VM/language like Haxe, Rubinius...etc


  • Immix GC as a service
  • Provide a "reference" implementation in C++11 of the Immix GC and eventually RC Immix
  • Provide a VM/language agnostic garbage collector using latest research (Immix/RC)
  • Support for Sticky Immix (semi-generational)
  • Support for interior pointers
  • Precise pointers scanning: semi-conservative on stack and precise on heap.
  • Several unit tests to ensure the GC is correctly implemented and tracking regressions (Note: unit tests are currently broken. Changes on latest internals not backported to tests)
  • When enough mature make a join-venture with SharpLang project

Current state

The project is currently under development and is in a very early alpha state (and well, no development on it for the past month!).

What has been done so far:

  • A GlobalAllocator, providing a chunk allocator (a chunk is composed of several Immix blocks),
  • A ThreadLocalAlloactor, to be used by mutator GC (i.e. the program)
  • Basic multithreading support (GlobalAllocator is thread safe)
  • Naive marking and collector

What is under development:

  • Implements marking by using SSB (Sequential Store Buffers)
  • Start to work on implementing a basic write barrier infrastructure

Help the project

If you are interested, don't hesitate to contact me via the issues tab or alexandre_mutel at live.com


BSD-Clause2 license