Free Pascal (or FPK Pascal) is a 32-bit and 64-bit Pascal compiler.
Introduction
Free Pascal is a 32/64-bits multi CPU architecture and multi Operating System compiler. The compiler implements the Borland Pascal dialects (Turbo Pascal and Delphi) and is available for
most common operating systems.
Free Pascal used to be known as FPK Pascal. FPK are the initials of the author. FPK Pascal never meant "Free Pascal Kompiler" though a lot of people thought so. Writing "Compiler" with K is very unknown in German anyway. At the end of 1997, the name of the project was changed into Free Pascal Compiler (FPC) to avoid this confusion and because more and more people did contribute.
Currently there are two major series. The 1.0.x series is the stable releases series, the 1.9.x is the beta release series. There will be no 1.0.x stable releases anymore, except maybe for targets not (yet) supported by 1.9.x (like the m68k platforms).
FPC is a reasonably well documented Open Source project, with a manual that counts over 1000 pages.
The visual parts of the Delphi libraries (the VCL) and the creation of a visual IDE and RAD are part of a separate project, Lazarus.
Free Pascal comes with a textmode IDE resembling Turbo Pascal's IDE. Though this IDE was a bit in detoriation for some time because of a missing maintainer, in a common effort most bugs were fixed so it's in a pretty good shape now.
Language dialect
FPC conformed to reality, and adopted the de-facto standard dialects of Pascal, used by 99% of the
Pascal programmers: the Borland dialects. (Specifically: Borland Pascal 7, for 1.0.x Delphi 3, and for 1.9.x D6/D7).
However the project has a compilation mode concept, and the team made clear that it would incorporate working patches for the Ansi/ISO standardised dialects to create a standards compliant mode.
Also, a small effort has been made to support some of the Apple Pascal syntax, to ease interfacing to Mac OS (X).
Missing Delphi functionality
- Delegation using the "implements" keyword
- automatic COM IDispatch dual interfaces (dispinterfaces)
- dispid in normal interfaces
- packages
- set types can have different size.
History
The early years
Free Pascal emerged when Borland made clear there would be no Borland Pascal 8, and the next version
would be a Windows-only product (which turned out to become Delphi later on), and a student (Florian Paul Klämpfl) started working on his own compiler. The compiler was written in the (Borland) Turbo Pascal dialect from the start and produced 32-Bit code for the go32v1 DOS extender used and developed by the DJGPP project at this time. Originally the compiler itself was a 16-bit Dos executable compiled by Turbo Pascal. After two years, the compiler was able to compile itself so it became 32-bit too.
Expansion
The proto 32-bit compiler was published on the net, and the first contributors joined the project, In the years after publishing on the internet, a linux port was made by Michael van Canneyt (a full 5 years before Kylix), the Dos port was adapted to the OS/2 EMX extender for OS/2 use, and the dos version improved gradually, and migrated to the go32v2 extender. This culminated in the 0.99.5 release that was much more widely used than the versions before, and the last Turbo Pascal only release, since the later releases would add a Delphi compability mode. 0.99.5 was also ported
to systems using a 680x0 CPU.
In 0.99.8, the Win32 target was added, and a start was made with incorporating some Delphi features. Stabilising for a 1.0 release started, and this milestone was reached in july 2000. The 1.0.x series (and the bugfix/stabilisation releases that followed, last, 1.0.10 in july 2003) were widely used, both in commerce and education. For the 1.0.x releases, the port to 680x0 CPUs was redone, and the compiler produces stable code for a number of 68k unices and AmigaOS.
The Next Generation
During the stabilisation of what would become 1.0.x, and specially when porting to the m68k systems, it was clear the design of the codegenerator was far too limited in many ways. The two most
principal problems were that adding processors basically meant rewriting the codegenerator, and that
the register allocation was based on a principle (always keep 3 free registers between building blocks) that was hard to maintain and inflexible.
Because of this reasons, FPC 1.1.x branched from the 1.0.x beta branch in december 1999. At first, changes were mostly cleanups and rewrite/design to all parts of the compiler, and then the codegenerator and register allocator was rewritten. As a bonus, remaining missing Delphi compability was added.
The work on 1.1.x continued slowly but steadily, and in early 2003 the PowerPC port started working, quickly followed by AMD64 (on the simulator, no silicon yet at that time), and initial ARM and Sparc ports. The AMD64 port effectively made the compiler 32/64-bit.
In november 2003, a first beta release of the 1.1.x branch was packaged, and for the occasion, the version number was upped to 1.9. These were followed quickly by 1.9.2 and 1.9.4. 1.9.4 was special
because it was the first version with Mac OS X compability.
At the moment of writing, the FPC core team is still stabilising 1.9.x, and this version will be
released as 2.0. However the beta series has proved that 1.9.x is already more stable than the
1.0.x release branch, the stability targets are just higher for a 2.0 release.
Targets
The FPC compiler's availability depends on the major version.
The current release series 1.0.x is available for processors
and supports the following operating systems
and the beta platforms:
The current beta series 1.9.x has support for the following processors
however beta release versions are only available for x86 and ppc.
The operating system list is:
The 1.9.x OS list is significantly shorter than the 1.0.x one, but this is expected to expand
when 1.9.x goes gold as 2.0.
External links