Samuel Z. Guyer
July 5, 2014 The Soundiness Manifesto is accepted for publication in CACM
Fall 2014 -- COMP 105: Programming Languages
I work in a variety of areas of programming language research, including compilers, optimizations, program analysis, and run-time systems. I am particularly interested in techniques that increase communication and cooperation between the runtime system and the programmer, and among runtime system components. Projects are listed below in roughly chronological order starting with the most current.
Garbage Collection for Server Applications
We are currently looking at new algorithms for garbage collection specifically targeting server applications where heaps are very large, and the time-space tradeoffs are complex. Publications are in the works!
We are working on several tools and techniques for understanding the structure of program heaps. Elephant Tracks is a highly precise GC tracing tool based on the Merlin Algorithm (see software). HeapViz is a tool for interactive visualization of heap snapshots.
We developed a family of techniques for checking heap properties at runtime by piggybacking on the garbage collector. They enable very efficient checking of complex properties, such as data structure invariants.
Dynamic bug diagnosis
The idea behind these projects is to collect extra information (cheaply) at runtime that enable better diagnosis of program failures. Origin tracking encodes the origin of a null reference in its value for use in a null pointer exception. Breadcrumbs encode a full stack trace as single value.
Compiler-assisted Garbage Collection
We developed two compiler-based techniques for helping improve the efficiency of garbage collection. Colocation is a form of pretenuring that instruments allocation sites with a "colocation object" that determines where the new object should reside. FreeMe is a static analysis for automatic individual object reclamation, which helps reduce the burden on the collector.
Static analysis for security
The key novelty in this work is a static analysis algorithm that adapts its precision to the client problem. It starts with a fast flow-insensitive, context-insensitive analysis, which it monitors to determine where precision is lost. It then constructs a fine-grained custom precision policy that is used in a second pass of the analysis.
My dissertation is about providing compiler support for libraries. Libraries are essentially domain-specific languages without compiler support. Our key contribution is an annotation language for expressing library-specific analyses and optimization.
Nathan Ricci -- PhD student working on garbage collection for large server applications
Diogenes Nunez -- PhD student working on memory management
Raoul Veroy -- PhD student working on heap visualization
Mike Shah -- PhD student working on analysis of concurrent programs
Karl Cronburg -- PhD student working on new kinds of debuggers
Sunjay Bhatia -- Undergrad working on profiling Android applications
Eddie Aftandilian (PhD) now at Google
We have built a GC tracing tool for Java based on the Merlin algorithm that is implemented using a combination of bytecode rewriting and JVMTI callbacks, so it can be used with any JVM that implements the expected APIs. See the Elephant Tracks web-page for downloads and documentation.
Updated August 2014