项目作者: pfalcon
项目描述 :
Retrospective of Python compilation efforts
高级语言:
项目地址: git://github.com/pfalcon/awesome-python-compilers.git
Projects with code deliverables
- 1997-1999 Python2C
- 2002-2011 Psyco, https://bitbucket.org/arigo/psyco
- Was actually used in production for many projects
- 2002-2010 Pyrex
- Served as a base for Cython
- 2003, active PyPy
- 2006 Grant Olson’s Compyler
- 2006, active Cython
- Originally based on Pyrex
- 2008, active Shedskin
- 2009-2010 Unladen Swallow
- 2011, active Nuitka
- 2011-2013 [Copperhead]https://github.com/bryancatanzaro/copperhead) - “Data Parallel Python”
- 2010-2011 HotPy
- 2012-2012 HotPy2
- 2012-2012 pymothoa
- 2012-2013 Parakeet
- 2012, active Numba
- Well-known and actively used, 4.8K github stars, 16K commits
- 2012, active Pythran
- docs
- 2019-01-24 @olivier.borderies/pythran-python-at-c-speed-518f26af60e8">Pythran: Python at C++ speed !
- 2012-2018 reticulated
- 2013-2014 flypy, was once named “numba2” then apparently transforned into pykit
- 2014-2017 https://github.com/darius/tailbiter - Simple teaching metacircular bytecode compiler
- 2014-2017 Pyston
- 2014-2016 HOPE - “JIT compiler for astrophysical computations”
- 2015-2015 https://github.com/lukasmartinelli/py14 - Python to C++ 14 transpiler
- 2015-2019 numpile - A tiny 1000 line LLVM-based numeric specializer for scientific Python code
- 2015-2016 FAT Python
- 2015, active Pyjion (originally
microsoft/Pyjion
) - A JIT for Python based upon CoreCLR - 2016-2018 Lichen - Explicitly a subset of Python with purposely differing semantics
- 2017, active mypyc/mypy - Python-to-C
compiler based on type annotations/inference by mypy type checker. (Later
mypyc is merged into mypy codebase).
Academic and theoretical research, and just no code available
- 1997-2000 PyFront (afterwards Basil)
- 2000 Basil
- 2002-2003 UCPy compiler + Mamba VM
- 2004-2004 Starkiller
Python Conferences and SIGs
- 1998-11 7th International Python Conference
- From Jon Riehl’s notes:
Last year (IPC7,) I thought I was going to surprise the Python community
by presenting a prototype Python to C translator. Little did I know,
I was only one of three people who announced such a product.
- These apparently were:
- “Converting Python Virtual Machine Code to C”, John Aycock
- “PyFront: Conversion of Python to C Extension Modules”, Jon Riehl
- (3rd - ???)
- 2000-01 8th International Python Conference
- From Jon Riehl’s notes:
This year (IPC8,) in the interest of keeping people up to date,
there was a two hour session that hosted the developers of these
prototypes. The only system left standing is now complete and under
beta test. Bill Tutt and Greg Stein cowrote Python2C, which they
have been continuing to work on at (http://www.mudlib.org/~rassilon/p2c/).
The other player is John Aycock. John declared he would look into run time
type instrumentation, which I think should end up forming some sort of a
JIT for Python. He lives at: (http://gulf.uvic.ca/~aycock/)
- 2000 Compiler-SIG
- “This SIG grew out of a Developers’ Day session at the 8th International Python
Conference. Ka-Ping Yee took
notes on the session.”
- 2016-07-11 Python Compilers Workshop
at SciPy 2016 conference.
PEPs
- PEP 267, 2001-05, Py2.2: Optimized Access to Module Namespaces
- PEP 266, 2001-08, Py2.3: Optimizing Global Variable/Attribute Access
PEP 280, 2002-02, Py2.3: Optimizing access to globals
PEP 329, 2004-04, Py2.4: Treating Builtins as Constants in the Standard Library
PEP 510, 2016-01, Py3.6: Specialize functions with guards
- PEP 511, 2016-01, Py3.6: API for code transformers
Static Analysis
- https://github.com/sdiehl/subpy - Subpy is a library for defining subsets
of the Python language and querying ASTs for language-level properties that
are specified as sets of features.
Parsers
This list is compiled and maintained by Paul Sokolovsky, and released under
Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0).