Resume for Neal M Gafter, Ph.D.

Los Gatos, California, USA
voicemail: (425) 835 - 3734


Ph.D. in Computer Science with over 40 years of experience in programming language design and implementation. I am seeking an opportunity to apply my experience in compiler technology while learning about new domains, algorithms, and techniques. I prefer a combination of research and development.

Work Highlights

September 2020 - Present
Differentiable and Probabilistic Programming Languages

(March - November 2022) Participated in the development of a Probabilistic Programming Language, Bean Machine. Rewrote the execution (inference) engine from scratch, achieving a 40% performance speedup with significantly less code (by tracing the automatically differentiated evaluation and optimizing the resulting symbolic form). See

(September 2020 - March 2022) Developed a Differentiable Programming framework for efficiently computing the derivatives of functions expressed in Kotlin, for use in Machine Learning, physics simulations, and other applications. See

September 2008 - September 2020
Visual Studio Managed Languages

Working with a team of compiler developers, rewrote the C# and VB.NET compilers from scratch as part of the Roslyn project. Designed and implemented a number of novel language features, from asynchronous programming to pattern-matching.

Google Inc.
July 2004 - September 2008

Designed and implemented the distributed storage architecture for Google Calendar.

Sun Microsystems, Java Software Division
October 2000 - July 2004

Primary designer and developer for Sun's Java Programming Language compiler, language, and related tools. Added many language features, including annotations and generics. Brought the (known) compiler bug count to zero in Java 1.4.2.

Sun Microsystems Software Developer Products
June 1995 - March 1998
Technical Lead, C++ Compiler Front End

Led a team of developers in planning and implementing compiler changes to track the evolving C++ standard.



Ph.D. Computer Science, May 1990; M.S. Computer Science, May 1984
University of Rochester, Rochester, New York
Thesis topic: Large Scale Parallelism in Incremental Compilation.

Detailed new algorithms and data structures that make it possible to implement a fully data-parallel incremental compiler for a conventional programming language, with the goal of reducing the response time of the programming environment. These techniques were later used in the implementation of the Roslyn project at Microsoft (2009+).

Selected Publications and Patents

Coarsening Optimization for Differentiable Programming, with Xipeng Shen et al. OOPSLA'2021, October 2021.

United States Patent number 10564944: Efficient immutable syntax representation with incremental change. February 18, 2020.

United States Patent number 9075667: Dynamic binding directed by static types. July 7, 2015.

United States Patent number 9003377: Efficient resumption of co-routines on a linear stack. April 7, 2015.

United States Patent number 8549506: Resumable methods. October 1, 2013.

United States Patent number 7627569: Document access control. December 1, 2009.

United States Patent number 7263687: Object-oriented enumerated type facility. With Joshua Bloch, August 28 2007.

United States Patent number 7080369: Method and apparatus for producing compressed compiler products. With Lawrence Crowl, July 2006.

Java Puzzlers: Traps, Pitfalls, and Corner Cases, Book with Joshua Bloch, June 2005.

Adding Wildcards to the Java Programming Language. With Mads Torgersen, Christian Plesner Hansen, Erik Ernst, Peter von der Ahe, and Gilad Bracha. In the special issue of OOPS 2004, the Journal of Object Technology, December 2004.

United States Patent number 6718438: Using feedback to determine the size of an object cache. With Brian Lewis, Bernd Mathiske, and Michael J. Jordan. April 2004.

United States Patent number 5666296: Method and means for translating a data-dependent program to a data flow graph with conditional expression. September 9, 1997.

Parallel Incremental Compilation. (PhD Dissertation) University of Rochester Technical Report 349, June 1990.