Monadic Regions: A Unified Approach to Region-Based Memory Management and Effect Encapsulation
This paper introduces a monadic framework for region-based memory management, synthesizing two research lines: region-based memory management and monadic encapsulation of effects. By defining regions that specify object lifetimes and embedding imperative features into pure languages, we propose a new system that enhances the control and safety of memory allocation. The framework allows for the creation and manipulation of region-allocated values, encapsulating computations within a monadic context for better resource management. The compatibility with System F demonstrates its wide applicability and relevance.
Monadic Regions: A Unified Approach to Region-Based Memory Management and Effect Encapsulation
E N D
Presentation Transcript
Monadic Regions Matthew Fluet Cornell University
Introduction • Draw together two lines of research • Region-based memory management • Regions delimit lifetimes of objects • new .e • Monadic encapsulation of effects • Embed imperative features in pure languages • runST :: .(s. RGN s )
FRGN = System F + RGN monad • System F • Monadic (sub)-language • Monadic types and operations • RGN r – monadic region computations • RGNVar r – region allocated values • RGNHandle r – region handles
FRGN = System F + RGN monad • Create and read region allocated values allocRGNVar :: ,r. RGNHandle r RGN r (RGNVar r ) readRGNVar :: ,r. RGNVar r RGN r
FRGN = System F + RGN monad • Encapsulate and run a monadic computation runRGN :: .(r. RGNHandle r RGN r )
FRGN = System F + RGN monad • Encapsulate a region newRGN :: ,r.(s. RGNHandle s RGN s ) RGN r α
FRGN = System F + RGN monad • Encapsulate a region newRGN :: ,r.(s. r s RGNHandle s RGN s ) RGN r α ≡ ,r,s. RGN r RGN s
Single Effect Calculus • LIFO stack of regions imposes a partial order on live (allocated) regions • Regions lower on the stack outlive regions higher on the stack • A single region can serve as a witness for a set of effects • Region appears as a single effect in place of the set
Translation • Type-preserving translation from Single Effect Calculus to FRGN new .e newRGN (.w.h. e)
Conclusion • Monadic encoding of effects applicable to region calculi • Trivial (syntactic) equality on types • Encapsulation within monad
FRGN = System F + RGN monad • Monadic unit and bind returnRGN :: ,r. RGN r thenRGN :: ,,r. RGN r ( RGN r ) RGN r