Hans-Juergen Boehm

Hans-Juergen Boehm

Hans Boehm joined Google as a software engineer in the Android runtime group in 2014. Before that he held various positions at the University of Washington, Rice University, Xerox PARC, SGI (on the same campus as now), and most recently as research manager at HP Labs. He is an ACM Fellow.

Research Areas

Authored Publications
Google Publications
Other Publications
Sort By
  • Title
  • Title, descending
  • Year
  • Year, descending
    Preview abstract The real numbers are pervasive, both in daily life, and in mathematics. Students spend much time studying their properties. Yet computers and programming languages generally provide only an approximation geared towards performance, at the expense of many of the nice properties we were taught in high school. Although this is entirely appropriate for many applications, particularly those that are sensitive to arithmetic performance in the usual sense, we argue that there are others, where it is a poor choice. If arithmetic computations and result are directly exposed to human users who are not floating point experts, floating point approximations tend to be viewed as bugs. For applications such as calculators, spreadsheets, and various verification tasks, the cost of precision sacrifices are high, and the performance benefit is often not critical. We argue that although previous attempts to provide accurate and understandable results for such applications using the recursive reals, were great steps in the right direction, they do not suffice. Comparing such numbers diverges if they are equal. But in many cases we cannot produce results expected by users without resolving equality of numbers. We propose an API for such a real number type, describe a detailed, and surprisingly compact and simple implementation, and demonstrate its utility. The approach relies heavily on classical number theory results. The resulting arithmetic, which takes advantage of these partial decision procedures, is used in a calculator application with more than 100 million users. View details
    Small-data computing: Correct calculator arithmetic
    Communications of the ACM (CACM Vol. 60 No. 8, August 2017), 60(2017), pp. 44-49
    Preview abstract Calculators conventionally use some flavor of fixed precision floating point arithmetic. The bundled Android 6.0 Marshmallow calculator instead uses demand-drive evaluation or “constructive real” arithmetic to guarantee fully accurate results. We explain why this matters, the opportunities it creates, and the challenges in incorporating constructive real arithmetic in a tool aimed at a very broad audience. View details
    Makalu: Fast Recoverable Allocation of Non-volatile Memory
    Kumud Bhandari
    Dhruva R. Chakrabarti
    OOPSLA 2016, ACM, pp. 677-694 (to appear)
    Preview abstract Byte addressable non-volatile memory (NVRAM) is likely to supplement, and perhaps eventually replace, DRAM. Applications can then persist data structures directly in memory instead of serializing them and storing them onto a durable block device. However, failures during execution can leave data structures in NVRAM unreachable or corrupt. In this paper, we address memory management of non-volatile memory, offering an integrated allocator and garbage collector that maintains internal consistency, minimizes memory leaks, and is efficient in the face of failures. We show that a careful allocator design can both support a less restrictive and much more familiar programming model. By lazily persisting non-essential metadata and by employing a post-failure recovery-time garbage collector, the per allocation persistence overhead is greatly reduced. Experimental results show that the resulting online speed and scalability of our allocator are comparable to well-known transient allocators and significantly better than state-of-the-art persistent allocators. View details
    Outlawing ghosts: avoiding out-of-thin-air results
    Brian Demsky
    Workshop on Memory Systems Performance and Correctness (MSPC), ACM, New York, NY(2014)
    Preview
    Durability Semantics for Lock-based Multithreaded Programs
    Dhruva R. Chakrabarti
    HotPar(2013)
    Can seqlocks get along with programming language memory models?
    MSPC(2012), pp. 12-20
    On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code
    Pramod G. Joisha
    Robert S. Schreiber
    Prithviraj Banerjee
    Dhruva R. Chakrabarti
    ACM Trans. Program. Lang. Syst., 34(2012), pp. 9
    IFRit: interference-free regions for dynamic data-race detection
    Laura Effinger-Dean
    Brandon Lucia
    Luis Ceze
    Dan Grossman
    OOPSLA(2012), pp. 467-484
    You don't know jack about shared variables or memory models
    Sarita V. Adve
    Commun. ACM, 55(2012), pp. 48-54
    A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code
    Pramod G. Joisha
    Robert S. Schreiber
    Prithviraj Banerjee
    Dhruva R. Chakrabarti
    POPL(2011), pp. 623-636
    Memory Models
    Sarita V. Adve
    Encyclopedia of Parallel Computing(2011), pp. 1107-1110
    Extended sequential reasoning for data-race-free programs
    Laura Effinger-Dean
    Dhruva R. Chakrabarti
    Pramod G. Joisha
    MSPC(2011), pp. 22-29
    Performance implications of fence-based memory models
    MSPC(2011), pp. 13-19
    The runtime abort graph and its application to software transactional memory optimization
    Dhruva R. Chakrabarti
    Prithviraj Banerjee
    Pramod G. Joisha
    Robert S. Schreiber
    CGO(2011), pp. 42-53
    How to Miscompile Programs with "Benign" Data Races
    Multi-Core Memory Models and Concurrency Theory (Dagstuhl Seminar 11011)
    Ursula Goltz
    Holger Hermanns
    Peter Sewell
    Dagstuhl Reports, 1(2011), pp. 1-26
    A solid foundation for x86 shared memory: technical perspective
    Commun. ACM, 53(2010), pp. 88
    Memory models: a case for rethinking parallel languages and hardware
    Sarita V. Adve
    Commun. ACM, 53(2010), pp. 90-101
    Conflict exceptions: simplifying concurrent language semantics with precise hardware exceptions for data-races
    Brandon Lucia
    Luis Ceze
    Karin Strauss
    Shaz Qadeer
    ISCA(2010), pp. 210-221
    Garbage collection in the next C++ standard
    Mike Spertus
    ISMM(2009), pp. 30-38
    Foundations of the C++ concurrency memory model
    Sarita V. Adve
    PLDI(2008), pp. 68-78
    Reordering constraints for pthread-style locks
    PPOPP(2007), pp. 173-182
    The constructive reals as a Java library
    J. Log. Algebr. Program., 64(2005), pp. 3-11
    Threads cannot be implemented as a library
    PLDI(2005), pp. 261-268
    The space cost of lazy reference counting
    POPL(2004), pp. 210-219
    An almost non-blocking stack
    PODC(2004), pp. 40-49
    Destructors, finalizers, and synchronization
    POPL(2003), pp. 262-272
    Bounding space usage of conservative garbage collectors
    POPL(2002), pp. 93-100
    SIGPLANet - A Modest Proposal for SIGPLAN in the 21<sup>st</sup> Century
    Thomas Ball
    SIGPLAN Notices, 36(2001), pp. 1-2
    Letter from the Newly Elected Chair
    SIGPLAN Notices, 36(2001), pp. 1-2
    Reducing Garbage Collector Cache Misses
    ISMM(2000), pp. 59-64
    Understanding memory allocation of scheme programs
    Manuel Serrano
    ICFP(2000), pp. 245-256
    Simple Garbage-Collector-Safety
    PLDI(1996), pp. 89-98
    Ropes: An Alternative to Strings
    Russell R. Atkinson
    Michael F. Plass
    Softw., Pract. Exper., 25(1995), pp. 1315-1330
    Space Efficient Conservative Garbage Collection
    PLDI(1993), pp. 197-206
    Implementing Multiple Locks Using Lamport's Mutual Exclusion Algorithm
    Alan J. Demers
    Christ Uhler
    LOPLAS, 2(1993), pp. 46-58
    Space efficient conservative garbage collection (with retrospective)
    Best of PLDI(1993), pp. 490-501
    Mostly Parallel Garbage Collection
    Alan J. Demers
    Scott Shenker
    PLDI(1991), pp. 157-164
    Combining Generational and Conservative Garbage Collection: Framework and Implementations
    Alan J. Demers
    Mark Weiser
    Barry Hayes
    Daniel G. Bobrow
    Scott Shenker
    POPL(1990), pp. 261-269
    Optimizing Programs over the Constructive Reals
    Vernon A. Lee Jr.
    PLDI(1990), pp. 102-111
    Type Inference in the Presence of Type Abstraction
    PLDI(1989), pp. 192-206
    Garbage Collection in an Uncooperative Environment
    Mark Weiser
    Softw., Pract. Exper., 18(1988), pp. 807-820
    Constructive real interpretation of numerical programs
    PLDI(1987), pp. 214-221
    Parallel Attribute Grammar Evaluation
    Willy Zwaenepoel
    ICDCS(1987), pp. 347-355
    Exact Real Arithmetic: A Case Study in Higher Order Programming
    Robert Cartwright
    Mark Riggle
    Michael J. O'Donnell
    LISP and Functional Programming(1986), pp. 162-173
    Implementing RUSSELL
    Alan J. Demers
    SIGPLAN Symposium on Compiler Construction(1986), pp. 186-195
    Partial Polymorphic Type Inference Is Undecidable
    FOCS(1985), pp. 339-345
    Side Effects and Aliasing Can Have Simple Axiomatic Descriptions
    ACM Trans. Program. Lang. Syst., 7(1985), pp. 637-655
    A Logic for Expressions with Side-Effects
    POPL(1982), pp. 268-280