Doctor Chris Seaton
I'm a Researcher (Senior Staff Engineer) at Shopify, where I work on the Ruby programming Language, and a Visitor at the University of Manchester.
I was formerly a Research Manager at the Oracle Labs Virtual Machine Research Group, where I led the TruffleRuby implementation of Ruby, and worked on other language and virtual machine projects. Before this I completed a PhD at Manchester where I researched programming languages and irregular parallelism, and an MEng at the University of Bristol on languages with mutable syntax and semantics.
In my spare time I'm Squadron Leader of the Cheshire Yeomanry squadron of the Queen's Own Yeomanry, Cheshire's historic reserve light cavalry squadron.
Projects
TruffleRuby
TruffleRuby started as my internship project at Oracle Labs in early 2013. It is an implementation of the Ruby programming language on the JVM, using the Graal JIT compiler and the Truffle AST interpreter framework. RubyTruffle can achieve peak performance well beyond that possible in JRuby at the same time as being a significantly simpler system. In early 2014 it was open sourced and integrated into JRuby, then in 2017 it became its own project, and now it is part of GraalVM. It was the subject of my PhD, and since 2019 Shopify has sponsored development.
- Finalist, Ruby Prize, 2016
Mersey Burns
Mersey Burns is a free iPhone® app for doctors to calculate how much fluid to give to a burns patient, making a traditional pen-and-paper method faster and more accurate. It is the first app in the UK regulated and CE marked as a medical device.
- Winner, Excellence in Mobile Healthcare and overall winner, eHealth Awards, 2013
- Highly Commended, Improving Care with Technology, Health Service Journal Awards, 2013
- Highly Commended, Innovative Mobile App of the Year, BCS UK IT Industry Awards, 2013
- Highly Commended, eHealth Awards, 2012
- Winner, NHS North West Innovations Awards, 2011
The Ruby Bibliography
The Ruby Bibliography is the central list of academic research papers and theses about the Ruby programming language. I compile and curate the list as a community service.
The Ruby Compiler Survey
The Ruby Compiler Survey is a project cataloguing, preserving, and dissecting compilers for the Ruby programming language.
Katahdin
Katahdin was my master’s work at the University of Bristol. It is a research programming language where the syntax and semantics of the language are mutable at runtime. This allows for multiple languages to be implemented in a single runtime, and for different languages to be used in different parts of the same program, the same function, or even the same line. My research built on contemporary work on parsing expression grammars and packrat parsing.
- Winner, Hele Shaw Prize, 2007
Rhizome
Rhizome is a paedagogical just-in-time compiler (JIT) for Ruby, implemented in pure Ruby. It's not really designed to be used. It's designed to show you how JITs work and why perhaps a JIT for Ruby should be written in Ruby. It's also designed to try to go beyond the trivial aspects of a simple template compiler that introductions to JITs often show - instead it has a proper intermediate representation (IR) and shows how more advanced parts of compilers such as lowering and schedulers work, that people don't usually cover.
Publications
All publications hosted here are the authors' pre-prints or otherwise freely available.
Theses
-
C. Seaton. Specialising Dynamic Techniques for Implementing the Ruby Programming Language. PhD thesis, University of Manchester, 2015.
Abstract, PDF
Finalist, Ruby Prize -
C. Seaton. A programming language where the syntax and semantics are mutable at runtime. MEng thesis, University of Bristol, 2007.
PDF, Code, Slides
Winner, Hele Shaw Prize
Research Papers, Journal Articles and Editorials
-
K. Menard, C. Seaton, and B. Daloze. Specializing Ropes for Ruby. In Proceedings of 15th International Conference on Managed Languages & Runtimes (ManLang), 2018.
PDF -
M. Van De Vanter, C. Seaton, M. Haupt, C. Humer, and T. Würthinger. Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools. In The Art, Science, and Engineering of Programming, Vol. 2, No. 3, 2018.
PDF -
M. Grimmer, R. Schatz, C. Seaton, T. Würthinger, M. Luján. Cross-Language Interoperability in a Multi-Language Runtime. In ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 40, No. 2, 2018.
PDF -
T. Würthinger, C. Wimmer, C. Humer, A. Wöss, L. Stadler, C. Seaton, G. Duboscq, D. Simon, M. Grimmer. Practical Partial Evaluation for High-Performance Dynamic Language Runtimes. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI), 2017.
PDF -
C. Seaton. AST Specialisation and Partial Evaluation for Easy High-Performance Metaprogramming. In Proceedings of the 1st Workshop on Meta-Programming Techniques and Reflection (META), 2016.
PDF, Slides -
M. Grimmer, C. Seaton, R. Schatz, T. Würthinger, H. Mössenböck. High-Performance Cross-Language Interoperability in a Multi-Language Runtime. In Proceedings of 11th Dynamic Languages Symposium (DLS), 2015.
PDF -
B. Daloze, C. Seaton, D. Bonetta, H. Mössenböck. Techniques and Applications for Guest-Language Safepoints. In Proceedings of the 10th Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems Workshop (ICOOOLPS), 2015.
PDF -
M. Grimmer, R. Schatz, C. Seaton, T. Würthinger, H. Mössenböck. Memory-safe Execution of C on a Java VM. In Proceedings of the 10th Workshop on Programming Languages and Analysis for Security (PLAS), 2015.
PDF -
S. Marr, C. Seaton, S. Ducasse. Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises. In Proceedings of the 36th Conference on Programming Language Design and Implementation (PLDI), 2015.
PDF -
M. Grimmer, C. Seaton, T. Würthinger, H. Mössenböck. Dynamically Composing Languages in a Modular Way: Supporting C Extensions for Dynamic Languages. In Proceedings of the 14th International Conference on Modularity, 2015.
PDF -
A. Wöß, C. Wirth, D. Bonetta, C. Seaton, C. Humer, and H. Mössenböck. An object storage model for the Truffle language implementation framework. In Proceedings of the International Conference on Principles and Practices of Programming on the Java Platform (PPPJ), 2014.
PDF -
J. Barnes, A. Duffy, N. Hamnett, J. McPhail, C. Seaton, K. Shokrollahi, M. I. James, P. McArthur, and R. Pritchard-Jones, The Mersey Burns App: evolving a model of validation, Emerg Med J, pp. emermed–2013–203416, Nov. 2014.
PDF (BMJ paywall) -
C. Seaton, M. L. Van De Vanter, and M. Haupt. Debugging at full speed. In Proceedings of the 8th Workshop on Dynamic Languages and Applications (DYLA), 2014.
PDF, Code -
D. Goodman, S. Khan, C. Seaton, Y. Guskov, B. Khan, M. Luján, and I. Watson. DFScala: High level dataflow support for Scala. In Proceedings of the 2nd International Workshop on Data-Flow Models For Extreme Scale Computing (DFM), 2012.
PDF, Code, Slides -
S. S. Sofos, R. Pritchard-Jones, C. Seaton, J. Dingley, P. McArthur, and K. Shokrollahi. Medical innovation—a starting point for plastic surgeons. Annals of Plastic Surgery, 69(3):225–7, Sep 2012.
Publisher -
C. Seaton, D. Goodman, M. Luján, and I. Watson. Applying dataflow and transactions to Lee routing. In Proceedings of the 7th Workshop on Programmability Issues for Heterogeneous Multicores (MULTIPROG), 2012.
PDF, Slides
Winner, Best Paper Award
Summer Schools
-
Chris Seaton. Self-Specialising Interpreters and Partial Evaluation. At the Metaprogramming Summer School. 2016.
Slides -
Chris Seaton. JRuby+Truffle: Why it's important to optimise the tricky parts. At the Virtual Machines Summer School (VMSS). 2016.
Slides, Video -
Chris Seaton. Implementing Ruby Using Truffle and Graal. At the European Conference on Object Oriented Programming (ECOOP) Summer School. 2014.
Slides
Other Presentations and Blog Posts
-
Chris Seaton. Ruby's Core Gem. RubyConf. 2022.
Slides -
Chris Seaton. Ruby's Call-Site Behaviour - An Advertisement for Sophie Kaleba's Research. Lightning Talk, RubyConf Mini. 2022.
Slides -
Chris Seaton. A Hobby Gotten Out of Hand: Why I'm in the Army Reserve—an explainer for my friends in tech. Blog post. 2022.
Blog post -
Maple Ong and Chris Seaton. Call-Target Agnostic Keyword Arguments. At the Graal Workshop. 2022.
Video, slides -
Stefan Marr, Octave Larose, Sophie Kaleba, and Chris Seaton. Truffle Interpreter Performance without the Holy Graal. At the Graal Workshop. 2022.
Slides -
Chris Seaton. A History of Compiling Ruby. At RubyConf. 2021.
Video, website -
Chris Seaton. Understanding JIT Optimisations By Decompilation. At QCon Plus Online. 2021.
-
Chris Seaton. The Importance of Optimising Little Languages. At VMM. 2021.
Video -
Chris Seaton. Stamping Out Overflow Checks in Ruby. Blog post. 2021.
Blog post -
Chris Seaton. The Future Shape of Ruby Objects. Keynote at RubyKaigi. 2021.
Video, blog post -
Chris Seaton. Seeing Escape Analysis Working. Blog post. 2020.
Blog post -
Chris Seaton. Understanding Graal IR. Keynote at VMIL. 2020.
Video -
Chris Seaton. Understanding Basic Truffle Graphs. Blog post. 2020.
Blog post -
Chris Seaton. Context on STM in Ruby. Blog post. 2020.
Blog post -
Chris Seaton. Seeing Register Allocation Working in Java. Blog post. 2020.
Blog post -
Chris Seaton. Understanding Basic Graal Graphs. Blog post. 2020.
Blog post -
Chris Seaton. Understanding Programs Using Graphs. Blog post. 2020.
Blog post -
Chris Seaton. Visualizing Graal. At Science, Art, Voodoo: Using and Developing The Graal Compiler. 2020.
Slides, video -
Chris Seaton. The TruffleRuby Compilation Pipeline At Wroclove.rb. 2019.
Video, slides -
Chris Seaton. Graal: where it's from and where it's going, keynote. At the Graal Workshop. 2019.
Slides -
Chris Seaton. Ten Things To Do With GraalVM. At Oracle Code One. 2018.
Slides -
Chris Seaton. Low Overhead Polling For Ruby. Blog post. 2018.
Blog post -
Chris Seaton. Top 10 Things To Do With GraalVM. Blog post. 2018.
Blog post -
Eric Sedlar and Chris Seaton. Run Programs Faster with GraalVM. At Oracle Code Boston 2018.
Video -
Chris Seaton. Ruby Objects as C Structs and Vice Versa. Blog post. 2018.
Blog post -
Chris Seaton. Understanding How Graal Works - a Java JIT Compiler Written in Java. At JokerConf 2017.
Video, slides, blog post -
Chris Seaton. Polyglot From the Very Old to the Very New. At PolyConf 2017 (invited keynote).
Video, slides -
Chris Seaton. Turning the JVM into a Polyglot VM with Graal. At Oracle Code London 2017.
Video, slides -
Chris Seaton. Ruby's C Extension Problem and How We're Fixing It. At RubyConf 2016.
Video, slides -
Chris Seaton. Faster Ruby and JavaScript with GraalVM. At JavaOne 2016.
Slides -
Chris Seaton. Using LLVM and Sulong for Language C Extensions. At the LLVM Cauldron. 2016.
Video, slides -
Chris Seaton. Guilt Free Ruby on the JVM. At JavaOne. 2015.
Slides -
Chris Seaton. A Tour Through a New Ruby Implementation. At FOSDEM. 2015.
Slides -
Chris Seaton. Flip-Flops — the 1-in-10-million operator. Blog post. 2015.
Blog post -
Chris Seaton. Deoptimizing Ruby. At RubyConf. 2014.
Video, slides, blog post -
Chris Seaton. Very High Performance C Extensions For JRuby+Truffle. Blog post. 2014.
Blog post -
Chris Seaton. Optimising Small Data Structures in JRuby+Truffle. Blog post. 2014.
Blog post -
Chris Seaton. Pushing Pixels with JRuby+Truffle. Blog post. 2014.
Blog post -
Chris Seaton. Tracing With Zero Overhead in JRuby+Truffle. Blog post. 2014.
Blog post -
Chris Seaton. How Method Dispatch Works in JRuby/Truffle. Blog post. 2014.
Blog post -
Chris Seaton. A Truffle/Graal High Performance Backend for JRuby. Blog post. 2014.
Blog post -
Christian Wimmer and Chris Seaton. One VM to Rule Them All. At the JVM Language Summit. 2013.
Video, slides -
Chris Seaton. The Challenges of Irregular Parallelism. At the University of Manchester Computer Science Research Showcase. 2012.
Video, slides -
Chris Seaton, Medicapps Ltd. Developing an app from idea to market and awards success with no funding. At the Mobile Healthcare Industry Summit. 2012.
Slides -
C. Seaton, D. Goodman, M. Luján, and I. Watson. Applying dataflow and transactions to Lee routing. At the 1st EuroTM Workshop on Transactional Memory (EuroTM). 2012.
Slides
Posters
-
Chris Seaton. The Challenges of Irregular Parallelism. At the University of Manchester School of Computer Science Research Symposium. 2012.
Poster
Winner, Best Poster Award -
Mr R Pritchard Jones, Mr C Seaton, Mr N Hamnett, Mr I James, Professor P McArthur. Mersey Burns Tool — Improving Assessment and Resuscitation. British Association of Plastic and Reconstructive Surgeons Summer Meeting. 2011.
Patents
Qualification
- CEng MBCS
- MEng (Bristol 2007), PhD (Manchester 2015) in computer science
- Stanford Online Machine Learning course (completed with certificate 2016)
Community
- Squadron Leader of C (Cheshire Yeomanry) Squadron, the Queen's Own Yeomanry, reserve military service in a light cavalry squadron
- Academic Visitor at the University of Manchester
- Maintainer of The Ruby Bibliography
- Maintainer of The Ruby Compiler Survey
- Trustee of the Cheshire Yeomanry Association, registered charity 256143
- Contributor to the Oxford Specialist Handbooks in Surgery, Burns, Oxford University Press, 2019
- Technical reviewer, 500 Lines or Less, 2016
- Contributed technical advice to Deploying with JRuby 9k, 2016, and Optimizing Java, 2018
- Program Language Design and Implementation (PLDI) program committee member, 2020, external review committee member, 2019
- Science, Art, Voodoo: Using and Developing The Graal Compiler program committee member, 2021, 2020
- Software Language Engineering (SLE) program committee member, 2020
- Dynamic Languages Symposium (DLS) program committee member, 2019, 2017, 2016, 2014
- Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems Workshop (ICOOOLPS) program committee member, 2020, 2017, organising committee member, 2021.
- JavaOne emerging languages program committee member, 2017, 2016