Phase 1 (gc-dev) - Add gc.h, make sure it compiles. Phase 2 (gc-dev2) - Change how strings are allocated, to clean up the code and be compatible with a new GC algorithm. Phase 3 (gc-dev3) - Change from using a Cheney-style copying collector to a naive mark&sweep algorithm. Phase 4 (gc-dev4) - Integrating new tracing GC algorithm, added new thread data argument to runtime. Phase 5 (gc-dev5) - Require pthreads library, stand cyclone back up using new GC algorithm. TODO: - profiling and performance improvements let's trying using hash tables for symbol table. maybe give concurrency kit a try, since it could be used for atomic operations. also want data structures that will be concurrency-friendly, especially hash tables - need to cooperate when a mutator is blocked - add_mutation will need to be brought into thread local data. - probably exceptions too. anything else? - multiple mutators, and threading functions/types. probably want this on a new branch, when ready