This module contains a minimal garbage collector implementation according to published requirements. This library is mostly intended to serve as an example, but it is usable in applications which do not rely on a garbage collector to clean up memory (ie. when dynamic array resizing is not used, and all memory allocated with 'new' is freed deterministically with 'delete').
Please note that block attribute data must be tracked, or at a minimum, the FINALIZE bit must be tracked for any allocated memory block because calling rt_finalize on a non-object block can result in an access violation. In the allocator below, this tracking is done via a leading uint bitmask. A real allocator may do better to store this data separately, similar to the basic GC.