LFCS/ICSA Joint Seminar: Laurence Tratt
Experiences of implementing a VM with RPython
Programming language designers face a horrible dilemma when it comes to implementing their languages: too little implementation, and it will be laughed at as too slow; too much, and it will divert energy away from design. Lacking the manpower to make a plausibly fast implementation, many interesting language design ideas have faded unfairly into obscurity.
In this talk I look at a new mode of creating "fast enough virtual machines in fast enough time" Virtual Machines (VMs), using the meta-tracing JIT language RPython. Unlike previous approaches, RPython creates VMs that automatically come with a JIT customised for the language being interpreted. RPython has been used to implement a new VM for Python that gives an average speed-up of 5x over the stock VM, and thus demonstrably scales to "real" languages.
I will share my experiences of creating an RPython VM for the Converge language (http://convergepl.org/) to replace the existing C VM. The new VM executes between 3x and 10x faster than the old VM, despite taking significantly less work to create.
I will outline: how RPython works; what a VM created using it looks like; the trade-offs of using RPython; as well as thoughts for the future of similar approaches.


