"Once the commercial world catches up to python 3..."
fwiw, lack of PyPy support is one of the most common reasons I hear for people being leery of Python 3. Of course the people using PyPy aren't the people excited to move to Python 3, if they're effectively mutually exclusive.
PyPy still doesn't officially support Python 3. The issue has always been that there just aren't any real-world benefits to upgrading from a user's standpoint.
I know more people that use Python 3 in production than ones that use PyPy in production. If PyPy really thinks of itself as being the future, I don't understand why they are not adding more Python 3 support. I understand that they don't get funding for that, which to me only means that the people that use PyPy have lots of legacy code themselves.
They might be the future of Python 2.7 though, a very fast Python 2.7, but still with all the annoyances and quirks that Python 2.7 brings. And without a lot of the nice features that are in Python 3.
I don't think so. I know it's popular to hate on Python 3, but the community has not rejected Python 3, they've just taken a while to cozy up to it. The transition was always intended to be gradual (perhaps not this gradual, but still).
At this point, the chicken-and-egg problem has effectively been solved for Python 3. Practically every major Python library has Python 3 support these days. The mainstream Linux distros are switching to Py3 as the default this release cycle. The largest remaining holdout will probably be PyPy diehards, but 3 years is a long time and I'm confident that the community's increased interest in Py3 will be made manifest to the PyPy development team in the not-too-distant future.
I believe that the posted site is correct, Python 3's time is now. While there probably will be a fork specifically intended to provide security backports for legacy applications, I don't think it will see widespread use (the people who continue to run Py2 applications at that point will probably keep running the never-to-be-updated again CPython runtime).
So it's very hard to get all PyPy devs to focus on Python 3.3. Money can change the direction, but there are also features that are important to us, like warmup time and STM that we don't want to give up for 3.3.
Additionally, 3.3 has very little business value. All PyPy customers use Python 2 (the ones that can buy commercial support at least) and small performance improvements matter more to them.
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 running any more efficient either, that's PyPy and Pyston territory (Using PyPy can allow you, under some circumstances, to seriously cut down the amount of hardware you need). It doesn't magically add new features, or fix the bugs.
Python 3 will go down in history as the best example of what you should never do while growing a language. People like to complain about C++'s complexity, but unlike Python 3, C++ isn't threatened by its own past selves, and that's despite adding features that are arguably far more compelling to look into than the various differences between Py2 and 3.
It's also very hard to regain lost trust. The trust that was lost after what was done to Python with Python 3 can never be fully regained. I can write software in C++, Java, C#, Javascript, Lisp, Perl 5 (which is still being worked on) and so on and have an expectation not to have to go through something like Py3. To a lesser extent, even Ruby, although it breaks compatibility from time to time, it never went through anything as major in a one time fashion as Py3 did, which is why the ruby ecosystem hasn't self destructed.
With moore's law being utterly dead, the fact that all the interesting improvements to language implementation are happening only to 2.x rather than 3.x really contradicts your idea that the future lies in 3.x.
I've been using PyPy as my main development platform for quite some time now. So for me if I were to move to Python3, it would have to be Python 3.2 since that's all PyPy3 supports. I've also been told that PyPy3 is not production-ready. While PyPy4 is, so it's a no brainer for me to develop for PyPy4 then fallback to CPython2.7 if I run into problems.
Fingers crossed, but so far my home business is running off pure PyPy4. No C-extensions, no interpreters. :)
I think the last sentence of you really also is in part its own cause. People excited about Python 3, are not using PyPy since it seems like it is not maintained at all.
At least adding the same improvements that were added to the 2.7 interpreter would put a bit of confidence in that. Most libraries also support up until CPython3.3, which as far as I know is mostly caused by the fact that the "u" string prefix is allowed again. So just adding that and keeping the core up to date with the PyPy2.7 releases would make it usable.
This could very well inspire other devs to add support for the other features that they are missing from later releases CPython3 releases.
The people who haven't upgraded to Python 3 in their projects are probably mostly people with dependencies on py2.7 libraries.
Happened to me in my last project.
I started using pypy until some bug in pypy prevented me from using an important package.
Switched to python 3 until some other dependency wasn't available.
So it's a pity, but i was more or less forced to use py2.7 (without putting major effort into 3rd party libraries).
After the initial round of "useful PyPI packages don't support Python 3 though, I can't migrate", that "I know 3.x is different and I'll have to read up on the differences....later" was absolutely the biggest blocker for adoption imo.
I know proficient Python programmers who were starting projects from scratch in 2017 and didn't want to use Python 3.x because they were in a hurry, worried that they didn't know how to write Python 3.x in a timely manner because they hadn't invested the time to learn it. Lots and lots of people just knew it was a known unknown for them, had no idea of the magnitude of the effort required to switch (tiny for new projects! tiiiny) and just put "look into this" somewhere deep on their backlog.
I guess I'm in the minority here of being a full time python developer and thinking 1) these are all totally unexciting for day to day python use, and 2) the only actually interesting one (async io) is covered with:
Not going to lie to you. I still don't get this.
...which is not really a call to arms for py3 as far as I'm concerned.
(pypy support and potentially having one binary running 2.7 and 3.x at the same time is much more exciting)
I was downvoted before for remarking that Py 3 needed a killer feature or two to drive adoption, similar to this post. Perhaps I was not charitable enough.
I'd personally like to see pypy bundled and a complete package manager solution, as well as usability features like bpython. I don't think it is necessary to dump it. It just needs a little excitement.
Still, after many years I am finally planning to move my stuff to Py 3.4 when it comes out next year. No particular reason, it just feels like it is time. Shame that it doesn't look like it will get into 14.04.
don't want to kick someone when their obviously down. But, are you losing $$ because of pypy's lack of support for python 3? Or is this a case of wanting to be "one of the cool kids" using the latest stuff?
I only ask because I have yet to get an answer as to how the lack of python 3 support for <my pet framework/tech> is hurting anyone at this moment.
FTR, I'm anticipating the gil-less implementation to see how that performs more so than language syntax updates. But I'm happily getting work done with python 2.7.3 in the meantime.
As someone maintaining packages on pypi, I can tell you that demand for Python 3 support is growing and people are beginning to port packages for their own needs.
I expect we'll see python 3 overtake python 2 in new projects within 3 years. I realize that's still pretty far off, but these things take time. You have to give the PSF credit for great support of the 2.x series.
I'll go one step further and advocate for the PyPy developers please not to port to Python 3. Here we have a project which has clearly become the go to for 2.x people who would like Python to move forward in a way which makes a real difference to them, and there is an ideal opportunity here for this to become the de-facto continuation of the 2.x line, with a real future, as an alternative to the 3.x forcefeed.
If you want to use just Python 3, after the initial port there is no issues with having to maintain Python 2/3 compatibility.
Working in open source, there is going to be a time when I stop supporting Python 2.x, and already I and others are building libraries that are Python 3.x first, are developed on Python 3.x and Python 2.x is an after thought in testing.
PyPy will eventually have to catch up to 3.x, and no, the future is definitely not 2.7.
Don't get me wrong - I'm totally on board with Py3, I'm just saying for newcomers to the language, they hear, "Python 2, if you want to be compatible" and "Python 3, it's the future" - and sometimes, they just throw up their hands and say - "I have no idea what version I should use."
I think things will get better when operating systems start to default to Python3.
I think you missed my point. I presented a hypothetical situation where in an alternative reality Python 3 happened to instead integrate something like PyPy in it (or say have any other mind blowing features of that caliber).
> So, you'd want people to switch to PyPy, not Python 3.
I personally would want Python to be used more because I like it. But I see how a community has been divided over what I see is an un-necessary backward incompatible change to the language.
To put it another way. I would rather not have backwards compatibility issues and just keep having 2.8, 2.9, 2.10, if all we got was what we got with 3.x
That fear held me back 7 years ago when I started learning Python. In 2017, having worked in many projects, what I have to tell you is this: I never found such case where Python 3 wasn't supported, and I should've learned Py3 to begin with. YMMV, but the fear was unfounded back in 2010, and even more so today.
There are very few projects without Py3 support, and most you'll find without Py3 support is because the project has been dead for quite some time.
fwiw, lack of PyPy support is one of the most common reasons I hear for people being leery of Python 3. Of course the people using PyPy aren't the people excited to move to Python 3, if they're effectively mutually exclusive.
reply