[R&D] Launch of the Cython+ project
The [Cython+] project (https://cython.plus/) started 6 months ago. It is scheduled to finish at the end of 2022.
The ultimate aim of the project is to "transfer the extremely high-performance multi-core concurrent programming model of the Go language to the Python language by drawing on scientific and technological approaches derived from three decades of French know-how in the field of actor-based programming around Actalk".
Abilian has been working on the project for 6 months, and has begun work on the following tasks and deliverables (please note that nothing is completed at this stage):
- Benchmarks (https://lab.abilian.com/python-benchmarks/) of Cython vs. Python and other comparable languages.
- Analysis of existing Cython code (cf. Awesome Cython)
- Study of the Cython compiler
- Start implementing a Web server in Cython
We should also mention the first results obtained by the other members of the consortium, summarised in the following 4 posts:
- Motivation](https://www.cython.plus/P-CYP-Documentation.Motivation)
- Basic Syntax (by example)](https://www.cython.plus/P-CYP-Documentation.Basic.Syntax)
- Interacting with Python (by example)
- Concurrency
Project resources
- Project website](https://cython.plus/)
- Cython+ source code](https://lab.nexedi.com/nexedi/cython) (fork of Cython)
- Awesome Cython - A curated list of awesome Cython resources](https://github.com/sfermigier/awesome-cython)
- Python / Cython benchmarks (WIP)
- Navigating the Cython Compiler Source Code: short guide](https://erp5.nexedi.com/P-CYTHON-Source.Code.Short.Guide) & Cython Hacker Guide - How to work on the Cython compiler
Preparatory resources for the project
The following work was carried out prior to the project:
- Multi-threaded coroutines with work stealing in Cython (2019)
- Cython nogil extension on multi core introduction](https://www.erp5.com/blog/NXD-Blog.Cython.Nogil.Extension.Reports) (2019)
- Automatic multithreaded-safe memory managed classes in Cython (2019)
- A multi-core Python HTTP server (much) faster than Go (spoiler: Cython) (2018)
Additional resources
Cython tutorials & best practices
- Cython notes and tips, by Nicolas Hug (2019)
- Cython and Numba tutorial (2016)
- How Numba and Cython speed up Python code](https://rushter.com/blog/numba-cython-python-optimization/) (2018)
- How Cython is used by SpaCy: Cython Architecture & Writing C in Cython
Actalk
- Actalk: A Framework for Object-Oriented Concurrent Programming - Design and Experience](https://hal.archives-ouvertes.fr/hal-01573102) (2000)
- Modeling and Classifying OOCP Languages and Constructs](http://www.laputan.org/pub/sag/actalk-slides94.pdf) (slides, 1994)