Professor Peter Buhr worked at Sun Microsystems for his 1993/4 sabbatical on programming language design, which ultimately became Java. He worked on the HP Gelato project from 2003 to 2008 developing advanced Linux software for the Intel Itanium processor. He worked at Google for his 2013/4 sabbatical on the Go programming-language team.
Peter is interested in static type-systems providing polymorphism without the use of nominal inheritance (object-oriented programming). The problem with nominal inheritance is the restrictions it imposes on reuse because of the ridge use of a hierarchy to express relationships among types. Instead he adopts a more flexible approach using duck typing implemented by parametric polymorphism and extensive overloading to provide a more general type-system. This work has resulted in a new dialect of C language, called C∀ (C-for-all).
Peter develops techniques and tools to help understand the dynamic behaviour of a concurrent program with the goal of increasing program performance. This work has produced a toolkit for monitoring, visualizing, and debugging μC++ programs, called MVD.
Peter is also interested in memory-mapped single-level stores, which allow data, including pointers, to be transparently transferred to and retrieved from disk storage implicitly via virtual memory. To handle the address consistency problem, i.e., pointers to addresses that have changed location, exact positioning of data is used so no relocation or adjusting of pointers is necessary. This work has produced a toolkit, called μDatabase, for building persistent data structures using the exact-positioning approach to memory-mapped single-level stores.