Safe and Flexible Memory Management in Cyclone
Safe and Flexible Memory Management in Cyclone
Files
Publication or External Link
Date
2003-08-01
Authors
Hicks, Michael
Morrisett, Greg
Grossman, Dan
Jim, Trevor
Advisor
Citation
DRUM DOI
Abstract
Cyclone is a type-safe programming language intended for applications
requiring control over memory management. Our previous work on Cyclone
included support for stack allocation, lexical region allocation, and a
garbage-collected heap. We achieved safety (i.e., prevented dangling
pointers) through a region-based type-and-effects system. This paper
describes some new memory-management mechanisms that we have integrated
into Cyclone: dynamic regions, unique pointers, and reference-counted
objects. Our experience shows that these new mechanisms are well suited
for the timely recovery of objects in situations where it is awkward to
use lexical regions. Crucially, programmers can write reusable functions
without unnecessarily restricting callers' choices among the variety of
memory-management options. To achieve this goal, Cyclone employs a
combination of polymorphism and scoped constructs that temporarily let
us treat objects as if they were allocated in a lexical region.
(UMIACS-TR-2003-82)