Abstract Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling (2008)
Robert G. Burger, Oscar Waddell, R. Kent Dybvig
This paper presents a fast and effective linear intraprocedural register allocation strategy that optimizes register usage across procedure calls. It capitalizes on our observation that while...
Abstract Expansion-Passing Style: A General Macro Mechanism* (2008)
R. Kent Dybvig, Daniel P. Friedman, Christopher T. Haynes
The traditional Lisp macro expansion facility inhibits several important forms of expansion control. These include selective expansion of subexpressions, expansion of subexpressions using modified...
Threads yield continuations ∗ (2008)
Abstract. Just as a traditional continuation represents the rest of a computation from a given point in the computation, a subcontinuation represents the rest of a subcomputation from a given point...
Abstract Representing Control in the Presence of One-Shot Continuations ∗ (2008)
Carl Bruggeman, Oscar Waddell, R. Kent Dybvig
Traditional first-class continuation mechanisms allow a captured continuation to be invoked multiple times. Many continuations, however, are invoked only once. This paper introduces one-shot...
Oscar Waddell, R. Kent Dybvig, Additional Key Words, Phrases Visualization
Visualization can help both implementors and users of partial evaluators to understand (1) where reductions are applied in a given source program, (2) what residual code is produced by these...
Christopher T. Haynes, R. Kent Dybvig, Daniel P. Friedman, Lorilee Sadler, George Springer
the utility of the curricular materials developed by this project. 1 Introduction The Scheme programming language was initially designed at MIT to support research in programming languages [19]. The...
Michael Sperber, R. Kent Dybvig, Matthew Flatt, Anton Van Straaten, Richard Kelsey, William Clinger, ...
This document describes rationales for some of the design decisions behind the Revised 6 Report on the Algorithmic Language Scheme. The focus is on changes made since the last revision on the report....
Michael Sperber, William Clinger, R. Kent Dybvig, Matthew Flatt, Anton Van Straaten, Richard Kelsey, ...
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis...
Michael Sperber, R. Kent Dybvig, Matthew Flatt, Anton Van Straaten, Richard Kelsey, William Clinger, ...
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis...
Scheme — Standard Libraries — (2007)
Michael Sperber, R. Kent Dybvig, Matthew Flatt, Anton Van Straaten, Richard Kelsey, William Clinger, ...
The report gives a defining description of the standard libraries of the programming language Scheme.
STARFISH: A TABLE-CENTRIC TOOL FOR DESIGN DERIVATION (2007)
Alexander W. Tsow, D. Johnson, R. Kent Dybvig, Lawrence S. Moss, Alexander W. Tsow
ii
Syntactic Abstraction: The syntax-case expander ∗ (2007)
When writing computer programs, certain patterns arise over and over again. For example, programs must often loop through the elements of arrays, increment or decrement the values of variables, and...
MAGPIE: PRECISE GARBAGE COLLECTION FOR C (2006)
Adam Wick, John Regehr, Gary Lindstrom, Wilson Hsieh, R. Kent Dybvig, Martin Berzins, ...
committee and by majority vote has been found to be satisfactory.
Michael Sperber, William Clinger, R. Kent Dybvig, Matthew Flatt, Anton Van Straaten, Richard Kelsey, ...
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis...
A monadic framework for delimited continuations (2005)
R. Kent Dybvig, Simon Peyton Jones, R. Kent, Dybvig Simon, Peyton Jones, Amr Sabry, ...
Delimited continuations are more expressive than traditional abortive continuations and they apparently seem to require a framework beyond traditional continuation-passing style (CPS). We show that...
Dybvig. A nanopass framework for compiler education (2005)
Dipanwita Sarkar, Oscar Waddell, R. Kent Dybvig
A compiler structured as a small number of monolithic passes is difficult to understand and difficult to maintain. The steep learning curve is daunting, and even experienced developers find that...
Oscar Waddell, Dipanwita Sarkar, R. Kent Dybvig
Abstract. A Scheme letrec expression is easily converted into more primitive constructs via a straightforward transformation given in the Revised 5 Report. This transformation, unfortunately,...
A monadic framework for subcontinuations (2005)
R. Kent Dybvig, Simon Peyton Jones, Amr Sabry
Abstract. Functional and delimited continuations are more expressive than traditional abortive continuations and they apparently seem to require a framework beyond traditional continuation or monadic...
t'om macrogeneration to syntactic abstraction (2000)
Abstract. In his 1967 lecture notes, Christopher Strachey states that macrogenerators are useful as the only alternative to rewriting the compiler when language extensions are needed. He also states,...
Abstraction and Performance from Explicit Monadic Reflection (1999)
Jonathan Sobel, Erik Hilsdale, R. Kent Dybvig, R. Kent, Dybvig Daniel, Daniel P.Friedman
ion and Performance from Explicit Monadic Re#ection Jonathan Sobel Erik Hilsdale R. Kent Dybvig Daniel P.Friedman # Department of Computer Science Indiana University Bloomington, Indiana 47405...
Extending the Scope of Syntactic Abstraction (1999)
ion # Oscar Waddell University of Kansas owaddell@ittc.ukans.edu R. Kent Dybvig Indiana University dyb@cs.indiana.edu Abstract The benefits of module systems and lexically scoped syntactic...
Abstraction and Performance from Explicit Monadic Reflection (1999)
Jonathan Sobel, Erik Hilsdale, R. Kent Dybvig, Daniel P. Friedman
Much of the monadic programming literature gets the types right but the abstraction wrong. Using monadic parsing as the motivating example, we demonstrate standard monadic programs in Scheme,...
Revised^5 Report on the Algorithmic Language Scheme (1998)
H. Abelson, R. Kent Dybvig, Christopher T. Haynes, Guillermo J. Rozas, ...
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis...
Revised^5 Report on the Algorithmic Language Scheme (1998)
Richard Kelsey, William Clinger, Jonathan Rees (editors, Jonathan Rees, H. Abelson, ...
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates...
Revised^5 Report on the Algorithmic Language Scheme (1998)
Richard Kelsey, William Clinger, Jonathan Rees (editors, Jonathan Rees, H. Abelson, ...
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates...
Visualizing Partial Evaluation (1998)
ing with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works, requires prior specific permission...
Dybvig. An infrastructure for profile-driven dynamic recompilation (1998)
Robert G. Burger, R. Kent Dybvig
permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any...
Dybvig. An infrastructure for profile-driven dynamic recompilation (1998)
Robert G. Burger, R. Kent Dybvig
Dynamic optimization of computer programs can dramatically improve their performance on a variety of applications. This paper presents an efficient infrastructure for dynamic recompilation that can...
Dynamo: A Staged Compiler Architecture for Dynamic Program Optimization (1997)
Syntax Possible Dynamic Input Value-Specific Optimizations Register Allocation Coarse Scheduling Code Generation AMMA G Possible Dynamic Input Peephole Optimization Code Layout Branch Prediction...
A Practical and Flexible Flow Analysis for Higher-Order Languages (1997)
J. Michael Ashley, R. Kent Dybvig
A flow analysis collects data-flow and control-flow information about programs. A compuler can use this information to enable optimizations.
Threads Yield Continuations (1997)
Sanjeev Kumar, Carl Bruggeman, R. Kent Dybvig
. Just as a traditional continuation represents the rest of a computation from a given point in the computation, a subcontinuation represents the rest of a subcomputation from a given point in the...
Fast and Effective Procedure Inlining (1997)
Inlining is an important optimization for programs that use procedural abstraction. Because inlining trades code size for execution speed, the effectiveness of an inlining algorithm is determined not...
Dynamo: A Staged Compiler Architecture for Dynamic Program Optimization (1997)
Syntax Possible Dynamic Input Value-Specific Optimizations Register Allocation Coarse Scheduling Code Generation AMMA G Possible Dynamic Input Peephole Optimization Code Layout Branch Prediction...
Fast and Effective Procedure Inlining (1997)
. The effectiveness of an inlining algorithm is determined not only by its ability to recognize inlining opportunities but also by its discretion in exercising those opportunities. This paper...
Fast and e ective procedure inlining (1997)
Inlining is an important optimization for programs that use procedural abstraction. Because inlining trades code size for execution speed, the e ectivenessofaninliningalgorithm is determined not only...
Dynamo: A staged compiler architecture for dynamic program optimization (1997)
Optimizing code at run time is appealing because run-time optimizations can make use of values and invariants that cannot be exploited statically. Dynamic optimization can yield code that is superior...
Dybvig. Fast and effective procedure inlining (1997)
Inlining is an important optimization for programs that use procedural abstraction. Because inlining trades code size for execution speed, the effectiveness of an inlining algorithm is determined not...
A practical and flexible flow analysis for higher-order languages (1996)
J. Michael Ashley, R. Kent Dybvig
A flow analysis collects data-flow and control-flow information about programs. A compiler can use this information to enable optimizations. The analysis described in this article unifies and extends...
Representing Control in the Presence of One-Shot Continuations (1996)
Carl Bruggeman, Oscar Waddell, R. Kent Dybvig
Traditional first-class continuation mechanisms allow a captured continuation to be invoked multiple times. Many continuations, however, are invoked only once. This paper introduces one-shot...
A Practical and Flexible Flow Analysis for Higher-Order Languages (1996)
J. Michael Ashley, R. Kent Dybvig
machine \Delta 10 injecting them into a singleton set. The argument to a car expression evaluates to an abstract value that may contain multiple pairs. Its value is therefore the union of the car of...
Representing Control in the Presence of One-Shot Continuations (1996)
Carl Bruggeman, Oscar Waddell, R. Kent Dybvig
Traditional first-class continuation mechanisms allow a captured continuation to be invoked multiple times. Many continuations, however, are invoked only once. This paper introduces one-shot...
A Practical and Flexible Flow Analysis for Higher-Order Languages (1996)
J. Michael Ashley, R. Kent Dybvig
machine 10 \Delta state with the term halt and an empty pending set. As the machine executes, it builds a progressively more general cache until it is a safe approximation of the cache computed by...
Representing Control in the Presence of One-Shot Continuations (1996)
Carl Bruggeman, Oscar Waddell, R. Kent Dybvig
Traditional first-class continuation mechanisms allow a captured continuation to be invoked multiple times. Many continuations, however, are invoked only once. This paper introduces one-shot...
Flexible And Practical Flow Analysis for Higher-Order Programming Languages (1996)
R. Kent Dybvig, Ph. D, Daniel P. Friedman, Peter Shirley, Jon Barwise, J. Michael Ashley, ...
by
Compiler Construction Using Scheme (1995)
Erik Hilsdale, J. Michael Ashley, R. Kent Dybvig, R. Kent, Dybvig Daniel, Daniel P. Friedman
This paper describes a course in compiler design that focuses on the Scheme implementation of a Scheme compiler that generates native assembly code for a real architecture. The course is suitable for...
Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling (1995)
Robert Burger, Oscar Waddell, R. Kent Dybvig
This paper presents a fast and effective linear intraprocedural register allocation strategy that optimizes register usage across procedure calls. It capitalizes on our observation that while...
Compiler Construction Using Scheme (1995)
Erik Hilsdale, J. Michael Ashley, R. Kent Dybvig, R. Kent, Dybvig Daniel, Daniel P. Friedman
This paper describes a course in compiler design that focuses on the Scheme implementation of a Scheme compiler that generates native assembly code for a real architecture. The course is suitable for...
Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling (1995)
Robert G. Burger, Oscar Waddell, R. Kent Dybvig
This paper presents a fast and effective linear intraprocedural register allocation strategy that optimizes register usage across procedure calls. It capitalizes on our observation that while...
Reliable Interactive Programming with Modules (1995)
. Interactive programming is a convenient programming style that supports fast prototyping and debugging but often results in a loss of modularity and security. This article addresses the problem of...
An Ecient Implementation of Multiple Return Values in Scheme (1994)
J. Michael Ashley, R. Kent Dybvig
This paper describes an implementation of the new Scheme multiple values interface. The implementation handles multiple values efficiently, with no run-time overhead for normal calls and returns....
An Efficient Implementation of Multiple Return Values in Scheme (1994)
Michael Ashley, R. Kent Dybvig
This paper describes an implementation of the new Scheme multiple values interface. The implementation handles multiple values efficiently, with no run-time overhead for normal calls and returns....
An Efficient Implementation of Multiple Return Values in Scheme (1994)
J. Michael Ashley, R. Kent Dybvig
This paper describes an implementation of the new Scheme multiple values interface. The implementation handles multiple values efficiently, with no run-time overhead for normal calls and returns....
R. Kent Dybvig, R. Kent Dybvig, David Eby, David Eby, Carl Bruggeman, Carl Bruggeman
This paper describes a storage management system that is flexible and efficient. The representation of run-time tags yields fast allocation, type testing, and field extraction, and the memory model...
R. Kent Dybvig, R. Kent Dybvig, David Eby, David Eby, Carl Bruggeman, Carl Bruggeman
This paper describes a storage management system that is flexible and efficient. The representation of run-time tags yields fast allocation, type testing, and field extraction, and the memory model...
Guardians in a Generation-Based Garbage Collector (1993)
R. Kent Dybvig, Carl Bruggeman, David Eby
This paper describes a new language feature that allows dynamically allocated objects to be saved from deallocation by an automatic storage management system so that clean-up or other actions can be...
Robert Hieb, R. Kent Dybvig, Claude W. Anderson
. Continuations have proven to be useful for implementing a variety of control structures, including exception handling facilities and breadth-first searching algorithms. However, traditional...
Syntactic Abstraction in Scheme (1992)
Robert Hieb, R. Kent Dybvig, Carl Bruggeman
Naive program transformations can have surprising effects due to the interaction between introduced identifier references and previously existing identifier bindings, or between introduced bindings...
Writing Hygienic Macros in Scheme with Syntax-Case (1992)
ion in Scheme" [4], which was mostly written before Bob's death, does attempt to justify the macro system and to place it within the context of other work. The companion report also...
Writing Hygienic Macros in Scheme with Syntax-Case (1992)
This report is dedicated to my good friend and colleague, Bob Hieb, who was killed along with his eleven-year old daughter Iva in a tragic car accident near their home on April 30, 1992. Bob and...
Writing Hygienic Macros in Scheme with Syntax-Case (1992)
This article describes a pattern-based hygienic macro system for Scheme and provides numerous examples of its use. Macros defined using this system are automatically hygienic and referentially...
Syntactic Abstraction in Scheme (1992)
Robert Hieb, R. Kent Dybvig, Carl Bruggeman
Naive program transformations can have surprising e ects due to the interaction between introduced identi er references and previously existing identi er bindings, or between introduced bindings and...
Revised^4 Report on the Algorithmic Language Scheme (1991)
William Clinger, Jonathan Rees, Jonathan Rees (editors, Hal Abelson, ...
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates...
Representing Control in the Presence of First-Class Continuations (1990)
Robert Hieb, R. Kent Dybvig, Carl Bruggeman
Languages such as Scheme and Smalltalk that provide continuations as first-class data objects present a challenge to efficient implementation. Allocating activation records in a heap has proven...
Representing Control in the Presence of First-Class Continuations (1990)
Robert Hieb, R. Kent Dybvig, Carl Bruggeman
Languages such as Scheme and Smalltalk that provide continuations as first-class data objects present a challenge to efficient implementation. Allocating activation records in a heap has proven...
Destination-driven code generation (1990)
R. Kent Dybvig, Robert Hieb, Tom Butler
Destination-driven code generation is a simple top-down technique that allows the code generated for a program phrase to depend upon its context in an abstract syntax tree. The context is...
Destination-driven code generation (1990)
R. Kent Dybvig, R. Kent Dybvig, Robert Hieb, Robert Hieb, Tom Butler, Tom Butler
Destination-driven code generation is a simple top-down technique that allows the code generated for a program phrase to depend upon its context in an abstract syntax tree. The context is...
Engines from Continuations (1989)
Engines provide the means for a computation to be run for a limited period of time, interrupted if it does not complete in that time, and later restarted from the point of interruption. Previous work...
Engines from Continuations (1989)
Engines provide the means for a computation to be run for a limited period of time, interrupted if it does not complete in that time, and later restarted from the point of interruption. Previous work...
Expansion-Passing Style: A General Macro Mechanism (1988)
R. Kent Dybvig, Daniel P. Friedman, Christopher T. Haynes
The traditional Lisp macro expansion facility inhibits several important forms of expansion control. These include selective expansion of subexpressions, expansion of subexpressions using modified...
Three implementation models for Scheme / (1987)
Thesis (Ph. D.)--University of North Carolina at Chapel Hill, 1987.
This dissertation presents three implementation models for the Scheme Program-ming Language. The first is a heap-based model used in some form in most Scheme implementations to date; the second is a...
Printing Floating-Point Numbers Quickly and Accurately
This paper presents a fast and accurate algorithm for printing floating-point numbers in both free- and fixed-format modes. In free-format mode, the algorithm generates the shortest, correctly...
Printing Floating-Point Numbers Quickly and Accurately
Robert G. Burger, R. Kent Dybvig
This paper presents a fast and accurate algorithm for printing floating-point numbers in both free- and fixed-format modes. In free-format mode, the algorithm generates the shortest, correctly...