Presented by

  • Angus Atkinson

    Angus Atkinson
    https://angusat.kinson.it

    Angus (he/him) is a computer science student at the Australian National University in Canberra. Currently he is learning about computer systems, (micro)architectures, high performance computing, cyber security, AI, and everything in between. Angus was first introduced to programming by a friend at the age of 11, and has been hacking away and breaking things ever since. Although he's often been known to list his most recently learned programming language as his favourite, Angus considers himself to be a true Pythonista at heart. When he's not programming, Angus enjoys waging virtual war against his friends (through videogames), playing adult make-believe (Dungeons & Dragons), practicing his primal hand-eye coordination instincts (in Tennis), and sparring with big bamboo swords (only when wearing full Kendo armour, of course).

Abstract

If you've learned a new programming language in the past 20 years, there's a good chance it features automatic memory management. One of the most popular ways of managing memory is through a garbage collector (GC), which frees memory by regularly deallocating unreferenced data. Optimising programming languages' GC algorithms and implementations can be key to improving the performance of large scale, low-latency and high-throughput systems. However, state-of-the-art GC algorithms can be difficult to implement, which often results in new language designers trading performance for simplicity. Additionally, garbage collectors are often tightly integrated into the language runtime, which makes it difficult for existing languages to optimise their GC or switch to new algorithms altogether. In this talk, we introduce the Memory Management Toolkit (MMTk), an Open Source runtime-agnostic garbage collection framework being developed by researchers at ANU. MMTk provides developers with a large library of high-performance GC algorithms (ranging from tried-and-tested to cutting-edge), exposed behind a unified bidirectional API. The project aims to simplify GC implementation for both researchers and the developers of new & existing programming languages alike. We discuss the lessons learned from integrating MMTk into MRI, the main interpreter for the Ruby programming language.