Sun 4 Nov 2018 15:55 - 16:15 at Stuart - II Chair(s): Adam Welc

Python is a multiple paradigm language. The language is dynamically typed, offers object-oriented, procedural and functional features. It is often used for scripting but is also widely used for general purpose programming. The Python language is designed to be easy to use with permissive features, even if it means compromising performance. For example it is possible to add a new property to an object after its creation. Many other dynamic features are available and represent a challenge to implement efficiently.

The main implementation of the language is CPython which is a bytecode interpreter written in C. Using an interpreter easily allows adding new features into the language. It is also the most straightforward way to implement dynamic features Python. The principal project other than CPython is PyPy. PyPy is a meta-tracing implementation of Python bytecode. While its performance are decent and much better than CPython, it still falls behind other dynamic language implementations like virtual machines for JavaScript. The PyPy interpreter has the advantage of being easy to extend and maintain compared to a JIT compiler.

Today, there is no native JIT compiler currently in development for Python. In this talk we will present an under-development Python JIT compiler called Twopy. We propose to explore possibilities of using Python with code specialization. We will use the Basic-Block Versioning technique, which has proven to be well suited to the compilation of dynamic languages such as JavaScript and Scheme. Our virtual machine is written in Python and we use its bytecode as our source language. We lazily compile this code on the fly to x86_64 assembly. Our implementation aims at offering good performance for general programs in pure Python.

Our preliminary results show that our compiler can remove around 80% of type-checks on small benchmarks containing mainly binary operations. In the future we plan to extend basic block versioning to handle different issues with Python implementation. For example we want to explore using this technique as an optimization to object-oriented mechanism implementation in Python. We think that this technique can be used in multiple and new ways to handle dynamicity in Python.

Sun 4 Nov

Displayed time zone: Guadalajara, Mexico City, Monterrey change

15:30 - 17:05
IIVMIL at Stuart
Chair(s): Adam Welc Uber Technologies
15:30
25m
Research paper
Building JIT Compilers For Dynamic Languages With Low Development Effort
VMIL
Baptiste Saleil Université de Montréal, Marc Feeley Université de Montréal
DOI
15:55
20m
Talk
Twopy: A Just-In-Time Compiler For Python Based On Code Specialization
VMIL
Julien Pagès Université de Montréal, Marc Feeley Université de Montréal
16:15
25m
Research paper
Towards Compilation of an Imperative Language for FPGAs
VMIL
Baptiste Pauget École Normale Supérieure, David J. Pearce Victoria University of Wellington, Alex Potanin Victoria University of Wellington
DOI Pre-print File Attached
16:40
25m
Research paper
Two Decades of Smalltalk VM Development
VMIL
Eliot Miranda Cadence Design Systems, Clément Béra Sofware Languages Lab, Vrije Universiteit Brussel, Elisa Gonzalez Boix Vrije Universiteit Brussel, Dan Ingalls
DOI