A PROPOSAL FOR A COOPERATIVE, GARBAGE COLLECTED "C" PROGRAMMING LANGUAGE
This report identifies issues which arise when extending the C language to cooperate with a garbage collector managing a garbage collected heap. Adding a garbage collected heap to C is intended to increase programmer productivity by reducing the complexity of applications which use dynamically allocated memory. A mechanism is known for garbage collection in C applications which do not cooperate with the collector, but this mechanism is relatively expensive. This report proposes modifications to the C language which will allow it to cooperate with a garbage collector. The proposal modifies the syntax and semantics of C very little, and the extension degrades the performance of only those expressions which manipulate references to the garbage collected heap. The proposal was partially implemented in a compiler for a C-like language whose target machine was a FORTH-like virtual machine.