Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
service
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
Freenet DSL
Who's Online
7 user(s) are online (6 user(s) are browsing encyclopedia)

Members: 0
Guests: 7

more...
partner

Free Pascal

Free Pascal (or FPK Pascal) is a 32-bit and 64-bit Pascal programming language Compiler.

=Introduction=

Free Pascal is a 32/64-bits multi CPU architecture and multi Operating System Compiler. The compiler implements the Borland Pascal programming language dialects (Turbo Pascal and Delphi_programming_language) 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 though a lot of people thought so. Writing Compiler with K is uncommon 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 version 2.0.0 is the latest stable version of Free Pascal.

FPC is a reasonably well documented Open Source project, with manuals having 1800 pages in total.

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 (software).

Free Pascal comes with a textmode IDE resembling Turbo Pascal s IDE. Though this IDE was a bit in deterioration 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.

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

=Language dialect=

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 - Delphi 6/7).

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 component object model IDispatch dual interfaces (dispinterfaces)
  • dispid in normal interfaces
  • packages (Lazarus (software) implements packages)
  • set types can have different size.
  • =History=

    == The early years ==

    Free Pascal emerged when Borland made clear there would be no Borland Pascal, 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_programming_tool), 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 compatibility 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 code generator was far too limited in many ways. The two most principal problems were that adding processors basically meant rewriting the code generator, 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.

    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 upped to 1.9.0. 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 support.

    The work continued with 1.9.6 (Jan. 2005) and 1.9.8 (late Feb. 2005) and version 2.0.0 was finally [http://www.osnews.com/story.phpnews_id=10607 released in May 2005].

    = The future =

    Road map for the short term (2.1.x)

  • create/improve the COM/OLE support. This has multiple facets:
  • COM compatible interfaces/vmt
  • Variants (needed for OLE)
  • implements style delegation
  • linking/debug/file formats related:
  • improve smart linking (get rid of .a files, less memory use)
  • improved packages and dynamic libraries (PIC!) support in general.
  • cross linking (2.0 is actually quite cross link capable already)
  • stabs->dwarf crossover.
  • Some form of Kylix compatible resources.(still under discussion)
  • Support for 64-bit (sized) native file types.
  • Apple Pascal related
  • Being able to pass a subprocedure to a different proc as procvar.
  • Some of these target functionality (specially in the linking section) might require restructures related to

  • introduction of an internal linker for some core platforms (no more LD)
  • Rewrite of module (unit) handling
  • = Targets =

    The FPC compiler s availability depends on the major version.

    The current stable version 2.0.0 has support for the following processors

  • iA-32 (Intel 80386 and compatibles)
  • PowerPC
  • ARM architecture (Zaurus)
  • Sparc v8 and v9
  • AMD64 (x86_64)
  • The operating system list is:

  • Linux, (all CPUs)
  • FreeBSD
  • Mac OS X and Darwin (operating system) (PowerPC)
  • Mac OS
  • DOS (Go32V2 extender. PMode extender sometimes used for embedded projects),
  • Win32,
  • OS/2 (EMX and native)
  • Novell NetWare
  • The previous stable release 1.0.x was available for processors

  • Intel 80386 and compatibles and
  • Motorola 680x0
  • and supported the following operating systems

  • Linux, (x86/m68k)
  • FreeBSD,
  • NetBSD, (x86/m68k)
  • DOS (Go32V2 extender. PMode extender sometimes used for embedded projects),
  • Win32,
  • OS/2 (EMX)
  • Classic Amiga (m68k)
  • and the beta platforms:

  • BeOS, (beta)
  • SunOS (Solaris),
  • QNX
  • Windows CE
  • =See also=

    *Lazarus (software), a RAD (Rapid Application Development) IDE (Integrated Development Environment)

    =External links=

    *[http://www.freepascal.org/fpcmac.html FPC on Mac] -- Status page for FPC to Classic Mac OS ports. (Mac OS X port is done by the FPC Unix crew) *[http://www.freepascal.org Free Pascal] *[http://lazarus.freepascal.org Lazarus, a RAD for FPC] *[http://www.osnews.com/story.phpnews_id=10607 Introduction to Free Pascal 2.0], by Daniël Mantione, with in-depth introduction to the new version and a bit of its development history. *[http://crossfpc.untergrund.net/ CrossFPC] - a free toolkit to integrate the Free Pascal compiler, targetting various OS and hardware platforms, into the Borland Delphi_programming_language IDE. See more about it from [http://www.codecomments.com/Kylix/message541921.html this mailing list discussion]. *[http://aldona.mii.lt/pms/fps/en/ FPS] complete Win32 based IDE for FPC, including debugger (trace, breakpoint and watch windows)
  • http://www.mis-algoritmos.com