Cython is being used in a various number of libraries for improving the performance of algorithms.
Cython allow transpiling code from Python to C, to use the CPython C API or directly to use C, bypassing CPython's interpreter Global Interpreter Lock.
Cython+ is a fork of Cython which aims at supporting multicore and thread safe computations.
Cython+ provides a few new features, especially:
- the possibility to compile code to C++ instead of C
- the possibility to hence use the C++ class system via the `cypclass` construction. Hence a way to use OOP without being constrained by the GIL
- a few constructions for asynchronous computations
Whether Cython+ features are relevant for scientific computing is yet to be determined.
### Ressources
Cython+ documentation is relatively light. The main features and elements of documentation are present on [Cython+](https://www.cython.plus) online website. Here are the available resources:
-*To Read*[Automatic multithreaded-safe memory managed classes in Cython](https://www.nexedi.com/blog/NXD-Document.Blog.Cypclass)
- present `cypclass`, i.e. the main construct of Cython+
- two allocation systems exist, using normal calls to constructor or using the `new` operator.
- an alternative design could have been explored for atomic reference counting (`ccdef` class)
-[Interacting with Python (by example)](https://www.cython.plus/P-CYP-Documentation.Interacting.With.Python)
- though `cypclass`es are by passing the GIL by default, it is possible to acquire it using a context.
-`cypclass` objects are still be seen as `CPython` objects : one can call python method on them interchangeably
- the overloading of methods (especially constructor) is not yet properly supported: one would need a virtual table to register overloading of methods, which is not yet implemented. There are workaround this currently.
-[HowTo Use Cython+ in Jupyter Notebook](https://www.cython.plus/P-CYP-Howto.Jupyter)
- mention of the ipython magic to be able to use C++ for compilation