is that it not only insists on treating all text as Unicode when we still live in a world full of strings of unspecified encoding URLs HTTP , email , UNIX filenamesYou mean a world full of bytes of unspecified encoding , and that ' s why I like this new distinction being enforced . Yeah , it bumps up the timing of when you teach beginners the difference between bytes and strings . Good . This might be bad for bootcamps who crank out low quality cargo culters , but for actual education of beginners it ' s a nonissue . If you aren ' t working on toy problems , then the encoding guessing heuristics or assumptions are guaranteed to fail when used on real world problems . This is the hell I ' ve lived in more than once and the best case scenario was to try and minimize the unnecessary failures . Now they can be completely eliminated , if you know what bytes are . I totally agree with you about the GIL , as well as the new pains trying to integrate with POSIX but it ' s not that much harder . It was the right call to switch to Go .