On 8/14/19 7:19 AM, Niall Douglas wrote:
Lots of great points earlier. I mostly agree with them.

I would support such a thing. All  other languages went there and it
works great for them. Python will for example assume utf8 in the absence
of pragma.
This will be probably an underappreciated point: Python started off
pre-Unicode, same as C++, and later on switched the default from "your
current C locale" (i.e. only 7-bit ASCII was portable) into utf-8.

Their world did not end. Some users complained, sure, but because it was
announced in advance, and one could pragma opt-out, it was fine.

I suggest you read https://snarky.ca/why-python-3-exists.  Some choice quotes:

We will never do this kind of backwards-incompatible change again

We have decided as a team that a change as big as unicode/str/bytes will never happen so abruptly again. When we started Python 3 we thought/hoped that the community would do what Python did and do one last feature release supporting Python 2 and then cut over to Python 3 development for feature development while doing bugfix releases only for the Python 2 version. That obviously didn't happen and we have learned our lesson.
I think the lesson we should take from Python3 is that caution is warranted and that we need to be (as always) very careful about changing the semantics of existing code.

C++ could do with being bolder in becoming simpler and less surprising
for end users. It is not unreasonable for a German to type an umlaut
into a string literal, and expect that C++ source code to be portable
and unsurprising by default.

Personally, I appreciate that the C++ committee is sensitive to backward compatibility.  I agree we need to make things easier for programmers, and there are steps we can take that don't require a utf-8-all-the-things approach.


SG16 Unicode mailing list