Cython backend (beta version)

Less bugs and more Cython features… Note that unfortunately we are limited by Cython bugs!

  • [done] Header also for Pythran (.pythran)

  • [done] Refactore backends “for method”

  • [done] Recompile if header changed

  • [done] also check signature files

  • [done] Fused types rather than more than one signature for

    • [done] boost functions

    • [done] boost methods

    • [done] blocks

    • [done] jit functions

    • [done] jit methods

  • [done] BackendJITCython

  • [done] Check/fix

    • [done] boost methods

    • [done] blocks

    • [done] jit functions

    • [done] jit methods

  • [done] Cython decorators (boundscheck, wraparound, cdivision, nonecheck)

  • [done] void type

  • [done] Correct use of fused types (only 1 set of annotations supported)

  • Special function definitions

    • [done] inline

    • [done] return type

    • nogil

  • better fused types

  • nogil context manager

  • casting

  • locals annotations for

    • boost methods

    • blocks

    • jit functions

    • jit methods

  • “exterior” functions + understand the tests

Better Numba backend

  • numba.jit (not only numba.njit)

  • fastmath argument

transonic.dataclass decorator

It would allow one to use numba.jitclass and Cython extension type.

A interesting goal would be to rewrite pygbm (written in Numba) with Transonic. Note that the Cython translation is here in scikit-learn. Good Rosetta stone!

Backends as Transonic extensions

We can try that with pyccel.

Alternative syntax for blocks

See issue #6

Alternative implementations for specified backends

Which API?


We can already use OpenMP with Transonic-Pythran. But OpenMP pragmas are not understood by the other backends. Numba and Cython use different notations (with prange):

PyCapsule & numba.cfunc