Edit: For everything I use, I try to find an asyncio version - Slack client [0], SSH [1], etc.
Funnily enough the reason I haven't adopted using PyPy is down to their lack of Python3 support. I think you're underestimating the amount of people using Python3.
I'm guessing that most people who use Python 3 are using recent versions of pip that have caching built in, so that may skew the results a bit.
https://caremad.io/2015/04/a-year-of-pypi-downloads/
>I'm guessing that most people who use Python 3 are using recent versions of pip that have caching built in, so that may skew the results a bit.
Since pip updates itself too, why wouldn't people using Python 2 also have newer versions?
Well, this is a catch-22, because folks like me and my team won't touch it unless it's Python 3. We're not a Python shop, but have flirted with Python before. It wouldn't make sense for us to write new code in Python 2.
EDIT: strike this, I misunderstood.
Also, libraries are slowly going to drop Python 2.x support and go Python 3 only.
If by great inroads you mean "around 6-10% in PyPI after 8 years of trying", then yes.
But unless it gets over 30-40% it's not anywhere near significant in my charts...
All the developers needed was a kick in the butt. If only PSF did that sooner.
Isn't it just a tracing JIT? Aren't these relatively well understood and implemented dozens of different ways?
http://morepypy.blogspot.com/2011/04/tutorial-writing-interp...
See how PyPy might be a tinsy bit more relevant / meaningful to professional developers.
Its a JIT compiler run-time. You put a program in the JIT-compiler's run-time. And it was JIT compiled. The program you gave it just so happens to have Turning Complete behavior. It doesn't change anything the JIT compiler is doing.
It's like a compiler boot-strapping itself. It seems really impressive, but really the program is just doing its job on an input. The input just happens to be itself.
Are you familiar of the state of the art in JIT compilers at the time PyPy's JIT was developed? It was absolutely a novel idea at the time, and was published as a novel result in a peer-reviewed paper. I'm not sure how else to convince you of that.
> However, applying an unmodified tracing JIT to a program that is itself a bytecode interpreter results in very limited or no speedup. In this paper we show how to guide tracing JIT compilers to greatly improve the speed of bytecode interpreters. One crucial point is to unroll the bytecode dispatch loop, based on two kinds of hints provided by the implementer of the bytecode interpreter.
> Applying a trace-based optimizer to an interpreter and adding hints to help the tracer produce better results has been tried before in the context of the DynamoRIO project [27], which has been a great inspiration for our work. They achieve the same unrolling of the interpreter loop so that the unrolled version corresponds to the loops in the user pro- gram. However the approach is greatly hindered by the fact that they trace on the machine code level and thus have no high-level information available about the interpreter. This makes it necessary to add quite a large number of hints, be- cause at the assembler level it is not really visible anymore that e.g., a bytecode string is immutable. Also more ad- vanced optimizations like allocation removal would not be possible with that approach.
I have no idea what you are getting at here.
Whether "this is the first time this is available!" is true or not is open to debate (it depends in part on how you weigh the listed concerns), but parent's post didn't read on it.
You can do this in Javascript, or LLVM-IR just as easily.
The main blessing is also its biggest curse. You are writing a language to move fast, and change often. Its a good learning tool, but a constantly changing language is next to impossible to build value upon.
I stopped calling myself a Python programmer sometime ago and started saying I'm a PyPy programmer because this is the future of Python. The underlying basis for PyPy has big implications for a number of dynamic languages though so we should all be cheering it on and contributing.
For those who want better Python3 support, there's only ONE answer so no need to keep begging. Donate more money to the project or donate your talents. Patches welcome!