(original) (raw)

On Tue, Sep 5, 2017 at 5:58 AM, Simon Cross <hodgestar+pythondev@gmail.com> wrote:
I thought the decision a few years ago was that all modules that have a C library for performance reasons should also have a Python version? Did this decision change at some point? (just curious).

It was never meant as a hard rule. IIRC the actual rule is more that \*if\* you have both a C and a Python version they need to supply the same API, \*and\* the naming should be e.g. \_pickle (C) and pickle (Python), \*and\* the Python version should automatically replace itself with the C version when the latter exists (e.g. by putting an import \* at the end with a try/except around it).

There are tons of modules that only have a C version and there's no need to change this -- and I'm fine with occasionally a module removing the Python version when the C version is deemed sufficiently stable and compatible. (In some cases a move in the opposite direction may also be reasonable. No two cases are exactly alike.)

--
--Guido van Rossum (python.org/\~guido)