Pyston 0.6.1 released, and future plans
blog.pyston.org
blog.pyston.org
I am not surprised that a silicon valley company stopped sponsoring this. 3 years of silicon valley salary is quite an investment in small gains of CPU perf.
Look at the Ruby sphere, where competitive implementations have taken millions in man hours and still most run on MRI.
The Oracle Labs Truffle approach and the PyPy RPython ones seem to be the only way to deliver a compatible, fast language implementation at a cost that a community and or enterprise can bear.
Both Truffle and PyPy are long running projects, but both offered more than just faster CPU times. i.e. see related work on accelerating SQL using RPython and most likely behind closed doors for Truffle.
Truffle also has a sane compatibility story for Ruby and similar ZipPy would have offered it for Python.
In the end, we are happy that we attempted this, are excited about the many potential ways that our work on Pyston could still be useful, and are happy to refocus ourselves on domains with more immediate needs.
was this written by the HR department ? They're basically happy to work on something dead, happy their employer (most probably) stopped supporting them, happy to change job. They're always happy. I'd love to work at dropbox :-)
Pyston gave up because Dropbox is moving to Go. That's a bad sign.
I would have advocated to move to pony instead, since it is a much cleaner and much faster language than Go, and has guaranteed deadlock and race safety, unlike Go or rust. It also needs much less memory.
The Actor model might feel verbose, but it gives you amazing concurrency, and with Pony's compiler, safety.
Pony is fast, concurrent by default, and type safe. That's amazing.
Compare that to manual locking required for rust concurrency or c++ concurrency. Or the copying overhead you get with Go, which can still deadlock.
pony does not need any locks, just proper types. And it can copy or share state in threads. And it has nominal or structural types. Old-style inherited or new mixin OO.
It is far advanced over rust. Just distributed actors as in Erlang are not there yet.
https://docs.google.com/presentation/d/1LO_WI3N-3p2Wp9PDWyv5...
Re-implementing the hot path (which is likely to be a small piece of code) in a non-garbage collected language (C or ideally Rust) is a much more sane approach than the big bang rewrite:
https://blog.sentry.io/2016/10/19/fixing-python-performance-...
PyPy is not feasible for most workloads. Pyston was making incremental improvements and their developers demonstrated deep knowledge about both Python and JITs (see their blog, "Why is Python slow"). Accelerating numpy is not important, and rewriting it in Python is not useful because the key numerics will never be as fast as Atlas. Only the Pyston approach of JITting the C runtime is likely to work in the wild. And Dropbox just gave up on it.
Unless another company like Facebook funds these two guys or another JIT/VM expert to do full-time work on Pyston, I believe Python's future as a competitor to Go and JS is dead.
As much as I would personally rather write ruby or bash over python (key error will be on my tombstone), for AWS automation stuff, load CSV, mess with it, stuff it into a DB stuff, simple REST APIs, and countless other small-ish automations, Python works just fine at the current speed.
And yet, none emerges as a general clear choice. I have the feeling this is because python is too dynamic making this a sysiphean effort.
I urge designers of future dynamic languages to study Lua and LuaJIT if you want your language to not inhibit JIT development.
That said, the Pyston guys knew what the problems were (dynamism in C runtime) and were making progress. This was the future of fast Python - JIT experts optimizing the runtime and feeding code and ideas back to CPython.
I think we will look back at this Pyston announcement as the turning point where people gave up on Python speed.
Not anymore than there were in Javascript's design -- which is as, if not more, dynamic.
It's just lack of funding. PyPy managed to get much faster than CPython, but doesn't have the funding or the blessing of being official (Javascript doesn't need it, since there were always multiple implementations).
for x in range(1000):
sum = sum + math.sin(x)
The global "math" and "math.sin" can be changed by another thread at any point. Javascript guarantees that this cannot happen.Also, what constructs of Javascript are more dynamic than python? I can only think of "eval" and "with", both of which the JavaScript JIT decline to compile and interpret instead.
Agreed. Also Smalltalk's memory model was a lot easier to optimize than languages like Python and Ruby. (Java inherited some of that.) Not having syntactic sugar makes optimization easier.
In addition, language designers need to make parser tools easy to make and robust.
What did they expect anyway for starting from scratch instead of improving on existing solid implementations.
PyPy doesn't even try for this, and yet it's key for any real world adoption. Building on top of PyPy wouldn't have helped with C API compatibility.
I really hope PyPy can organize funds to hire these guys to continue working. They have accumulated massive experience on JITting the Python runtime.