Hans Boehm

Hans-J. Boehm

Email address: boehm@acm.org

Physical location: Palo Alto, CA

General

I am a software engineer at Google, where I've been since March 2014. I now work mostly on concurrent programming issues, both generally, and focussed on Android. I am an ACM Fellow, and a past Chair of ACM SIGPLAN (2001-2003). Until late 2017 I chaired the ISO C++ Concurrency Study Group (WG21/SG1), where I continue to actively participate.

Publications

A list of my selected publications is here.

Where I've been

In the past I've worked or studied at:

2014-
Google
1999-2014
HP Labs (Researcher, Research Manager)
1996-1999
SGI (Software Engineer)
1989-1996
Xerox PARC (Researcher)
1984-1989
Rice University (Assistant and Associate Professor)
1982-1984
University of Washington (Assistant Professor)
1978-1983
Cornell University (graduate student)
1974-1978
University of Washington (undergraduate student)

Past Projects

Things I've worked on more recently:


Some Past Projects
Conservative Garbage Collection
This work was started at Rice University, where it grew out of work on the implementation of the Russell programming language, which was jointly developed with Alan Demers. It was developed substantially further at Xerox PARC, SGI, and HP, with the help of many other contributors. It resulted in a generally available and widely used garbage collector library, as well as a number of publications. It is currently maintained primarily by Ivan Maidanski.
Multiprocessor Synchronization Algorithms
I have worked on fast lock implementations for Java virtual machines, and I'm generally interested in fast multiprocessor synchronization. I coauthored a paper on practical implementation of monitor locks without hardware support. I developed libatomic_ops, which was useful at the time, and helped us to avoid some of its mistakes in the later design of C++11 atomics.
Constructive Real Arithmetic
Together with Corky Cartwright, Vernon Lee, and others, I explored practical implementations of "exact" real computer arithmetic. Numbers are represented exactly internal to the computer, in a form that allows evaluation to any requested precision for display. This resulted in several papers and a sequence of implementations, including a Java one. It served as the basis of the more recent work on arithmetic in Google's Android calculator.
Ropes or Scalable Strings
The Xerox Cedar environment relies heavily on a scalable implementation of strings, i.e. sequences of characters represented as trees. (The Cedar implementation was developed by Russ Atkinson, Michael Plass, and others. Similar ideas were also developed elsewhere.) This idea simplifies many interesting software systems. I reimplemented it both in C at Xerox (the cord package, now a part of the garbage collector distribution) and in a very different form for C++ at SGI (the "rope" package in the SGI STL).


Slides from some recent talks


Miscellaneous
Boehm family personal home page.