RC is a dialect of
C that adds safe, region-based memory management to C:
Region-based memory management allocates objects in a program-specified
region.
Objects cannot be freed individually; instead regions are deleted with
all their contained objects. Region-based memory management is a fairly
common programming style, for instance it is used in the Apache web server
(where the regions are called pools and also used to manage other resources).
RC is safe: RC maintains for each region r a reference count
of the number of external pointers to objects in r, i.e.,
of pointers not stored within r. Deleting a region with a non-zero
reference count causes a runtime error (abort). Thus RC programs cannot
access freed memory. The overhead for safety in RC is low (less than 11%
on a group of realistic benchmarks).
RC's compiler, rcc, is based on gcc and distributed under
the GNU General Public License, in source
code form. The distribution is available in two tar files:
rc.tar.gz: the rcc compiler and region
library.
rctests.tar.gz: a set of 6 RC programs.
RC has been tested on sparc/solaris machines (Solaris 2.6 and Solaris
7) and on x86/Linux machines (Redhat 6.2 and Redhat 7), but should not
be hard to port to other platforms.
More information can be found in the RC User's Manual
(also included in the distribution).
Please send all bug reports to David Gay, dgay@acm.org.