#1 2023-01-07 11:11:39

From: Crete, Greece
Registered: 2020-02-18
Posts: 398

fpc goes unicode

Date: Fri, 6 Jan 2023 18:05:43 +0100 (CET)
From: Michael Van Canneyt <michael@freepascal.org>
To: Lazarus mailing list <lazarus@lists.lazarus-ide.org>,  FPC
    development mailing list <fpc-devel@lists.freepascal.org>
Subject: [Lazarus] Unicode RTL for FPC


I'm currently working for a company (Tixeo.com) that is preparing to use FPC to recompile their flagship product (written in Delphi) for certain targets.
As part of this work, we're striving to make the Free Pascal RTL and Packages more compatible with recent Delphis.
That means:
- String = UnicodeString, Char=WideChar
- Dotted units.
Before you all get a heart attack:
Because backwards compatibility is important, FPC will of course continue to distribute a backwards-compatible RTL and packages, with single-byte string. All FPC modes will continue to function.
To make this possible a feature called 'subtargets' has been implemented.This can be used for other things than the unicode RTL, but will be used forthe unicode RTL.
The RTL is compiled 'normally' and with subtarget=unicodertl; this will result in 2 separate sets of .o/.ppu files:

The normal CPU-OS directory and a CPU-OS-unicodertl directory.

The first part of the work has been pushed to gitlab in a branch called unicodertl (NOT the svn/unicodertl branch):

- subtarget support is there
- The rtl compiles with make SUB_TARGET=unicodertl with the compiler as it is in that branch.

Needless to say, this is a major change that will need thorough testing. The earlier testing starts, the better.
For those that wish to help in testing:

- Update your git clone
- switch to branch unicodertl.
- in the toplevel FPC directory, do a

make all

- if that went well, next to your fpc.cfg, create a file fpc-unicodertl.cfg  with the following contents:


- to create a Unicode RTL, in the rtl directory do a make clean all SUB_TARGET=unicodertl PP=path/to/the/new/compiler
- if that worked, you can try then a make install SUB_TARGET=unicodertl
Note that this is NOT ready for production use:

- The packages have not yet been converted (working on this now) and will certainly fail...
- a private testsuite has been run and gives no failures, but the complete compiler testsuite still needs to be examined.
- Dotted names will be created after the unicode transition is deemed complete.

if you do wish to test and spot errors in the RTL or compiler, please file a bugreport.
You can use a tag 'UnicodeRTL' to report bugs for this.



#2 2023-03-17 08:38:59

From: France
Registered: 2010-06-21
Posts: 14,310

Re: fpc goes unicode

My guess is that mORMot is already compatible with this version...
The code base already handle both string=AnsiString (FPC and old Delphi) and string=UnicodeString (Delphi 2009+) definitions.

Some testing may be needed, once this version is stabilized.

Side note: your title "FPC goes Unicode" or "Unicode RTL for FPC" are misleading, because the truth is that FPC is Unicode since always, but in fact it is more like "FPC goes UTF-16 for strings".
UTF-8 is already Unicode. http://utf8everywhere.org/


Board footer

Powered by FluxBB