explosion / cymem

💥 Cython memory pool for RAII-style memory management
MIT License
441 stars 28 forks source link

Build fails on Python 3.9 #19

Closed dlukes closed 4 years ago

dlukes commented 4 years ago

Caused by the removal of the PyTypeObject.tp_print field, which is referenced by the C++ source files generated by the outdated version of Cython specified in requirements.txt (<0.28.0).

If I lift the Cython version restriction and install the most recent version at the time of writing (0.29.21), cymem builds fine, so the removal of the tp_print field seems to have already been addressed by Cython.

Are there any reasons why the Cython dependency can't be easily upgraded? Maybe the fact that cymem builds fine with a newer Cython doesn't necessarily mean it will also work correctly? See also #14.

honnibal commented 4 years ago

Thanks for pointing this out.

I think we'll need to change how the setup.py works here. When I wrote the setup.py before, the setup_requires field didn't work. Now since pep517, we should no longer publish the generated code in the setup.py, and instead make Cython run it to do the installation. The transpiled code isn't the source, and it's no surprise that it can sometimes fail in future compatibility.

adrianeboyd commented 4 years ago

Hi, I think this is temporarily resolved by v3.0.4 v2.0.4, which includes .cpp files generated by a newer version of cython.

And if all goes as planned, the upcoming v3.0.5 v2.0.5 should switch to not including the generated .cpp files at all.

Edited to fix version numbers.

adrianeboyd commented 4 years ago

Sorry, I'm getting the version numbers for different projects mixed up. For cymem v2.0.3 v2.0.4 should be okay for python 3.9 (also has a published python 3.9 wheel) and then v2.0.4 v2.0.5 won't include the .cpp files.

Edited: I give up...

dlukes commented 4 years ago

Thanks! I can confirm spacy 2.3.4 + cymem 2.0.4 installs and imports fine on Python 3.9 :)