Skip to content

RationalizeHeapsTodo

Felix S. Klock II edited this page Jul 28, 2013 · 1 revision

Here are the heaps we should have:

  • larceny.heap contains everything that most programmers would want to use, and nothing that is of use only to developers. For example, compile-file should be present, but not $branchf.
  • twobit.heap contains everything that compiler developers would want to use, including pretty-printer and debugger, but does not have to contain things that are mainly of interest to application developers. For example, MIDI support would not be part of twobit.heap even if it were present in larceny.heap.
  • r5rs.heap is largely obsolete and misleading. We should eliminate it.
  • sparc.heap and petit.heap are bare-bones heaps used for bootstrapping and as a basis for constructing larceny.heap and twobit.heap. They make sense for Sparc Larceny and for Petit Larceny, but not for Common Larceny. Until and unless we decide to move to a new model of bootstrapping Sparc and Petit Larceny, we should continue to provide sparc.heap and petit.heap as part of the development package. To reduce confusion, they should not be part of the bare-bones, quick-start distribution.
  • We have two distinct compiler drivers, which use two distinct configurations of the same macro expander, differing in the syntax environment and possibly in other ways. This seems to be a gratuitous difference between larceny.heap and twobit.heap, and should be cleaned up. It could be that the driver used in twobit.heap was designed for cross-compilation when bootstrapping via systems other than Larceny. Maybe Larceny has become mature enough for us to forget about bootstrapping via other systems; on the other hand, being able to bootstrap via other systems is a nice feature.
Clone this wiki locally