Graeme Geldenhuys schrieb:
On 20/08/12 08:52, Sven Barth wrote:

Just to avoid confusion: The reference counted 2-byte string type on all
platforms is UnicodeString, not WideString (the latter is not reference
counted on Windows platforms).

Please correct me if I am wrong, but I think WideString was reference counted an all platforms "in the beginning" - like Martin mentioned. Later it was changed, and the new UnicodeString become the "reference counted on all platforms" type.

WideStrings on Windows platforms are allocated in *system* space, so that they can be used across processes. Reference counting can occur only according to the Windows (COM) rules. Delphi UnicodeStrings are stored in the (local) program space instead, so that local reference counting can be used. Dunno about passing such strings to other processes, though.


The codepage aware string type was added to 2.7.1, because there already
existed a branch for this and "just" needed to be merged. There does not
yet exist any code for Unicode resource strings.

FPC's Unicode support is still in its infancy. It is not just resource strings that are missing. As my recent message from the fpc-users mailing list shows.

Vital decisions of how Unicode should be implemented are still not decided by the FPC team. There is a major problem in the FPC project though. The FPC team seems to be dead-locked on how to implement Unicode features. Nobody can agree on anything. Thus no work can be started on the RTL and FCL.

In the meant time many projects keep implementing there own Unicode workarounds. Not a good sign, but all we can do.

IMO UTF-8 is supported by all platforms, so that there exists no urgent need for adding UTF-16 support. More problematic is the default "String" type break between older (AnsiString) and newer (UnicodeString) Delphi versions. The consequence of following *that* decision were incompatible FCL (and LCL) classes, resulting in double maintenance efforts. This duplication can be avoided by using the implicit string conversions, offered by the new string types. This applies also to the handling of resource strings. The runtime impact depends on the string model used in a *program*, where the use of UTF-16 strings would require many conversions in *interfacing* UTF-8 components/libraries.

It's unclear whether UTF-16 strings really allow for faster string handling, since *full* Unicode support still has to take into account UTF-16 *surrogate pairs*, no real difference vs. handling of UTF-8 multibyte sequences.


So the BIG question remains: When will the FPC team sit down and hash out the details of implementing Unicode support? Please note, I'm not saying "implement it", just saying... "agree on how it should be implemented". If the FPC team stays in a dead-lock, then maybe the better option would be to allow the public to vote on it.

What special support do you expect?
Which of these features are essentially different for UTF-8 and UTF-16?

DoDi

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to