Paul Bone

About Me

I am a talented software engineer and computer scientist. My interests include programming language implementation and performance, including parallelism and concurrency.

By day I work for Mozilla where I am a humble garbage collector, sweeping up unused objects from Firefox's JavaScript heap. Err, I mean Senior Software Engineer, I work on the garbage collector for Firefox's JavaScript engine.

By night I transform into my alter-ego and work on the new Plasma programming language, which aims to bring the worlds of functional and imperative programming together! With the powers of these worlds unified we will usher in a new age of large scale, reliable, high-performance parallel and concurrent software.



I started programming when I was 12 with QBasic, by the time I was 15 I was teaching myself C/C++. After high school I studied computer science at University then joined the work force full-time. Shortly afterwards I was introduced to functional programming; intoxicated by the safety of pure declarative languages and the challenge of multicore computing I decided to peruse a Ph.D. on this topic.

After completing my Ph.D. on Automatic Parallelisation for Mercury I re-joined the work force supporting Mercury (a logic-functional language) in production. I used the skills developed during my Ph.D. to analyse and improve the performance of Mercury programs. Now I work on the garbage collector in Firefox's JavaScript engine.

In mid-2015 I started work on the Plasma programming language in my spare time. Plasma is a pure declarative language. Its goals are to find a compromise between declarative and imperative programming and to provide state-of-the-art parallel and concurrent programming features.

When I'm programming, writing, reading or thinking about programming I like to spend time with my family, go alpine skiing and sometimes play the flute.

Recent blog posts

— Disassembling JITed code in GDB
Some notes of how to disassemble JITed code in gdb
— Upcomming and Recent talks
Short announcment about upcomming Compose Melbourne 2018 talk and past Haskell Meetup talk.
— Type correctness in JIT code
I like static type checks, but they can't check everything, particularly when working on a GC or JIT. This neat C++ feature helps us ensure we can have more type-correct code in the SpiderMonkey JIT.
— Mentoring
Recently I had the opportunity to do some mentoring and would like to reflect and share some insights.
— A Simple Bytecode Interpreter
In this article I'm going to explain how basic bytecode interpreters work, such as the first one written for Plasma's bytecode format.

See all blog posts.


Presentations and interviews

The publications of this section include conference presentations, talks and other interviews. They are not academic / peer-reviewed, however they're probably more accessible for most readers. They're probably a good place to start for an overview of my work or reporting on other people's work.

Journal articles and conference papers

The publications in this section are academic papers (conference papers, journal articles and dissertations. They are more academically rigorous than the presentations above and have a lot more detail. They're useful if you're looking for detailed information about my work.