DLS 2016
Tue 1 Nov 2016 Amsterdam, Netherlands
co-located with SPLASH 2016
Tue 1 Nov 2016 13:30 - 13:55 at Matterhorn 1 - Session 3 Chair(s): Laurence Tratt

The RPython framework takes an interpreter for a dynamic language as its input
and produces a Virtual Machine~(VM) for that language. RPython is being used
to develop PyPy, a high-performance Python interpreter. However, the produced
VM does not support parallel execution since the framework relies on a Global
Interpreter Lock~(GIL): PyPy serialises the execution of multi-threaded Python

We describe the rationale and design of a new parallel execution model for RPython that
allows the generation of parallel virtual machines while leaving the language semantics
unchanged. This model then allows different implementations of concurrency control, and
we discuss an implementation based on a GIL and an implementation based on
Software Transactional Memory~(STM).

To evaluate the benefits of either choice, we adapt PyPy to work with both
implementations (GIL and STM). The evaluation shows that PyPy with STM improves the
runtime of a set of multi-threaded Python programs over PyPy with a GIL by
factors in the range of $1.87\times$ up to $5.96\times$ when
executing on a processor with 8 cores.

Tue 1 Nov

13:30 - 15:10: DLS - Session 3 at Matterhorn 1
Chair(s): Laurence TrattKing's College London
dls-2016-papers13:30 - 13:55
Remigius MeierETH Zurich, Switzerland, Armin RigoPyPy.org, Switzerland, Thomas GrossETH Zurich
dls-2016-papers13:55 - 14:20
Guido ChariUniversity of Buenos Aires, Argentina, Diego GarbervetskyUniversity of Buenos Aires, Argentina, Stefan MarrJohannes Kepler University Linz
DOI Pre-print
dls-2016-papers14:20 - 14:45
Vincent Foley-BourgonMcGill University, Canada, Laurie HendrenMcGill University, Canada
dls-2016-papers14:45 - 15:10
Lukas StadlerOracle Labs, Austria, Adam WelcOracle Labs, USA, Christian HumerOracle Labs, Switzerland, Mick JordanOracle Labs, USA