[gclist] language specifications and memory management
Greg Morrisett
jgm@CS.Cornell.EDU
Sat, 20 Apr 1996 10:41:55 -0400
In regards to the thread on language specifications and memory
management:
We (Bob Harper, Matthias, Felleisen and I) have been working on
abstract machine descriptions for various programming languages
in order to model issues of memory management. The models we use
are based on an "allocation semantics" -- a variant of the lambda-
calculus. This style of semantics makes allocation and the heap
explicit, without fixing real machine implementations. Garbage
is defined with respect to evaluation (as opposed to some graph-
based heuristic). That is, an object is considered garbage iff
eliminating it has no observable effect on evaluation of the
resulting program. This semantic approach allows us to model
traditional collectors (i.e., reference counts, mark/sweep, copying,
generational, etc.) as well as more advanced collectors that
use semantic information (i.e. types, unification, data-flow analysis)
to collect reachable, but semantically dead objects.
For those that are interested, see our FPCA paper[1] which gives
a very high-level model, or see chapter 7 of my dissertation[2]
which gives a much lower-level, but still suitably abstract
model.
-Greg Morrisett
jgm@cs.cornell.edu
[1] G. Morrisett, M. Felleisen, R. Harper
"Abstract Models of Memory Management",
1995 ACM Symposium on Functional Programming and Computer
Architecture, La Jolla, CA, pp. 66-77.
(see http://www.cs.cornell.edu/Info/People/jgm/papers/fpca_gc.ps)
[2] G. Morrisett
"Compiling with Types",
Ph.D. Thesis, Published as CMU Technical Report
CMU-CS-95-226, December, 1995.
(see http://www.cs.cornell.edu/Info/People/jgm/papers/thesis.ps)