- Allow unpaired surrogates when translating between "UTF-8" and
"UTF-16LE". This allows Windows-style filenames to be processed
losslessly on UNIX-like systems, even if they are not valid UTF-16LE.
- Implement UTF-8 and UTF-16LE codecs ourselves and drop the iconv
requirement. This was necessary to allow surrogate codepoints, but it
also provides better performance and actually results in *fewer* lines
of code and a slightly smaller binary.
- Drop support for multibyte encodings other than UTF-8 on UNIX-like
systems. It is probably not worth the effort to support such
encodings. Interestingly, the support was entirely broken before
v1.9.1, yet no one ever complained...