Paul Bone

About Me

Declarative programming, programming language implementation, parallelism and concurrency. I am a talented software engineer and computer scientist. My interests include programming languages, declarative programming, programming language implementation, parallelism and concurrency. My Ph.D. thesis was on Automatic Parallelisation for Mercury.



I have been contributing to the Open Source Mercury programming language since 2008. Mercury is a declarativly pure logic/functional language. I started the Plasma programming language in mid-2015. Plasma is also a pure declrative language, but its goal is to find the comprimise between declrative and imperative programming.

Recent blog posts

— More about Memory Fragmentation in BDW GC
This is a follow up article about memory fragmentation. I show how heap usage and utilisation changes over time for Prince and demonstrate the kind of information that can be extracted from BDW GC without too much effort.
— How to Allocate Memory — Code Generation
How do you generate code that allocates memory? This isn't about memory management algorithms, or language design concepts. But how to translate Plasma code that allocates memory (like use of a data constructor) into PZ abstract machine code.
— Explaining GADTs
In this article I work through a problem that can be solved elegantly with GADTs
— Memory Fragmentation in The Boehm-Demers-Weiser Garbage Collector
In this article I explore an interesting memory fragmentation situation in the BDW Garbage Collector. This covers a program that crashes due to fragmentation (despite 288MB free within the heap), BDWBC's heap organisation and why the 288MB cannot be used for this allocation and some potential solutions.
— Code Loading and Security
In this article I explain the interaction between execute protection and code loading.

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.