Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP

hp.com home


Hans J. Boehm


printable versionprintable version
» 

HP Labs

» Research
» News and events
» Technical reports
» About HP Labs
» Careers @ HP Labs
» People
» Worldwide sites
» Downloads
Content starts here
Hans Boehm Work Phone Number: (650) 857-3406

HP Labs Central Phone Number: (650) 857-1501

Email addresses: Hans.Boehm@hp.com boehm@acm.org

Physical address: 1501 Page Mill Rd., MS 1183, Palo Alto, CA, 94304

General
I have been at HP Labs since September, 1999. I am now a member of the Intelligent Infrastructure Lab. I manage a group focussed on parallel and distributed programming. A long time ago I was in the Linux Technologies project.

Prior to that I worked/studied at

1996-1999
SGI
1989-1996
Xerox PARC
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)
Current projects

Things I've worked on recently:

  • Exploring alternative approaches to shared memory parallel programming. We are looking at how to program with atomic sections instead of locks, and trying to understand what the programming interfaces should look like. We are exploring a variety of issues related to the compiler analysis of multithreaded programs that should help to make some of these ideas more feasible.
  • Helping to uncover and remove obstacles to writing reliable multithreaded code. Unfortunately, programming language definitions, and sometimes even computer architecture specifications have been so vague that they can't possibly serve as a basis for teaching programmers, or as reasonable guidelines for compiler writers. I participated in the revision of the Java "memory model", and more recently led a successful effort to properly define shared variable semantics in C and C++. This was part of a larger effort to add thread support to those languages.
  • Continued work on our garbage collector, though most of the recent work there has been done by Ivan Maidanski. The newly published C++11 standard explicitly allows this kind of garbage collection, though it does not require implementations to support it.
I chaired ACM SIGPLAN from 2001 to 2003. I am co-Chair for HotPar '12, and General Chair for PLDI 2013.

Interest areas and 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.
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. A package to support (somewhat) portable use of atomic memory operations was developed and is distributed as part of the qprof project.
Java implementation and GCJ
I implemented the hash-table-based synchronization mechanism, and a few other pieces for GCJ, the GNU static Java compiler. I also helped build some of the underlying threads infrastructure on Itanium Linux. Slides for an ancient presentation are here.
Qprof and atomic_ops
I built a simple profiling toolkit for Linux, and some of the underpinnings to make that possible. The underpinnings include better support for lock-free data structures, to make it possible to run interesting code in signal handlers.
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 a several papers, as well as a Calculator implementation that is still in occasional use. More recently, I reimplemented both the calculator and library in Java, with some new twists.
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, but hasn't propagated very far. 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).
The Russell Programming Language
At Cornell, the University of Washington, and at Rice, I worked on the semantics and implementation of a polymorphically-typed programming language called Russell. A rather dated implementation can still be found here. The language was mostly designed by Donahue and Demers at Cornell. Unfortunately, some of the good ideas from this and related designs (e.g."templates" with real separate type checking and compilation) still haven't completely made it into mainstream programming languages. (Fortunately, neither did the bad ideas.)


Slides from some recent talks


Publications
A list of my selected paper publications is here.

Miscellaneous
The relicensed version of Joel Bartlett's 1993 Scheme2c system is here. This is published here for reference. You probably want a more modern update (check http://scheme2c.alioth.debian.org). Please be careful unpacking the original version. As with much software of the time, it unpacks directly into the current directory.
Boehm family personal home page (external to HP).

Privacy statement Using this site means you accept its terms Feedback to HP Labs
© 2009 Hewlett-Packard Development Company, L.P.