  In modern runtime systems, memory layout calculations are hand-coded in
systems languages. Primitives in these languages are not powerful enough to
describe a rich set of layouts, leading to reliance on ad-hoc macros, numerous
interrelated static constants, and other boilerplate code. Memory management
policies must also carefully orchestrate their application of address
calculations in order to modify memory cooperatively, a task ill-suited to
low-level systems languages at hand which lack proper safety mechanisms.
  In this paper we introduce Floorplan, a declarative language for specifying
high level memory layouts. Constraints formerly implemented by describing how
to compute locations are, in Floorplan, defined declaratively using explicit
layout constructs. The challenge here was to discover constructs capable of
sufficiently enabling the automatic generation of address calculations.
Floorplan is implemented as a compiler for generating a Rust library. In a case
study of an existing implementation of the immix garbage collection algorithm,
Floorplan eliminates 55 out of the 63 unsafe lines of code: 100\% of unsafe
lines pertaining to memory safety.
