Pyston Blog
blog.pyston.org · Company blog · on HN since 2014
The Pyston team posts releases and plans for Pyston, a faster Python implementation that began at Dropbox and later joined Anaconda.
What HN saysHN commenters link it as the Dropbox Python JIT project, with several describing it as stalled or failed, and one citing it on lack of funding.
40HN people shared it
21linked it in comments
31stories submitted
1.1Kstory points
3 years agolast shared
2014people per year2026
Most-shared posts
- 1Homepage7 people · first shared 2016
- 2Pyston 0.6.1 released, and future plans5 people · 53 points · first shared 2017 · 23 comments on HN
- 3Pyston v2.2: faster and open source3 people · 292 points · first shared 2021 · 100 comments on HN
- 4Pyston 0.5.1 Released (Python JIT-Compiler from Dropbox)3 people · 18 points · first shared 2016 · 1 comments on HN
- 5Status Update of Pyston, an Alternative Python JIT [video]3 people · 13 points · first shared 2015 · 1 comments on HN
- 6Pyston 0.5 released3 people · 12 points · first shared 2016 · discussion on HN
- 7Pyston announces Python 3.7-3.10 support and a new direction3 people · 12 points · first shared 2022 · 2 comments on HN
- 8Pyston Team Joins Anaconda3 people · 11 points · first shared 2021 · discussion on HN
- 9Pyston v2: Faster Python2 people · 262 points · first shared 2020 · 206 comments on HN
- 10Baseline JIT and inline caches2 people · 53 points · first shared 2016 · 12 comments on HN
- 11Caching object code2 people · 33 points · first shared 2015 · 5 comments on HN
- 12Pyston 0.4 released2 people · 27 points · first shared 2015 · discussion on HN
- 13Pre-compiled packages now available for Pyston2 people · 7 points · first shared 2021 · discussion on HN
- 14Pyston 0.6 released2 people · 5 points · first shared 2016 · discussion on HN
- 15Roadmap for the Pyston Python Implementation2 people · 4 points · first shared 2021 · discussion on HN
What HN people wrote when they linked it
deadmutex · 2021-05-04
I wonder if they are in touch with kmod or tried pyston: https://blog.pyston.org/.
zawerf · 2019-09-08
Dropbox's implementation of python was pyston: https://github.com/dropbox/pyston
But I think it's dead now: https://blog.pyston.org/
oblio · 2018-04-29
Python also had Dropbox’s Pyston, that mostly failed:
https://blog.pyston.org/
ankrgyl · 2016-07-03
This article is a follow up to an earlier post (https://blog.pyston.org/2016/06/30/baseline-jit-and-inline-caches/) which provides additional context. In short, python opcodes are inefficient because they must support a significant amount of dynamicity, even as opposed to some other language peers like JS, PHP, Lua, etc. The original post explains some of the cool stuff they're doing with Pyston (specifically baseline jit and inline caching) to combat it.
staticassertion · 2020-05-19
https://blog.pyston.org/
You can look at the last release of Pyston for why companies are not funding this work. They're just moving to other languages.
Consider that Dropbox, Google, and Instragram likely spend much more than 1M on optimizing/ improving Python, just to have it still be a relatively slow language.
At some point it becomes way cheaper to just move to other languages that don't require that constant level of effort. Think about how much time and money is spent on things like:
* Adding types to Python
* Improving performance
when you could just move performance critical code to Go/ Rust as Dropbox has done, for a fraction of the cost, with far less maintenance burden.
"Make Python faster" is just a losing game imo. It is fundamentally never going to be as fast as other languages, it's far too dynamic (and that's a huge appeal of the language). Just look at the optimizations done here - moving `str` to local scope to avoid a global lookup? And can you even avoid that? Not without changing semantics - what if I want to change `str` globally?
Still, I was surprised by some of the sorta nutty wins that were achieved here. There's clearly some perf left on the table, and I'm not an expert on interpreters, it just seems really hard to build a semantically equivalent Python ("I can change global functions from a background thread") that can automatically optimize these things.
bakery2k · 2018-10-10
Python is, despite its simple appearance, a much more complex language than JavaScript. A V8 equivalent for Python is certainly possible, but would require even more work than went into creating V8 itself - who would be motivated to spend that much effort on Python?
Dropbox? They seem to be the company driving Python nowadays, but gave up trying to speed up Python in favour of writing "performance-sensitive code in other languages" [1].
PyPy uses a meta-tracing approach in an attempt to reduce the amount of work required. Its speed is impressive, but I'm sure meta-tracing leaves some performance on the table.
Another way to reduce the amount of work required would be to support only a subset of the language - for example, a V8 equivalent for MicroPython rather than for full Python. I'm sure this could be made very fast, but it would have very poor compatibility with existing Python code, so what would be the point?
[1] https://blog.pyston.org/
Nkdo · 2016-04-21
No matter how hard you're wishing it to be true, does not make it so. PyPy will "have" to catch up? in the name of what? PyPy is but one of the many projects that are still thriving in the 2.x ecosystem, there's even a competitor to PyPy that was launched 2 years ago that is also a 2.x exclusive: Pyston.
https://blog.pyston.org
Yes, a very new implementation project that happens to focus on 2.7.
Python 2 gets all the better runtimes. Long after the end of life of the official CPython 2.7, we will still be running 2.x programs, and doing it on much better runtimes than CPython.
We've been hearing the same tirades of Python 3's future over and over again by its partisans ever since its release in 2008. 8 years have passed since then. 8 years will pass and Python 3 will still have nothing but a minority of vocal open source users. Python will be treated as a legacy language the way COBOL and BASIC are treated before py3 starts picking up any steam. That's kinda what some companies are already doing, like Dropbox. Switching to Go here and there, while keeping the maintenance of their very large 2.7 python codebase with absolutely no intention whatsoever of moving that behemoth to 3.x. Why bother? they could write new software features, fix bugs and so on instead of waste time on porting. Why waste so much time on porting when it brings so little benefits? Programming is ultimately about problem solving. Porting to python 3 doesn't make my software better. It's certainly not…
zitterbewegung · 2023-12-11
I don't disagree with you but, now you can retrofit a JIT into python.
https://blog.pyston.org/2022/09/29/announcing-3-7-3-10-support-and-a-n…
colatkinson · 2022-06-08
Is it proprietary? According to their blog, Pyston was open sourced with version 2.2 [0], and the LICENSE file in the repo [1] appears to be the same as upstream CPython.
Not a rhetorical question BTW. A pluggable JIT for Python could be a boon for some projects at my dayjob, but if it's proprietary that would put a bit of a damper on things.
[0]: https://blog.pyston.org/2021/05/05/pyston-v2-2-faster-and-open-source/
[1]: https://github.com/pyston/pyston/blob/pyston_main/LICENSE
pella · 2022-04-29
other alternative : PYSTON "Pyston is a faster and highly-compatible implementation of the Python programming language."
"Our speedup on ARM (30% on a Graviton EC2 instance) is comparable to our speedup for x86 (34% on an Intel i7-6700)."
https://blog.pyston.org/2022/04/01/pyston-v2-3-3-arm-support/
2021.aug.30 : "Pyston Team Joins Anaconda to Expand Open-Source Project Development" https://www.anaconda.com/blog/pyston-team-joins-anaconda
Roadmap: https://blog.pyston.org/2021/10/26/pyston-roadmap/
Github: https://github.com/pyston/pyston
ForHackernews · 2021-05-13
Is this going to incorporate the work done as part of https://blog.pyston.org/2020/10/28/pyston-v2-20-faster-python/ or https://github.com/facebookincubator/cinder ?
sizediterable · 2021-05-13
Dropbox hasn't sponsored Pyston development in quite a while
https://blog.pyston.org/2017/01/31/pyston-0-6-1-released-and-future-pl…
JonAtkinson · 2021-05-06
I think this is incorrect. There is even an older blog post (2016) where Pyston explicitly benchmarks Numpy: https://blog.pyston.org/2016/11/11/pyston-0-6-released/
jsnell · 2019-09-12
Right, let's ask Dropbox:
https://blog.pyston.org/2017/01/31/pyston-0-6-1-released-and-future-pl…
(And after that blog post, there are no commits in the github repo you linked to).
muizelaar · 2019-02-11
Google and Dropbox have been migrating from Python to Go to deal with Python's performance problems instead of trying to make Python run faster.
https://blog.pyston.org/2017/01/31/pyston-0-6-1-released-and-future-pl…
https://opensource.googleblog.com/2017/01/grumpy-go-running-python.htm…
phonon · 2018-09-25
Probably because it was 2.7 only, and only 10% faster on Dropbox's code.
https://blog.pyston.org/2017/01/31/pyston-0-6-1-released-and-future-pl…
brettcannon · 2016-03-08
Pyston targets Python 2.7 because that's what they use on their servers. As for why Pyston over PyPy, http://blog.pyston.org/2015/11/24/pyston-talk-recording/ has a nice video that mentions why (among other things).
sanxiyn · 2015-02-10
There are many measures of benchmark sizes. One important measure is size of codes that account for 99% of execution time. If your codebase is a million lines but your hotspot is a thousand lines, benchmark result is sensitive to optimization quirks and in some sense benchmark is small.
More on this idea here: http://blog.pyston.org/2014/12/05/python-benchmark-sizes/
rattray · 2014-12-22
Pyston is a very exciting project. The commit velocity on github seems quite high [0]. Here's the latest status update on their blog, for those interested: http://blog.pyston.org/2014/11/21/pyston-status-update/
[0] https://github.com/dropbox/pyston/graphs/commit-activity
dr_zoidberg · 2021-05-06
Pyston originally started as an internal project at Dropbox and they had a couple of super interesting blogposts where they detailed their approach and findings[0]. After a a year or two, the project got axed, but the devs kept working on it and then released it on their own (I don't remember the details, but evidently the chosen license for the project allowed that).
Last year (I think it was last year, but can't tell if that was 2020 or 2019) they released it on their own, thinking of a commercial model. Now they have switched to OSS+services, which is interesting because it'llopen up more people using Pyston.
I tihnk this is interesting in its own right, but yesterday we got Facebook announcing Cinder[1] -- which is unsupported to outsiders, but significantly faster than Pyston. According to Facebook, they intend for parts of Cinder to be upstreamed (and have already upstreamed a few, apparently) to CPython. So again, and sorry for using such a vague word, it'll be interesting to see how all these things play out in time.
[0] https://blog.pyston.org/2014/09/
[1] https://github.com/facebookincubator/cinder
tony · 2020-02-09
I'm not sure if it's an exact fit, but dropbox used to have pyston: https://github.com/dropbox/pyston
The blog posts by Kevin Modzelewski went into the internals: https://blog.pyston.org/
Also by the same person, a good article on Python's performance: http://blog.kevmod.com/2016/07/why-is-python-slow/
As a side comment: On the subject of type inference, I really come to like python's type hints. I don't use mypy itself yet, but already had a habit of adding types in docstrings, and like it when I can add a clue that a signature/return is dealing with a something that's not a basic type.
There are some nice little things out there for advanced typing, being added now and then:
- TypedDict and Literal: https://github.com/python/typing/blob/master/typing_extensions/README.… (TypedDict was accepted in PEP 589[1])
- NamedTuple had variable annotation added in Python 3.6: https://www.python.org/dev/peps/pep-0526/
I wonder if typings are added to a codebase, we could give LLVM one more shot. It'd be pretty crazy to build able to build a large graphql server and build it into a statically linked binary like golang.
[1] https://www.python.org/dev/peps/pep-0589/