Free Pascal

From Wikipedia, the free encyclopedia

(Redirected from Freepascal)
Jump to: navigation, search
Free Pascal
Image:FPCLOGO.png

Free Pascal being operated via the command line of zsh
Developer Florian Klämpfl & Volunteers
Latest release 2.2.0 / September 10, 2007
OS Cross-platform
Genre Compiler
License GNU General Public License
Website www.freepascal.org
The FreePascal IDE for Linux. The computer was being prepared to be used in 2002 National Olympiad in Informatics, China
The FreePascal IDE for Linux. The computer was being prepared to be used in 2002 National Olympiad in Informatics, China

Free Pascal (or FPK Pascal or even FPC Pascal) is a free, portable, Pascal compiler.

Contents

Free Pascal is a 32/64-bit multi-architecture and multi-operating system compiler. The compiler implements the Borland Pascal dialects (Turbo Pascal and Delphi) as well as some MacPascal constructs and is available for most common operating systems.


Free Pascal used to be known as FPK Pascal, since FPK are the initials of the author, Florian Paul Klämpfl. FPK Pascal never meant "Free Pascal Kompiler". Writing "Compiler" with K is uncommon in German. To avoid this confusion, at the end of 1997 the name of the project was changed into Free Pascal Compiler (FPC).

Free Pascal comes with a text mode IDE resembling Turbo Pascal's IDE. This IDE deteriorated for some time because of a missing maintainer, but in a common effort in the second half of 2005 and the first months of 2006, most major bugs were fixed and the IDE became release-worthy again.

Like Turbo Pascal and Delphi, Free Pascal has excellent support for integration of assembly language in the Pascal code. FPC supports multiple architectures and notations in the internal assembler.

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.

FPC adopted the de facto standard dialects of Pascal programmers: the Borland dialects. (Specifically: Borland Pascal 7 and Delphi 2 for version 1.0.x, and for version 2.0.x the target versions for the Delphi compatibility changed to 6/7). However, the project has a compilation mode concept, and the developers made it clear that they would incorporate working patches for the ANSI/ISO standardised dialects to create a standards compliant mode.

A small effort has been made to support some of the Apple Pascal syntax, to ease interfacing to Mac OS (X). Since the Apple dialect implements some of the Standard Pascal features that TP/Delphi miss, FPC is a bit more ISO compatible than these.

The project has missing Delphi functionality, for example automatic COM IDispatch dual interfaces (dispinterfaces). as well as compiler supported import/export of classes from/to shared libraries (useful for e.g. Lazarus, which implements packages of components)

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 became 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.

The initial 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 five years before Kylix), the DOS port was adapted for use in OS/2 through the EMX extender. The DOS version also 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 release aiming only for Turbo Pascal compliance: later releases would add a Delphi compatibility mode. 0.99.5 was also ported to systems using a 680x0 CPU.

With 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 bug-fix/stabilisation releases that followed, last, 1.0.10 in July 2003) was widely used, both as an enterprise and educational tool. For the 1.0.x releases, the port to 680x0 CPUs was redone, and the compiler produces stable code for a number of 68k Unixes and AmigaOS.

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 code generator was far too limited in many ways. The principal problems were that adding processors basically meant rewriting the code generator, and that the register allocation was based on the principle of always keeping three free registers between building blocks, which was inflexible and hard to maintain.

For these reasons, FPC 1.1.x branched from the 1.0.x main branch in December 1999. At first, changes were mostly cleanups and rewrite/design to all parts of the compiler, and then the code generator and register allocator were rewritten. As a bonus, remaining missing Delphi compatibility was added.

The work on 1.1.x continued slowly but steadily, and in late 2003 the PowerPC port started working, followed by ARM and SPARC ports in summer/fall 2004. The AMD64 port followed in early 2004. 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 changed to 1.9.0. These were quickly followed by version 1.9.2 and 1.9.4. Version 1.9.4 was special because it was the first version with Mac OS X support.

The work continued with version 1.9.6 (Jan 2005), 1.9.8 (late Feb 2005), 2.0.0 (May 2005), 2.0.2 (Dec 2005), 2.0.4 (Aug 2006), and the current stable release, 2.2.0 (Sep 2007).

The following features are missing from 2.0.x and are needed. Those marked with † are currently actively being worked on in the 2.3.1 branch.

  • Create/improve the COM/OLE support. This has multiple facets:
    • COM compatible interfaces/vmt
    • (OLE)Variants (needed for OLE)
    • implements style delegation
  • Linking/debug/file formats related:
    • † Improve smart linking (get rid of .a files, less memory use) wince/32/64 only.
    • Improved "packages" and dynamic libraries (PIC!) support in general.
    • † Improve cross linking.
    • † stabs->dwarf crossover. (64-bit platforms to be implemented first)
    • Some form of Kylix compatible resources. (Still under discussion)
  • Apple Pascal related
    • Being able to pass a subprocedure to a different procedure as a procvar.
    • Tail recursion
    • stackframe omission.
    • temp (register) based CSE optimization

Some of these features, especially in the linking section, may require changes:

  • Rewrite of module (unit) handling, postponed to post 2.2

The FPC compiler's availability depends on the major version.

In addition to all targets supported by 2.2, this version supports:

  • Symbian OS - with UIQ toolkit
  • Mac OS X 64-bit (Darwin/x86_64)

The current stable version 2.2.0 adds support for the following systems, on top of existing platforms in 2.0.x:

Processors:

Operating systems:

The previous stable release 1.0.x was available for processors

and supported the following operating systems

and the beta platforms:

  • Pixel image editor: Photoshop-like image editor made with FPC
  • Peazip: open source archiver, made with Lazarus/FPC
  • Morfik: Morfik WebOS AppBuilder uses Free Pascal to produce the resulting CGI binaries

Wikibooks
Wikibooks' [[wikibooks:|]] has more about this subject:

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.