String comparison functions vs user manual
Describe the feature
In the user manual for unicode strings, the functions string=
and friends use codepoints for comparison. However, the actual implementation, for example, string=*
appears to just use the 16-bit code unit instead. I'm guessing that when we moved the additional functionality of string casing function from the CL package to the Unicode package, we lost this.
If that is true (or not), we should probably add versions to compare via codepoints. If we don't, then characters beyond the BMP may compare in a funny way, and equivalent surrogates may compare as different because surrogate pairs can be in either order.
Similar problems occur for string-equal
and friends. We should also support a :casing
keyword to allow simple or full downcasing of the strings before comparing.
Lastly, the section says string-trim
and friends handle surrogates. But this seems not the case, looking at the functions in string.lisp.
Is there a prototype?
No prototype is available, unless we accidentally removed it as mentioned above.