On 12/2/2011 10:32 AM, Ingo Weinhold wrote:
On 2011-12-02 at 12:58:10 [+0100], Michael Bridgers<mibrid@xxxxxxx> wrote:I want to make it very clear that these changes will be backwardly compatible. Of course, by its definition, there will be changes to the behavior of the BString. But for current operations that maintain a valid UTF-8 string, the behavior will not change. The behavior will only be different when the operation would have created an invalid UTF-8 string. Plus, I will add enhanced operations to the class.A behavioral change like this is a problem for backward compatibility. Be did not document BString to be able to hold only valid UTF-8 strings, but any valid C-String. So a behavioral change in this respect might break things. CU, Ingo
Keep in mind that all valid C-strings are a subset of valid UTF-8 strings. All valid C-strings will continue to work as they currently do.
It makes no sense to say you want to allow invalid UTF-8 strings. They are meaningless as strings. Plus, you can't do any operations on them that are meaningful.
You are correct that Be did not document the BString class as only holding valid UTF-8 strings. But Be also never implemented ANY UTF-8 support other than their documentation saying that the BString held UTF-8.
In my testing I'm going to verify that these changes are TRULY backwardly compatible. I've worked with Unicode enough to know that not only is it possible, but that I can get it to work.
These changes ARE going to be backwardly compatible. Michael