Skip to main content

SPy (Static Python) lang: fast as C, Pythonic as Python

Level:
advanced
Duration:
45 minutes

Abstract

SPy is a brand new statically typed variant of Python which aim to get performance comparable to system languages such as C and C++, while preserving the “Pythonic feeling” of the language.

The main idea behind SPy is that “modern Python” is actually a subset of Python:

  • many of the most dynamic features of the language are considered bad practice and actively discouraged;

  • the alway-increasingly adoption of typing leads to codebases which are largerly statically typed.

However, these rules are not enforced by the language, and there are cases in which “breaking the rules” is actually useful and make the code easier/better/faster.

From the point of view of language implementors, the VM cannot easily take advantage of the “mostly static” nature of programs because it has always to be ready for the generic case.

SPy tries to reconcile these two sides:

  • it uses a static type system which is designed specifically for safety and performance;

  • the vast majority of “dynamic” feature of Python (like decorators, metaclasses, __special_methods__, …) can be used at zero cost, since they are resolved at compile time by using meta-programming and partial evaluation techniques.

This talk will present in the details the ideas behind SPy and its current status.


The speaker

Antonio Cuni

Antonio Cuni

Dr. Antonio Cuni is a Principal Software Engineer at Anaconda. He is the author of SPy, a core developer of PyScript and PyPy, and one of the founders of the HPy project, which aims to design a better and more modern C API for Python. He loves to write tools from developers for developers, such as Pdb++, fancycompleter and vmprof and he is creator/maintainer/contributor of numerous other open source projects. He have also been very active in the Python community for years, giving talks at various conferences such as EuroPython, EuroSciPy, PyCon Italia, and many others. He regularly writes on the PyPy blog and on the HPy blog. His main areas of interest are compilers, language implementation, TDD and performance.