Topics

Design

Guy Steele Jr, Data Representations in PDP-10 MACLISP. 1977.

Smalltalk-80: bits of hisory, words of advice Glenn Krasner Addison Wesley, 1983

Topics in Advanced Language Implementation Peter Lee (Ed) MIT Press, 1991

Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development Wang, Kunshan ; Lin, Yi ; Blackburn, Stephen M. ; Norrish, Michael ; Hosking, Antony L. SNAPL’15 http://drops.dagstuhl.de/opus/volltexte/2015/5034/

Demystifying Magic: High-level Low-level Programming ∗ Daniel Frampton Australian National University Daniel.Frampton@anu.edu.edu Stephen M. Blackburn Australian National University Steve.Blackburn@anu.edu.edu Perry Cheng IBM Research perryisreading@gmail.com Robin J. Garner Australian National University Robin.Garner@anu.edu.edu David Grove IBM Research groved@us.ibm.com J. Eliot B. Moss University of Massachusetts at Amherst moss@cs.umass.edu Sergey I. Salishev St. Petersburg State University, Russia Sergey.I.Salishev@gmail.com. VEE’09.

Oil and Water? High Performance Garbage Collection in Java with MMTk Stephen M Blackburn Department of Computer Science Australian National University Canberra, ACT, 0200, Australia Steve.Blackburn@cs.anu.edu.au Perry Cheng IBM T.J. Watson Research Center P.O. Box 704 Yorktown Heights, NY, 10598, USA perryche@us.ibm.com Kathryn S McKinley ∗ Department of Computer Sciences University of Texas at Austin Austin, TX, 78712, USA mckinley@cs.utexas.edu ICSE 2004.

Self: the power of simplicity http://dl.acm.org/citation.cfm?doid=38765.38828

Implementing Jalapeno in Java http://dl.acm.org/citation.cfm?id=320418

Project Oberon (book, 2013 edition is online).

Case studies of systems

Steven R. Vegdahl and Uwe F. Pleban. 1989. The runtime environment for Scheme, a Scheme implementation on the 88000. In Proceedings of the third international conference on Architectural support for programming languages and operating systems (ASPLOS III). ACM, New York, NY, USA, 172-182. DOI http://dx.doi.org/10.1145/70082.68199 (Probably related to a book chapter in Peter Lee’s book.)

Connection with operating systems

A Principled Approach to Operating System Construction in Haskell. Thomas Hallgren, Mark P. Jones, Rebekah Leslie, Andrew Tolmach. ICFP 2005.

Concurrency and parallelism

MultiMLton: A multicore-aware runtime for standard ML K.C. SIVARAMAKRISHNAN Purdue University, West Lafayette, IN, USA (e-mail: chandras@purdue.edu) LUKASZ ZIAREK SUNY Buffalo, NY, USA (e-mail: lziarek@buffalo.edu) SURESH JAGANNATHAN Purdue University, West Lafayette, IN, USA

Concurrent ML, Reppy.

Racket-specific takes on those are covered in our ICFP’07 and PLDI’04 papers, respectively.

Fisher, Kathleen, and John Reppy. Compiler support for lightweight concurrency. Technical memorandum, Bell Labs, 2002.

Schedulers, Work-stealing and otherwise

M. Frigo, C. E. Leiserson, and K. H. Randall. The implementation of the Cilk-5 multithreaded language. In Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, PLDI ’98, pages 212– 223, New York, NY, USA, 1998. ACM

M. Frigo, H. Prokop, M. Frigo, C. Leiserson, H. Prokop, S. Ramachandran, D. Dailey, C. Leiserson, I. Lyubashevskiy, N. Kushman, et al. The Cilk project. Algorithms, 1998

Work-Stealing Without The Baggage ∗ Vivek Kumar† , Daniel Frampton†§, Stephen M. Blackburn† , David Grove‡ , Olivier Tardieu‡ OOPSLA 2012

Composable scheduler activations for Haskell K. C. SIVARAMAKRISHNAN, TIM HARRIS, SIMON MARLOW and SIMON PEYTON JONES JFP 2016 https://doi.org/10.1017/S0956796816000071

A scheduling framework for general-purpose parallel languages Matthew Fluet, Mike Rainey, and John Reppy ICFP’08 http://dl.acm.org/citation.cfm?doid=1411204.1411239

Garbage collection

Generation Scavenging: A non-disruptive high performance storage reclamation algorithm. David Ungar. Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments. 1984.

“Don’t Stop the BIBOP”, Dybvig, Eby, and Bruggemen, IU TR 1994.

Paul Wilson, Survey of Uniprocessor Garbage-Collection Techniques, circa 1996.

Immix: A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance ∗ Stephen M. Blackburn Australian National University Steve.Blackburn@anu.edu.au Kathryn S. McKinley The University of Texas at Austin. PLDI’08

  1. ACM, pp. 70–83.

The Garbage Collection Handbook Jones, Hosking, and Moss CRC Press, 2012

Deferred Gratification: Engineering for High Performance Garbage Collection from the Get Go ∗ Ivan Jibaja† Stephen M. Blackburn‡ Mohammad R. Haghighat∗ Kathryn S. McKinley† MSPC’11

A Real-time Garbage Collector with Low Overhead and Consistent Utilization David Bacon, and Perry Cheng, and V.T. Rajan ACM SIGPLAN Conference on Principles of Programming Language (POPL ’03) ,

A Parallel, Real-time Garbage Collector Perry Cheng and Guy Blelloch ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’01),

On Bounding Time and Space for Multiprocessor Garbage Collection Guy Blelloch and Perry Cheng ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’99),

Generational Stack Collection and Pre-tenuring Perry Cheng, Peter Lee, and Robert Harper ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’98),

A Unified Theory of Garbage Collection David F. Bacon, Perry Cheng, V. T. Rajan Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 50–68, ACM, 2004

A Fast Write Barrier for Generational Garbage Collectors. Urs Hölzle. OOPSLA‘93 Workshop on Garbage Collection, Washington, D.C., October 1993. (Work on the Self system)

Control theory for principled heap sizing David R. White, Jeremy Singer, Jonathan M. Aitken, and Richard E. Jones ISMM’13 http://dl.acm.org/citation.cfm?id=2466481

The judgment of forseti: economic utility for dynamic heap sizing of multiple runtimes Callum Cameron, Jeremy Singer, and David Vengerov ISMM’15 http://dl.acm.org/citation.cfm?doid=2754169.2754180

Performance

Myths and Realities: The Performance Impact of Garbage Collection∗ Stephen M Blackburn Department of Computer Science Australian National University Canberra, ACT, 0200, Australia Steve.Blackburn@cs.anu.edu.au Perry Cheng IBM T.J. Watson Research Center P.O. Box 704 Yorktown Heights, NY, 10598, USA perryche@us.ibm.com Kathryn S McKinley Department of Computer Sciences University of Texas at Austin Austin, TX, 78712, USA mckinley@cs.utexas.edu SIGMETRICS/Performance’04.

JIT compilation

Customization: Optimizing Compiler Technology for Self, a Dynamically-Typed Object-Oriented Programming Language. Craig Chambers and David Ungar, PLDI’89.

Dynamic languages

L. Peter Deutsch and Allan M. Schiffman. Efficient implementation of the Smalltalk-80 system. In Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, pages 297–302, January 1984.

An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented Language Based on Prototypes. Craig Chambers, David Ungar, and Elgin Lee. OOPSLA ‘89 Conference Proceedings, pp. 49-70, New Orleans, LA, October, 1989.

Making Pure Object-Oriented Languages Practical. Craig Chambers and David Ungar. OOPSLA ‘91 Conference Proceedings, pp. 1-15, Phoenix, AZ, October, 1991. (Probably too much about compilation.)

Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. Urs Hölzle and David Ungar. Proceedings of the ACM SIGPLAN `94 Conference on Programming Language Design and Implementation.

A Third-Generation Self Implementation: Reconciling Responsiveness with Performance. Urs Hölzle and David Ungar. Proceedings of the ACM OOPSLA `94 Conference, Portland, OR, October 1994.

The Design and Implementation of the Self Compiler, an Optimizing Compiler for Object-Oriented Programming Languages. Craig Chambers, doctoral dissertation. 1992.

Hot swapping

Mike Hicks and Scott Nettles, Dynamic Software Updating, TOPLAS, November 2005. http://www.cs.umd.edu/~mwh/papers/dynupd-toplas.pdf http://dl.acm.org/ft_gateway.cfm?id=1108971&ftid=337105&dwn=1&CFID=477031804&CFTOKEN=83062758

Dynamically checked contracts

(Ask Robby)

Call stacks

“Representing control in the presence of first-class continuations” (PLDI’90)

“Representing control in the presence of one-shot continuations” (PLDI’96)

Implementing Zero Overhead Exception Handling, S. Drew, K. J. Gough, J. Ledermann. Unpublished, 1995.

Nathan Froyd, John Mellor-Crummey, and Rob Fowler. 2005. Low-overhead call path profiling of unmodified, optimized code. In Proceedings of the 19th annual international conference on Supercomputing (ICS ’05). ACM, New York, NY, USA, 81-90. http://dx.doi.org/10.1145/1088149.1088161

Norman Ramsey and David R. Hanson. 1992 (June). A retargetable debugger. Proceedings of the ACM SIGPLAN ’92 Conference on Programming Language Design and Implementation, in SIGPLAN Notices, volume 27, pages 22–31. Section 4.1.

A Single Intermediate Language That Supports Multiple Implementations of Exceptions Norman Ramsey, Simon Peyton Jones. PLDI 2000.

“A monadic framework for delimited continuations” (JFP’07), Kent, Dybvig, Simon Peyton Jones, Amr Sabry.

Exceptions

Exception Handling in CLU. B. H. Liskov, A. Snyder.
IEEE Transactions on Software Engineering. Volume 5 Issue 6, November 1979.

Zastre, Michael J., and R. Nigel Horspool. “Two Techniques for Improving the Performance of Exception Handling.” In Proceedings of ECOOP’05 Workshop on Exception Handling in Object-Oriented Systems, p. 63. 2005.

Zastre, Michael. “The case for exception handling.” Doctoral dissertation, 2004.

Cabada, R.Z. (2003). Design and implementation of exception handling with zero overhead in functional languages (CS-2003-14). Melbourne, FL. Doctoral dissertation. Florida Institute of Technology.

Foreign Calls

A Portable C Interface for Standard ML of New Jersey. Lorenz Huelsbergen. 1996.

BABEL’01, First International Workshop on Multi-Language Infrastructure and Interoperability.

A framework for interoperability. K Fisher, R Pucella, J Reppy. 2001.

No-Longer-Foreign: Teaching an ML compiler to speak C “natively” Matthias Blume. 2001.

Calling Hell from Heaven and Heaven from Hell Simon Peyton Jones, Erik Meijer, Daan Leijen, and Sigbjörn Finne. 1999.

Remote procedure calls

Andrew Birrel, RPCs?

Multicore GC

Multicore garbage collection with local heaps Simon Marlow and Simon Peyton Jones ISMM’11 http://dl.acm.org/citation.cfm?doid=1993478.1993482

Garbage collection for multicore NUMA machines Sven Auhagen, Lars Bergstrom, Matthew Fluet, and John Reppy MSPC’11 http://dl.acm.org/citation.cfm?doid=1988915.1988929

Transactions

Software Transactional Memory in Haskell, Peyton Jones, Harris, and Herlihy.