On Wed, Aug 26, 2020 at 11:57 AM Guido van Rossum <guido@python.org> wrote:
IIUC Cython (even if they were to adopt annotations) is not meant to be a strict subset of Python -- almost no Cython module is valid Python.

correct. rather, it is a strict superset -- any valid Python should be compilable with Cython. But Cython type annotations are not valid Python.

However, Cython has a "pure python" mode that IS valid Python:


It used to rely almost entirely on decorators and special function (e.g.  cython.declare()) to add the Cython annotations -- these could simply do nothing when run through the Python interpreter. But apparently it now is using Type Hints as well.

Or you can put the annotations in a separate file.

But it does not support full Cython functionality. But if what you want is faster Python, it may well get you there.

I hope the mypyc folks are at least keeping an eye on it -- the projects seem to have overlapping goals.

In fact, when type hinting was standardized, it was explicitly said that that was not the goal.

Right. And mypyc is experimental. But type hints *are* useful for compilers (see also TorchScript).

Indeed. I suppose it's not the syntax that's the issue, but what types you use. If you use, e.g. Sequence, won't get much gain, but if you use a specific type, like List, then it can compile down to more efficient code.


Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython