Hacker News new | ask | show | jobs
by PythonicAlpha 4445 days ago
This is a result of some not so optimal design decisions in the past.

I remember, when Py3 first came out, everything was incompatible -- unnecessary incompatibilities like the u" notation for Unicode string literals that was dropped. Unnecessary incompatibilities in the C-extension-module implementation layer. And so on. The list of incompatibilities was just huge.

Later several of them where dropped, like the string literal trouble ... But than the trouble was already done. Many extension modules where not lifted to the new version, since the overhead was to big.

I think, many more projects would have adopted Py3, if more extension modules would support it.

The huge library of extension modules was always the strength of Python. Now we have many projects still running on Py2, because Py3 did ignore this strength.

1 comments

> unnecessary incompatibilities like the u" notation for Unicode string literals that was dropped

I mean a hard difference between a string and bytes and strings being utf-8 by default seem to be a necessary (and good) reason?

But unicode strings are the default in Python 3, so they could have kept the 'u' syntax and just let it be a no-op. I think that's what was meant.
Right. And they even changed it, I think in Py3.3 -- but that was very late, when many people already decided not to port.