Support for Python 2 series ended on January 1, 2020 (except for some long-term support environments). I think Python has completely moved to the Python 3 era and is entering a stable period. However, Python is not just CPython. What is the current state of other processing systems such as Jython and IronPython? I was curious, so I did a little research.
CPython
Needless to say, it is the original and most famous Python processing system. It is implemented in C language.
End of Support (EOL) for Python 2 series on January 1, 2020. The latest version, 3.8.5, was released on July 21, 2020. The other 3.7 series released 3.7.8 and the 3.6 series released 3.6.11 on June 28th. The next version, 3.9.0, is currently in the final beta version (b5), and will be released on October 5th after about two months of RC (Release Candidate) (Release Candidate). PEP596). Click here if you are interested in the new features of 3.9 ⇒ New features of Python 3.9 (Summary)
PyPy
Most of them are Python implementations implemented in Pure Python, and are characterized by the fact that they often run faster than CPython due to the JIT (Just In Time) compiler (not always faster).
The latest version is version 7.3.1 released on April 5, 2020. Two versions, equivalent to CPython 3.6 and equivalent to CPython 2.7, are available. As for the current trend, the development branch equivalent to CPython 3.7 has been cut and development is continuing, but the release is undecided.
Jython
It is a Python processing system that is implemented in Java and can use classes such as JDK.
Version 2.7.0 equivalent to CPython 2.7 was released in March 2015 and was updated to version 2.7.2 on March 21, 2020. However, regarding support for version 3 series, although a dedicated repository is available, there have been no commits for the past three years. Major contributor Jeff Allen said that it is necessary to support new features of Python 3 and to design and implement new ones in consideration of the old Jython implementation The Very Slow Jython Project We have launched (: //the-very-slow-jython-project.readthedocs.io/en/latest/index.html) and are trying to sort out the issues. As the name implies, this is considered a time-consuming endeavor.
Graal Python
GraalVM is an emerging Python processing system that runs on a Java VM. Our goal is to be able to use the Python 3.7 grammar and to be able to use SciPy and its associated libraries. At the moment it is specified as ʻexperimental`. It also considers Compatibility with Jython. Version 20.1.0 for GraalVM 20 was released on March 20, 2020, and version 19.3.3 for GraalVM 19 was released on August 5, 2020. It means that it implements the grammar equivalent to Python 3.8.2. There is also information that JIT works because it runs on the JVM and is faster than CPython or Jython. It is a processing system that I would like to expect for future development.
IronPython
A Python implementation that is implemented in C # and can use .NET Framework libraries.
The latest version is version 2.7.10 released on April 27, 2020. It supports functions equivalent to CPython 2.7. A dedicated repository has been created for support for version 3 series, but it clearly states that "it is not yet ready for use". There is a list of new features in Python 3 in the issue, but the amount of work is so huge that it seems that the road to release is still far away.
Brython
It is a Python processing system using Javascript, and you can execute Python code on the browser. The size of the interpreter (brython.js) is about 700KB (excluding the library).
The latest version was released on March 20, 2020, version 3.8.9, which implements CPython's 3.8 equivalent functionality (in my environment [walrus operator](https: // www. The operation of python.org/dev/peps/pep-0572/) has been confirmed). It can be said that it is a Python processing project with momentum because it has a fast follow-up speed to the original family (CPython) and commits stably.
MicroPython
A subset implementation of Python intended to work in an embedded environment. The minimum configuration is said to work with 128KB of ROM and 8KB of RAM, and can be run on an ESP32-equipped board or a dedicated pyboard. There is also a port to PIC16 and Javascript.
The latest version is version 1.12 released on December 20, 2019. This is a CPython 3.4-equivalent feature with some 3.5 features (async / await) added. A huge number of issues have been submitted regarding the support for various architectures and peripherals, and active activities continue.
Numba
Numba is a JIT compiler for accelerating Python code. In particular, optimization for code using NumPy arrays and functions is considered.
The latest version is version 0.50.1 released on June 24, 2020. CPython supports 3.6 to 3.8 and NumPy supports 1.15 to 1.18. With over 1000 open issues, we can see the high expectations of people for the project (and lack of human resources). On average, about 4 to 50 commits are made every week, and it can be said that it is a very active processing system.
Cython
Cython is an unusual Python processing system. Compiles the source code of your own Cython extension language, which is similar to the Python grammar, and generates a library for Python. This allows you to create fast libraries with less effort. The latest version of the stabilizer was released on July 9, 2020, 0.29.21. And on July 31, 2020, the alpha preview version 3.0.0alpha6 of 3.0.0, which will be the first major version upgrade, has been released. It contains many backwards incompatible changes and the Python 3 syntax is the default.
RustPython
It is a Python processing system implemented in Rust that started in 2018, and it is also possible to embed Python on the Rust application, compile Python code into WebAssembly, and run it on the browser. The latest version is version 0.12 released on June 22, 2020. Currently, at least Python 3.5 equivalent functions are implemented. It has been confirmed that the _separation of numeric literals such as f-string and 1_000_000, which is a 3.6 function, is implemented in my environment. The {var =} notation in 3.8 was not implemented. It's a processing system that I'm looking forward to developing in the future.
Nuitka
Nuitka is a Python compiler that can compile Python source code to generate executable files (.exe, etc.) and library files for Python (* .pyd, * .so). PyInstaller and py2exe are famous in this area, but they are the opponents. The reading of the name seems to be close to Nuitika. The name was taken from Annuikta, the name of the wife of the creator, Kay Hayen. The latest stable version is version 0.6.8.4 released on June 6, 2020. The Python versions to be compiled are 2.6-2.7 and 3.3-3.8. I just tried it for a while, but I was able to easily create an executable file of my own program (including C ++ code). I was surprised that the size was smaller than I expected.
Pyodide
(No logo was found)
A Python processing system specialized for the Scientific direction. Using WebAssembly technology, you can use the Python interpreter and libraries such as NumPy, Pandas, Matplotlib, SciPy, SymPy on your browser. There is a Jupyter Notebook-like demo. The latest version is version 0.15.0 released on March 21, 2020. At this point, it has the function equivalent to CPython 3.7.4. The next version, 0.16, is aiming for 3.8.2 (the release date is undecided, but it's not too far from the latest commits). By the way, the name comes from Py + Iodide (iodide, to put it simply, the iodine version of the oxide). Naming for being related to the Iodide Project.
If we find any interesting changes during 2020, we will update them from time to time.
--August 5, 2020 -Added Cython commented by @ superrino130 --August 7, 2020 --Added RustPython commented by @Piroro --August 9, 2020 -Added Nuitka commented by @ eleven-junichi2 -Added Pyodide commented by @sigmaponta
There are differences in the speed of major processing systems, but it seems that development is continuing for all of them. Jython's support for Python 3 seems to be in a rather difficult situation.
There are various processing systems, but since the development of the head family progresses at a tremendous speed, we can get a glimpse of the current situation where other processing systems are devoting considerable resources to respond to them. On top of that, we have to refine the unique characteristics of the processing system, so I feel that the developers are really thankful.
If you know of other interesting processing systems, please let us know in the comments.
Recommended Posts