Continuation marks enable dynamic binding and
context inspection in a language with proper handling of tail calls
and first-class, multi-prompt, delimited continuations. The simplest
and most direct use of continuation marks is to implement dynamically
scoped variables, such as the current output stream or the current
exception handler. Other uses include stack inspection for
debugging or security checks, serialization of an in-progress
computation, and run-time elision of redundant checks. By exposing
continuation marks to users of a programming language, more kinds of
language extensions can be implemented as libraries without further
changes to the compiler. At the same time, the compiler and runtime
system must provide an efficient implementation of continuation marks
to ensure that library-implemented language extensions are as
effective as changing the compiler. Our implementation of
continuation marks for Chez Scheme (in support of Racket) makes
dynamic binding and lookup constant-time and fast, preserves the
performance of Chez Scheme's first-class continuations, and imposes
negligible overhead on program fragments that do not use first-class
continuations or marks.
Wed 17 JunDisplayed time zone: Pacific Time (US & Canada) change
13:00 - 14:00 | Language ImplementationPLDI Research Papers at PLDI Research Papers live stream Chair(s): Chris Seaton Shopify | ||
13:00 20mTalk | Compiler and Runtime Support for Continuation Marks PLDI Research Papers | ||
13:20 20mTalk | Crafty: Efficient, HTM-Compatible Persistent Transactions PLDI Research Papers Kaan Genç Ohio State University, USA, Michael D. Bond Ohio State University, USA, Guoqing Harry Xu University of California at Los Angeles, USA | ||
13:40 20mTalk | From Folklore to Fact: Comparing Implementations of Stacks and Continuations PLDI Research Papers |