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.
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.
"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.
While CPython 3.x is rock solid and shipped years ago - no argument there - both Pypy and Jython still lacks stable Python 3.x releases. That's a major migration pain point.
It is hard trying to introduce Python 3 at a place that has systems that depend on both Cpython and Jython. Jumping between python 2 and 3 between projects is quite taxing mentally. And staying on python 2 only leaves me with a sense of lingering doom to say nothing of having to endure all the idiosyncrasies of python 2.x. I really enjoy the few moments when I can use Python 3.
It is perhaps easy to consider the 2 vs 3 debate over and done with for people who can just disregard Pypy and Jython entirely in their environment. I probably would think so myself had I not been so unfortunate to be the unwilling maintainer of solutions dependent on Jython right now.
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. :)
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 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.
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).
What would be the point of this? Are you suggesting PyPy forks the Python language itself? PyPy hasn't implemented new core language features, and I don't see them doing so in the future. Python 3 is actively developed, fixing many warts in the language and adding great new features.
As annoying as the transition to Python 3 is, it's the future of the language. I was actually one of the curmudgeons who stuck with 2.7 and grumbled about not wanting to switch until a few months ago. I've accepted that I need to, at the very least, start new projects in Python 3 wherever possible. The vast majority of popular third party libraries have been ported over at this point. Python 2's death is inevitable, even if it will take many more years.
Ironically, Py3s purpose _is_ to fix Python’s warts. You just seem to be lucky enough to not have encountered them yet. :) Python 3 was about _losing_ baggage so we can start adding features again.
The fact that Python 3.3 has a lot of more features than Python 2.7 is is due to the fact that 2.7 was the last release that got Python 3 features back ported (two years ago) and is in bug-fixing mode since then. (and people in these comments still complain about Python moving too fast)
There also have been efforts to ease the pain for PyPy et al by requiring new modules to have also a Python based implementation and by – put simply – giving them money from PSF funds. Jython’s problem was rather lack of interest and developing funds as they were stuck at 2.5 forever until one of their developers got funding to bring it to 2.7.
It’s not all as bleak as it seems to you and chances are that your porting effort will be negligible as soon as the dependencies are met.
And the GIL…just leave it be. There are really no plans or efforts to remove it for many, many reasons I won’t reiterate here.
That's what I said in the other reply. Python community is stuck with three versions: 2.6.5, 2.7.x, and 3.x (and now 3.3). Cpython should now announce a deadline for support for 2.6.5 and 2.7.x. I don't think 2.7.x is catching up with Python 3.3 branch anymore. I am not sure. The versioning 3.1, 3.2, 3.3 still throwing people off, at least for me.
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).
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.
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.
Python 3 is much more than a version number increment. Newbies are advised to use Py2 only because there are more libraries available for 2, and newbies are more likely to need more libraries. This is changing slowly but surely as more libraries go to 3.
2.7 is the last major release in the Py2 line. It's all Py3 from here on out, so people are starting to take Py3 seriously, as they rightly should. Python 3 is now the default distribution in Arch Linux and other bleeding-edge distros will be following soon. I'm kind of disappointed the major shift didn't start happening earlier, though the long cycle was to be expected.
"Stable" and "production-ready" Python 3 releases have been out for about two years now, by the way, so this definitely isn't a case of everyone jumping over just for a higher version number, and Python 3 has been "battle tested" for a while. I'm sure as the real heavyweights like Scipy start seeing real Py3 usage, cpython3 will get a lot of fixes and improvements.
We're just starting to hit "conversion critical mass" where everyone is beginning to see it's important to upgrade Py3 soon. I would guess in the next year most major projects will have ports underway if not completed, so the Python world will be undergoing a major transition this year, which may complicate things for a while but is for the long-term good of the community. :)
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.
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.
reply