You can clone with
HTTPS or Subversion.
The decoding functions like decodeUtf8With allow Text values to be constructed with invalid codepoints:
> decodeUtf8With (\_ -> fmap (\w -> chr (fromIntegral w + 0xDC00))) (Data.ByteString.Char8.pack "\227\129\130\187\227\129\130")
> Data.Text.pack "\12354\56507\12354"
Here, the codepoint U+DCBB is present in the decoded value even though it's reserved. If I try to run the same codepoints through pack, they are converted to the placeholder character.
Fixed by 1780bd7, thanks.