Hacker News new | ask | show | jobs
by eeZi 3501 days ago
Lots of incentives for us:

- clean Unicode support which prevents mistakes which used to bite us in production

- native async syntax, compatible with Tornado

- asynchronous generators (yield from a coroutine!)

- pathlib and os.scandir

- type annotations

- matrix multiplication

- chained exceptions

- faster dicts, ordered by default

So many useful features, and with the latest Python 3 releases porting has become really easy thanks to improved compatibility with the old syntax.

2 comments

They are all pluses, but most of those didn't exist till the last couple years. So effectively the first 6 or so years of Python 3 existing had much less incentive.

I think the flip around - ~30% adoption of a newest version at 1-2 years in - especially one that breaks backwards compatibility isn't bad.

I've started numerous python projects at work over the last year all on 2.7. I think we just started the last one. We're finally ready to jump to 3.

Indeed, and ordered dicts come from Py 3.6, which is in beta now and expected for December.

If async and this had been in Py3 from the start, they could've done a far better argument saying "hey, we broke all this stuff, but you get asyinc I/O and faster dicts" (a note of faster dicts: since many classes and language mechanisms use dicts, it should have an encompassing effect on all of python performance -- maybe not 30% or 40% faster, but a few % all around, which is kind of what micro benchmarks are showing with 3.6 betas)

All of these incentives you listed are also doable in Py2k.
Native Async syntax won't be doable in Python 2.
We have gevent, tornado, twisted, pyuv.