Home

ohloh profile for Ian Rogers

Dr Ian Rogers BSc(Hons.), M.Phil., Ph.D, FBCS.

email: rogers.email [at] gmail.com

I am a staff engineer for Google working on the Linux kernel's performance monitoring support, and have been involved in programming languages and performance from mobile to cloud. I am well known for my contributions to Java. I was a tech lead for the ART project within Android. Before this I was a senior engineer at Azul Systems', where we coaxed an x86 to do what previously custom hardware had been necessary for, namely pauseless massively concurrent GC with terabytes of heap. Before this I was a research fellow at the University of Manchester working on the Jamaica project, designing future computer architectures, compilers, binary translators and operating systems. I have had research interests in GPUs, asynchronous hardware, network security, real-time network protocols and e-learning. Before this I was tech lead manager for, and one of the original developers of, what became Apple's Rosetta.

In 2020 I wrote a paper on how to make efficient global register allocators for SSA form that was popular on reddit's r/Compilers. The approach avoids the use of graphs and intervals, is faster and generates code of the same quality. It is inspiring register allocation work in JITs.

I am somewhat well known for reinventing something Mike Buroughs had done before with Learning Locks. This is a treatment of locks where you pass ownership of locks around so that you avoid atomic accesses, unless the lock really is being shared between threads. I've also worked on transactional memory systems.

My most recent public conference work was with ISMM at PLDI 2020:

A talk I gave in 2015 was the keynote at the UK MM-Net workshop: entitled best practices for writing error free garbage collectors. It described how we used C++ static analysis to make the garbage collector in ART correct at compile time. This work relates to efforts to add garbage collection to C++ and improving correctness in garbage collectors by using languages like Rust.

Google IO 2014 was a big one for Google and I'd brought up 64-bit Android and was launching my new Android runtime called ART. I focussed on the GC in my part of the talk as that was a huge differentiator from the Dalvik VM and there is a novel concurrent sticky mark scheme that I'd developed - non-moving pause free GC without read barriers. As the tech lead for the ART garbage collector I laid the foundations of what became its concurrent collector. I was also instrumental in creating the novel software transactional memory class initialization done to create ART's boot image.

Some of my current projects are:

Linux

I work mainly in the performance event subsystem and in the perf command. I was a mentor for the Linux Foundation in the Google Summer of Code 2021.

RISC-V

I am a member of the J-Extension group led by Martin Maas.

Android

Popular mobile phone OS.

In the past my commitments have included:

Managed Runtime Initiative

A new design initiative solving the problems with interactions between operating systems and virtual machines.

Metacircular Research Platform (MRP)

A new metacircular virtual machine design effort, already substantially improving over Jikes RVM.

Google Summer of Code 2008

I was the organization administrator and mentor for Jikes RVM in the Google SoC 2008 and 2007.

Jikes RVM

I was a core team member of the Jikes RVM and its leading contributor for the years up to 2010.

PearColator/binarytranslator.org

I look after an open source Java based dynamic binary translator (x86/PPC/ARM) that are now merged into MRP.

Transitive

My PhD work was part of the foundation for Transitive Technologies where I was a senior engineer and design authority. One technology I was responsible for creating was Apple's Rosetta. Transitive became IBM Manchester lab.

I wrote a book chapter for O'Reilly on metacircular virtual machine design:

Beautiful Architecture book