<story><title>So Long Surrogates: How We Moved to UTF-8 in Haskell</title><url>https://www.channable.com/tech/so-long-surrogatesa</url></story><parent_chain></parent_chain><comment><author>Aardwolf</author><text>If only Windows, Java and JavaScript could also move away from internal usage of UTF-16, it&amp;#x27;s purely a legacy format and the worst of both worlds (UTF-32 and UTF-8). Even worse is that unicode itself, which should in theory be a list of codes for glyphs, modifiers and other script related values, that&amp;#x27;s independent of encoding, had to have some codes reserved for &amp;quot;surrogates&amp;quot; for the UTF-16 encoding anyway. UTF-8 doesn&amp;#x27;t need such a thing...</text></comment>
<story><title>So Long Surrogates: How We Moved to UTF-8 in Haskell</title><url>https://www.channable.com/tech/so-long-surrogatesa</url></story><parent_chain></parent_chain><comment><author>crdrost</author><text>Oh wow. That is really not very much pain, as described.&lt;p&gt;I have to say, I never thought that the benefit of Haskell having a horrible native string type would be &amp;quot;you can just upgrade strings like any other dependency,&amp;quot; which is really kinda slick. You think about how much pain there was for Py2 -&amp;gt; Py3 where one of the big sticking factors was all of the distinctions around strings and encoding and byte arrays... this is comparatively quite nice. Makes me wonder how much of a programming language can be hotswappable.</text></comment>