EPython: Extending Python to the Future
Python has had enormous success in part due to its ease of extensibility and interoperability with other systems. In particular, this has led to huge ecosystems of code that heavily leverage the existing C-API for Python. One such ecosystem is the NumFOCUS ecosystem that includes NumPy, Pandas, SciPy, Scikit-Learn, Numba, Dask, and Jupyter. This ecosystem has propelled Python to become the de facto language for data-science and machine-learning.
The downside of this success is that the particular dependency on the C-API of these extensions has also made this ecosystem an anchor to the further developing of the C-Python runtime as well as other emerging run-times of Python such as PyPy, MicroPython, IronPython, Jython, and RustPython.
Many of the core Python developers and the steering committee members recognize this problem and are eager to see something done about it. Something can be done, but it will take a concerted technical and social effort lasting several years and budget from multiple stake-holders. We will create an embedded domain specific language (DSL) using the Python language itself along with the typing module and specialized objects as necessary to allow nearly all the existing extensions to be written using this DSL. We will then port several key libraries such as NumPy, SciPy, and Pandas to use this DSL. We will also provide a runtime so these extensions can work on PyPy, C-Python, and RustPython.
The initial MVP will be completed in 6 months and then a version of NumPy will be ported in the next 12 months. An initial run-time for PyPy and Jython will be completed in the next 6 months. The remaining 3.5 years of the funded project will be improving the language by porting existing modules to use the new DSL.
A typed subset of Python to provide a standard way to extend any Python runtime with new types and builtin functions.
Numba gives you the power to speed up your applications with high performance functions written directly in Python.
pandas is an open source library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language. pandas’ data analysis and modeling features enable users to carry out their entire data analysis workflow in Python without having to switch to a more domain-specific language like R.
SciPy provides many user-friendly and efficient numerical routines for Python such as routines for numerical integration, interpolation, optimization, linear algebra and statistics.
N-dimensional array and computational libraries for Python.