7 ms·
PyPy 7.3.2 triple release: Python 2.7, 3.6, and 3.7
- xvilka 6y agoIt became less relevant in the age of Julia language.
- deadmutex 6y agoDo you have numbers to back this up?
- xvilka 6y agoSee https://lh3.github.io/2020/05/17/fast-high-level-programming-languages https://lh3.github.io/2020/05/17/fast-high-level-programming... Also I should note that Julia performance greatly improved since. Next week there should be the 1.6.0 release, which will have even better numbers.
- abdullahkhalids 6y ago> I don’t see Julia a good replacement of Python. Julia has a long startup time. When you use a large package like Bio.jl, Julia may take 30 seconds to compile the code, longer than the actual running time of your scripts. You may not feel it is fast in practice. Actually in my benchmark, Julia is not really as fast as other languages, either. Probably my Julia implementations here will get most slaps. I have seen quite a few you-are-holding-the-phone-wrong type of responses from Julia supporters. Also importantly, the Julia developers do not value backward compatibility. There may be a python2-to-3 like transition in several years if they still hold their views by then. I wouldn’t take the risk.
- BlackFingolfin 6y agoI doubt that Julia 1.6.0 will be released next week. There were no rc (release candidates) not even an alpha or beta release.
- xvilka 6y agoI probably messed up something, but I meant alpha, yes.
- ChrisRackauckas 6y agoIt always depends on what applications you're looking for, but yes there's tons. https://benchmarks.sciml.ai/html/MultiLanguage/wrapper_packages.html https://benchmarks.sciml.ai/html/MultiLanguage/wrapper_packa... https://gist.github.com/ChrisRackauckas/cc6ac746e2dfd285c28e0584a2bfd320 https://gist.github.com/ChrisRackauckas/cc6ac746e2dfd285c28e... https://gist.github.com/ChrisRackauckas/4a4d526c15cc4170ce37da837bfc32c4 https://gist.github.com/ChrisRackauckas/4a4d526c15cc4170ce37... are the ones from the top of my head.
- viraptor 6y agoThat's a weird claim without specifying the context. Julia doesn't run python code, so that's not it. It doesn't use python's programmers... etc. Is it "for new code which is maths/vector heavy and not relying on any existing environment, Julia is a valid competitor to pypy"? Or is there a better qualifier?
- pjmlp 6y agoOn the contrary, Julia might be the kick on the Python world to finally start discussing about having something like PyPy as standard.
- potatochup 6y agoEh, there are still huge legacy codebaes around that benefit from pypy, not everything is worth a rewrite
- deleted 6y ago[deleted]
- bunje 6y agoCurrently my greatest concern is the inability of Julia to provide stability even after they've reached 1.0. On paper 1.0 is a LTS release and still supported, but how many packages actually support it anymore? There seems to be no guidelines either, the official stance is that "we move on and drop LTS when the package developers move on."
- ChrisRackauckas 6y ago>but how many packages actually support it anymore? 99%? You won't get the most recent versions because a lot of packages started requiring v1.3 when the new AD and multhreading mechanisms came out, but you can still boot up the LTS and run any standard analysis that existed back when 1.0 was around, which is something like 3000+ packages. Where is your FUD coming from?
- benatkin 6y agoLong live Python2 :) docker run pypy:2.7-7.3.2 python -c "print 'no quotes, integer division %s / %s => %s' % (5, 3, 5 / 3)" no quotes, integer division 5 / 3 => 1 Edit: i mean no parenthesis
- kzrdude 6y agoWhy do they hang on to Python2.7? I suppose it doesn't have so much maintenance cost for them. I have to say that their official benchmarks point out a performance comparison to python 2.7, and at this time that sounds irrelevant - comparison to Python 3 would be relevant.
- neolog 6y agoThe main reason to move to py3 is the libraries, but they're not using any libraries.
- kzrdude 6y agoIt must rather be about what their users need - their users use libraries for sure. But maybe their users are still on Py 2.7.
- deleted 6y ago[deleted]
- progval 6y ago> Why do they hang on to Python2.7? https://doc.pypy.org/en/latest/faq.html#how-long-will-pypy-support-python2 https://doc.pypy.org/en/latest/faq.html#how-long-will-pypy-s... PyPy is written in RPython, which is a subset of Python 2 without most of the dynamic features, so it can be compiled. Moving it to a subset of Python 3 would be a major effort, as they would have to rewrite both the PyPy code and the RPython compiler. And RPython, being a subset of Python, can also be interpreted, so they probably want to keep the Python 2 interpreter so they can interpret it.
- visarga 6y agoIs it still true that PyPy is both faster and slower than CPython - faster when restricted to pure Python but slower than CPython using C extensions?
- moonchild 6y agoI've never heard of that. What I have heard, though, is that string operations are more expensive in pypy than cpython. Regardless, performance gains and regressions are unlikely to generalize; what's true for someone else's project may not be true for yours. If you're concerned about performance, I recommend benchmarking your own codebase.
- maxbond 6y agoThe PyPy website suggests this is the case. https://www.pypy.org/features.html https://www.pypy.org/features.html > Our main executable comes with a Just-in-Time compiler. It is really fast in running most benchmarks—including very large and complicated Python applications, not just 10-liners. > There are two cases that you should be aware where PyPy will not be able to speed up your code: > Short-running processes: if it doesn't run for at least a few seconds, then the JIT compiler won't have enough time to warm up. > If all the time is spent in run-time libraries (i.e. in C functions), and not actually running Python code, the JIT compiler will not help.
- moonchild 6y agoDoes it? It looks to me like it indicates performance will be the same when calling c functions.
- gridlockd 6y agoIt depends on how the C functions are called. CPython extension modules either don't work or have high overhead. CFFI-based modules should work without a big penalty, but these are generally slower than extension modules.
- rincewind 6y ago
- tarasglek 6y agoPyPy is awesome. I wrote some scapy packet-processing code, got a 10x speedup from PyPy
- vkaku 6y ago+1 scapy really helped me before and I'm glad pypy is making packet dumps better
- divbzero 6y agoLove seeing the triple release. PyPy has come a long way on Python 3 since Py3k [1] and Fulcrum [2] and great to see a non-EOL Python 2 out in the wild. [1]: https://morepypy.blogspot.com/2012/01/py3k-and-numpy-first-stage-thanks-to.html https://morepypy.blogspot.com/2012/01/py3k-and-numpy-first-s... [2]: https://morepypy.blogspot.com/2014/06/pypy3-231-fulcrum.html https://morepypy.blogspot.com/2014/06/pypy3-231-fulcrum.html
- vkaku 6y agoI really wish some python company invested money into making python 3.8+ compatible pypy, and running more tests on libraries for compatibility fixes. We could all use faster code.
- pjmlp 6y agoAgreed, otherwise there is always Julia or a Common Lisp to choose from, and they can easily have bindings for the same C++ and Fortran libraries.
- scns 6y agoHm, why do i think it is funny you recommend Julia and CL in a thread about PyPy, while preferring Java to Clojure, Kotlin and Scala?
- pjmlp 6y agoBecause 30+ years of experience have taught me to only use platform languages for production code. Clojure, Kotlin and Scala are guests with temporary permit until the landlord acquires all features that matter to the masses, then they will join Beanshell and friends. Julia and Common Lisp are the landlords of their own stacks. As for the feature of the language themselves, I always considered myself polyglot, using the platform languages for each kind of deployment scenario.
- galfarragem 6y agoAnd typescript? Is it better to stay away also?
- pjmlp 6y agoI only use Typescript where it is the platform, e.g. Angular. With other Web frontend frameworks, I use straight JavaScript, and direct HTML tags without any build tool. Also if I am responsible for the whole stack, I use the JavaScript minifiers from the SSR frameworks like JEE and ASP.NET.
- pjmlp 6y agoGreat progress, one day this will be the main reference implementation.
- uyt 6y agoThis innocent (albeit convoluted) piece of code used to segfault on pypy 7.3.1 . It is now fixed in this release! It was a bug in their JIT. def main(n): # Note: exact value of n and prints are significant, don't change a = [0] * n for _ in range(n): pos = -1 for i in range(n): if i > 0: print(a[i - 1], end="") pos = i print(a[pos], _, n) main(191)
- bionhoward 6y agoTo predict COVID treatment side effects, we built a whole-transcriptome Trie with Scylla and PyPy and it sped up a bajillion times over raw python. Good times
- optimalsolver 6y agoDid you benchmark PyPy against numba?
- yjftsjthsd-h 6y agoDoesn't numpy require changing the code? When it works, my understanding is that pypy is a drop-in replacement.
- nurettin 6y agoIt is, I ran python-neat with it. Almost doubled the speed.
- devxpy 6y agoOP said "numba", not "numpy" - numba is a JIT that's compatible with CPython! https://numba.pydata.org/ https://numba.pydata.org/
- yjftsjthsd-h 6y agoAh, I'd assumed a typo; thanks! However, I can't tell if/how much my concerns hold: > You don't need to replace the Python interpreter, run a separate compilation step, or even have a C/C++ compiler installed. Just apply one of the Numba decorators to your Python function, and Numba does the rest. (Emphasis mine) Also, I can't tell whether https://numba.readthedocs.io/en/stable/user/5minguide.html#will-numba-work-for-my-code https://numba.readthedocs.io/en/stable/user/5minguide.html#w... implies that some code won't work, or won't get faster?
- devxpy 6y ago
- vslira 6y agoGreat news! Congrats (and thank you) to the team! Is there any chance for Pypy to work with Numba, especially with HPy coming? Yes, they're both JIT compilers, but I feel like the kind of optimizations they do are complementary rather than redundant. I want fast business logic with fast algorithmic code in the hot parts :)