-
Notifications
You must be signed in to change notification settings - Fork 10.8k
Add PyPy3 support #3050
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add PyPy3 support #3050
Conversation
Codecov Report
@@ Coverage Diff @@
## master #3050 +/- ##
=======================================
Coverage 84.51% 84.51%
=======================================
Files 164 164
Lines 9270 9270
Branches 1380 1380
=======================================
Hits 7835 7835
Misses 1177 1177
Partials 258 258 |
Totally unscientific speed comparison (on a slow Xeon, running
Would be good to deploy https://github.com/scrapy/scrapy-bench, benchmarks there are more representative I think. |
These built-in functions are exposed as methods in PyPy3. For scrapy this does not matter as: 1) they do not work for CPython at all 2) get_func_args is checked for presense of an argument in scrapy, extra "self" does not matter. But it still makes sense to leave these tests so that we know we shouldn't use get_func_args for built-in functions/methods.
This is almost ready, only waiting for the second pypy3 build to finish to check if it still takes 22 minutes 😱 Right now only Linux binaries are available for PyPy3, so I tested only Linux installation. |
pypy3 took 23 minutes again, although the second longest py35 took 15 minutes. Locally, pypy3 took 16 minutes, and I don't have any ideas for quick speedups of the tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. I don't see a big difference between waiting for 15 minutes and 23 minutes, it is a long time anyways. If we are to support pypy3, we should test it.
Just checking how they run on Travis. Turns out that lxml on PyPy3 is no longer a problem (
PyPy 5.9.0
,Cython==0.27.3
andlxml==4.1.1
).Related to #2213