Home      Discussion      Topics      Dictionary      Almanac
Signup       Login
Free Pascal

Free Pascal

Overview
Free Pascal Compiler (FPC for short, and formerly known as FPK Pascal) is a free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 Pascal and Object Pascal
Object Pascal
Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:...

 compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

.
Discussion
Ask a question about 'Free Pascal'
Start a new discussion about 'Free Pascal'
Answer questions from other users
Full Discussion Forum
 
Unanswered Questions
Encyclopedia
Free Pascal Compiler (FPC for short, and formerly known as FPK Pascal) is a free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 Pascal and Object Pascal
Object Pascal
Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:...

 compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

.

In addition to its own Object Pascal
Object Pascal
Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:...

 dialect, Free Pascal supports, to varying degrees, the dialects of several other compilers, including those of Turbo Pascal
Turbo Pascal
Turbo Pascal is a software development system that includes a compiler and an integrated development environment for the Pascal programming language running on CP/M, CP/M-86, and DOS, developed by Borland under Philippe Kahn's leadership...

, Delphi, and some historical Macintosh
Macintosh
The Macintosh , or Mac, is a series of several lines of personal computers designed, developed, and marketed by Apple Inc. The first Macintosh was introduced by Apple's then-chairman Steve Jobs on January 24, 1984; it was the first commercially successful personal computer to feature a mouse and a...

 compilers. Dialect is selected on a per-unit (module)
Modular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...

 basis, and more than one dialects can be used to produce a single program.

A member of the write once, compile anywhere
Write once, compile anywhere
Write once, compile anywhere refers to writing software that compiles, and is thus usable, on all platforms. As opposed to Sun's write once, run anywhere slogan, cross-platform compatibility is implemented at the source code level, rather than at the compiled binary code level.There are many...

campaign, Free Pascal is available for many architectures and operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

s (see Targets). It has an excellent support for integration of assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

, and supports internal assembler in a number of dialects.

Separate projects exist to facilitate the development of cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

 graphical
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...

 applications, the most prominent one being the Lazarus
Lazarus (software)
Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...

 IDE
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

.

Supported dialects


Free Pascal adopted the de facto standard dialect of Pascal programmers, Borland
Borland
Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

 Pascal and, later, Delphi. From version 2.0 on, the Delphi 7 compatibility has been continuously implemented or improved.

In fact, the project has a compilation mode concept, and the developers made it clear that they would incorporate working patches for the ANSI
Ansi
Ansi is a village in Kaarma Parish, Saare County, on the island of Saaremaa, Estonia....

/ISO standardized 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
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...

 and Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

. Since the Apple dialect implements some Standard Pascal features that Turbo Pascal and Delphi omit, Free Pascal is a bit more ISO-compatible than these.

The 2.2.x series does not significantly change the dialect objectives beyond Delphi 7, instead they aim for closer compatibility. The project still lacks the Delphi functionality of compiler-supported exporting of classes from shared libraries, which is for example useful for Lazarus
Lazarus (software)
Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...

, which implements packages of components.

in the current development branch several Delphi 2006-specific features have been added, and some of the starting work for the features new in Delphi 2009 (most notably the addition of the UnicodeString type) has been done. The development branch also features an “Objective-Pascal” extension for Objective-C
Objective-C
Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...

 (Cocoa
Cocoa (API)
Cocoa is Apple's native object-oriented application programming interface for the Mac OS X operating system and—along with the Cocoa Touch extension for gesture recognition and animation—for applications for the iOS operating system, used on Apple devices such as the iPhone, the iPod Touch, and...

) interfacing.

The current trunk (2.5.1) version implements basic ISO Pascal mode, though many things such as Get and Put procedure and file buffer variable concept for file handling are still missing.

The early years


Free Pascal emerged when Borland
Borland
Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

 made it clear that Borland Pascal development for MS-DOS would stop with version 7, to be replaced by a Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

-only product (which became Delphi later on).

Student Florian Paul Klämpfl started developing his own compiler, written in the Turbo Pascal dialect, and produced 32-bit
32-bit
The range of integer values that can be stored in 32 bits is 0 through 4,294,967,295. Hence, a processor with 32-bit memory addresses can directly access 4 GB of byte-addressable memory....

 code for the go32v1 extender
DOS extender
A DOS extender is a computer software program which enables software to run under a protected mode environment even though the host operating system is only capable of operating in real mode....

, which was used and developed by the DJGPP project
DJGPP
DJGPP is a development suite for 386+ IBM PC compatibles which supports DOS-enabled operating systems. It is guided by DJ Delorie, who began the project in 1989. It is a port of the popular GCC compiler, as well as mostly GNU utilities such as bash, find, tar, ls, awk, sed, and ld to DPMI...

 at that time.

Originally, the compiler itself was a 16-bit
16-bit
-16-bit architecture:The HP BPC, introduced in 1975, was the world's first 16-bit microprocessor. Prominent 16-bit processors include the PDP-11, Intel 8086, Intel 80286 and the WDC 65C816. The Intel 8088 was program-compatible with the Intel 8086, and was 16-bit in that its registers were 16...

 DOS executable compiled by Turbo Pascal
Turbo Pascal
Turbo Pascal is a software development system that includes a compiler and an integrated development environment for the Pascal programming language running on CP/M, CP/M-86, and DOS, developed by Borland under Philippe Kahn's leadership...

. After two years the compiler was able to compile itself
Bootstrapping (compilers)
In computer science, bootstrapping is the process of writing a compiler in the target programming language which it is intended to compile...

, and became a 32-bit executable.

Expansion


The initial 32-bit compiler was published on the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

, and the first contributors joined the project. Later a Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 port was made by Michael van Canneyt, five years before Kylix
Kylix programming tool
Kylix was a compiler and integrated development environment formerly sold by Borland but later discontinued. It is a Linux version of the Borland Delphi software development environment and C++ Builder, which runs under Microsoft Windows. Continuing Delphi's classical Greek theme, Kylix is the name...

 became available.

The DOS port was adapted for use in OS/2
OS/2
OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...

 using the EMX extender which made OS/2 the second supported compilation target - apart from support of Florian Klämpfl as the original author, Daniël Mantione contributed significantly to make this happen and provide the original port of the run-time library to OS/2 / EMX. The compiler improved gradually, and the MS-DOS
MS-DOS
MS-DOS is an operating system for x86-based personal computers. It was the most commonly used member of the DOS family of operating systems, and was the main operating system for IBM PC compatible personal computers during the 1980s to the mid 1990s, until it was gradually superseded by operating...

 version migrated to the go32v2 extender. This culminated in release 0.99.5, which was much more widely used than previous versions, and was the last release aiming only for Turbo Pascal compliance—later releases added a Delphi compatibility mode. This release was also ported to systems using a 680x0 processor.

With release 0.99.8 the Win32 target was added, and a start was made with incorporating some Delphi features. Stabilizing for a non-beta release began, and version 1.0 was released in July 2000. The 1.0.x series was widely used, both as an enterprise and educational tool. For the 1.0.x releases, the port to 68k CPU was redone, and the compiler produced stable code for a number of 68k Unix
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....

 and AmigaOS
AmigaOS
AmigaOS is the default native operating system of the Amiga personal computer. It was developed first by Commodore International, and initially introduced in 1985 with the Amiga 1000...

 operating systems.

The second generation


During the stabilization of what would become 1.0.x, and specially when porting to the Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...

 68k systems, it was clear that 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, the 1.1.x branched
Branching (software)
Branching, in revision control and software configuration management, is the duplication of an object under revision control so that modifications can happen in parallel along both branches....

 from the 1.0.x main branch in December 1999. At first, changes were mostly clean-ups 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 a working PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

 port became available, followed by an ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

 port in summer 2004, a SPARC
SPARC
SPARC is a RISC instruction set architecture developed by Sun Microsystems and introduced in mid-1987....

 port in fall 2004, and an AMD64 port—which made the compiler available for a 64-bit platform—in early 2004.

In November 2003 a first beta release of the 1.1.x branch was packaged and numbered 1.9.0. These were quickly followed by versions 1.9.2 and 1.9.4; version 1.9.4 introduced Mac OS X support. The work continued with version 1.9.6 (January 2005), 1.9.8 (late February 2005), 2.0.0 (May 2005), 2.0.2 (December 2005), and 2.0.4 (August 2006).

Consolidation: the 2.2 series


In 2006 some of the major reworks planned for 2.2, such as the rewrite of the unit system, had not started, and it was decided to start stabilizing the already implemented features.

Some of the motivations for this roadmap
Plan
A plan is typically any diagram or list of steps with timing and resources, used to achieve an objective. See also strategy. It is commonly understood as a temporal set of intended actions, through which one expects to achieve a goal...

 change were the needs of the Lazarus
Lazarus (software)
Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...

 project, particularly the internal linker, support for Win64, Windows CE
Windows CE
Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...

, and Mac OS X on x86, and related features like DWARF
DWARF
DWARF is a widely used, standardized debugging data format. DWARF was originally designed along with Executable and Linkable Format , although it is independent of object file formats...

. After betas 2.1.2 and 2.1.4, version 2.2.0 was released in September 2007, followed by version 2.2.2 in August 2008 and version 2.2.4 in March 2009.

The 2.2.x series vastly improved the ActiveX
ActiveX
ActiveX is a framework for defining reusable software components in a programming language-independent way. Software applications can then be composed from one or more of these components in order to provide their functionality....

/COM
Component Object Model
Component Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...

, interface
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...

, and OLE
Object Linking and Embedding
Object Linking and Embedding is a technology developed by Microsoft that allows embedding and linking to documents and other objects. For developers, it brought OLE Control eXtension , a way to develop and use custom user interface elements...

 support, though bugs are still being found. The delegation to interface using the implements keyword is partially implemented, but was not complete . Library support for ActiveX was also improved.

Another major highlight was the internal linker for Win32, Win64, and Windows CE, which much improves linking time and memory use, and makes the compile-link-run cycle in Lazarus much faster. The efficiency for smart-linking, or dead code elimination, has also been improved.

Minor new features are improved DWARF (2/3) debug format support, and optimizations such as tail recursion, omission of unneeded stack frames and register-based CSE optimization
Common subexpression elimination
In computer science, common subexpression elimination is a compiler optimization that searches for instances of identical expressions , and analyses whether it is worthwhile replacing them with a single variable holding the computed value.- Example :In the following code: a = b * c + g; d = b * c...

. A first implementation of generics
Generic programming
In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters...

 support is also available, but only for exploration purposes.

The 2.4.x series


The 2.4.x series had a less clear set of goals than earlier releases. The unit system rewrite was postponed again, and the branch that became 2.4 was created to keep risky commits from 2.2 to stabilize it. Mostly these risky commits were more involved improvements to the new platforms, Mac PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

 64, Mac x86-64
X86-64
x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...

, iPhone, and many fixes to the ARM and x86-64 architectures in general, as well as DWARF
DWARF
DWARF is a widely used, standardized debugging data format. DWARF was originally designed along with Executable and Linkable Format , although it is independent of object file formats...

.

Other compiler improvements included whole program optimization
Whole program optimization
In computer programming, whole program optimization is the compiler optimization of a program using information about all the modules in the program...

 (WPO) and devirtualization and ARM EABI support.

Later, during the 2.2 cycle, a more Delphi-like resource support (based on special sections in the binary instead of Pascal constants) was added; this feature, direly needed by Lazarus
Lazarus (software)
Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...

, became the main highlight of the branch.

Other more minor points were a memory manager
Memory manager
In IBM PC compatible computing, DOS memory management refers to software and techniques employed to give applications access to more than 640K of "conventional memory". The 640kB limit was specific to the IBM PC and close compatibles; other machines running MS-DOS had different limits, for example...

 that improved heap manager performance in threaded
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

 environments, small improvements in Delphi compatibility such as OleVariant, and improvements in interface
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...

 delegation
Delegation (programming)
In object-oriented programming, there are two related notions of delegation.* Most commonly, it refers to a programming language feature making use of the method lookup rules for dispatching so-called self-calls as defined by Lieberman in his 1986 paper "Using Prototypical Objects to Implement...

.

Free Pascal 2.4.0 was released on January 1, 2010, followed by bug fix release 2.4.2 on November 13, 2010, containing support for for..in loops, and sealed and abstract classes, and other changes.

Targets



Architecture OS/Device Version 2.4.2 Version 2.4.0 Version 2.2.4 Version 2.0.x Version 1.0.x
i386
| DOS
DOS
DOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...

 (GO32v2 extender
DOS extender
A DOS extender is a computer software program which enables software to run under a protected mode environment even though the host operating system is only capable of operating in real mode....

)
>-
| FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

 (6.x and 7.x)
>-
| Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 
>-
| Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

 
>-
| OS/2
OS/2
OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...

 
>-
| Windows 
>-
| Windows CE
Windows CE
Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...

 
>-
| Haiku
Haiku (operating system)
Haiku is a free and open source operating system compatible with BeOS. Its development began in 2001, and the operating system became self-hosting in 2008, with the first alpha release in September 2009, the second in May 2010 and the third in June 2011....

 
>-
| Netware 
>-
| Solaris 
>- x86-64
X86-64
x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...


| FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

 
>-
| Linux
>-
| Mac OS X
>-
| Windows
>-
| Solaris 
>- ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...


| iOS 
>-
| Game Boy Advance
Game Boy Advance
The is a 32-bit handheld video game console developed, manufactured, and marketed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001; and in the People's Republic of China...

 (GBA)
>-
| Nintendo DS
Nintendo DS
The is a portable game console produced by Nintendo, first released on November 21, 2004. A distinctive feature of the system is the presence of two separate LCD screens, the lower of which is a touchscreen, encompassed within a clamshell design, similar to the Game Boy Advance SP...

 
>-
| Linux
>-
| Windows CE
>- PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...


| Linux
>-
| Mac OS X
>-
| Mac OS Classic 
>-
| MorphOS
MorphOS
MorphOS is an Amiga-compatible computer operating system. It is a mixed proprietary and open source OS produced for the Pegasos PowerPC processor based computer, PowerUP accelerator equipped Amiga computers, and a series of Freescale development boards that use the Genesi firmware, including the...

 
>- PowerPC 64-bit
| Linux
>-
| Mac OS X
>- SPARC
SPARC
SPARC is a RISC instruction set architecture developed by Sun Microsystems and introduced in mid-1987....


| Solaris 
32bit only >-
| Linux
>-


As of version 3.0, Free Pascal will also support byte code generation for the Java Virtual Machine
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...


Integrated development environments (IDEs)


Like most modern compilers, Free Pascal can be used with an integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

 (IDE).

Lazarus


Lazarus
Lazarus (software)
Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...

 is the most popular IDE used by Free Pascal programmers. It provides a Delphi-like development experience, and can be used to create console
Console application
A console application is a computer program designed to be used via a text-only computer interface, such as a text terminal, the command line interface of some operating systems or the text-based interface included with most Graphical User Interface operating systems, such as the Win32 console in...

 and graphical
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...

 applications.

Lazarus provides a cross-platform user interface framework, called Lazarus Component Library (LCL). Graphical applications created with LCL can be ported to another platform with a recompilation
Write once, compile anywhere
Write once, compile anywhere refers to writing software that compiles, and is thus usable, on all platforms. As opposed to Sun's write once, run anywhere slogan, cross-platform compatibility is implemented at the source code level, rather than at the compiled binary code level.There are many...

.

MSEide


MSEide is another Free Pascal-based IDE that is . MSEgui, like LCL to Lazarus, is the class library that comes with MSEide. It communicates directly with X11 via Xlib
Xlib
Xlib is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol...

 on Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, and gdi32 under Windows, with support for multiple document interface
Multiple document interface
Graphical computer applications with a multiple document interface are those whose windows reside under a single parent window , as opposed to all windows being separate from each other . Such systems often allow child windows to embed other windows inside them as well, creating complex nested...

 (MDI) and visual form inheritance
Inheritance (computer science)
In object-oriented programming , inheritance is a way to reuse code of existing objects, establish a subtype from an existing object, or both, depending upon programming language support...

.

Software produced with Free Pascal

  • Free Pascal itself is written in Object Pascal
    Object Pascal
    Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:...

     and assembly language
    Assembly language
    An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

    , and compiled by itself
    Bootstrapping (compilers)
    In computer science, bootstrapping is the process of writing a compiler in the target programming language which it is intended to compile...

    .
  • Lazarus: Free Pascal’s affiliated Delphi-like software package for rapid development of graphical applications.
  • Pixel image editor
    Pixel image editor
    Pixel Image Editor is an Image editor written by the Slovak programmer Pavel Kanzelsberger. It is written with Free Pascal.-Features:...

    : a Photoshop-like image editor, arguably among the best-known software created with Free Pascal.
  • SFS Technology: Linux technology to use portable stand-alone applications on various Linux distributions (such as Ubuntu
    Ubuntu (operating system)
    Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...

    ).
  • Peazip
    PeaZip
    PeaZip is a file manager and file archiver for Microsoft Windows and GNU/Linux. It supports its native PEA archive format and other mainstream formats, with special focus on handling open formats...

    : an open source archiver.
  • Morfik
    Morfik
    Morfik Technology Pty Ltd., an Australian company, is the developer of Morfik, a set of visual designers, compilers and a Framework combined in an Integrated development environment aimed at developing Ajax applications in a high-level language such as Java, C#, BASIC or Object Pascal. Morfik...

    : Morfik WebOS AppBuilder uses Free Pascal to produce the resulting CGI binaries.
  • Northworld: Northworld, an AD&D based fantasy RPG written entirely in FreePascal. Utilizes colored extended ASCII in 80x50 textmode to simulate low res 2D topographical graphics providing a nostalgic early Ultimate style game experience.
  • Hedgewars
    Hedgewars
    Hedgewars is a turn-based free and open-source strategy game, artillery game, skill game. It is cross-platform and runs on FreeBSD, Linux, Mac OS X, Microsoft Windows, iOS, and Android. It features a single-player mission/tutorial mode, in addition to multi-team multiplayer gameplay...

    : a Worms-like turn based strategy game.
  • MRIcron: a medical image visualization and analysis package. The software provides tools for drawing volumes of interest and volume rendering. In addition, it includes non-parametric statistical mapping (NPM) and conversion of images from DICOM format to NIfTI format (dcm2nii). It is currently available for Windows (using WinAPI), Linux (GTK1, GTK2 or QT), and Mac OS X (Carbon or GTK1).
  • Virtual Magnifying Glass: a simple and customizable free, open source, screen magnification tool for Windows, Linux and FreeBSD. It has been downloaded over 170.000 times over 5 years.
  • Cactus Jukebox: an audio player with a database to organize music file collections, for Linux and Win32.
  • Becape: an open source backup (and restore) tool for personal and desktop usage.Can create incremental backups; stores backups in a SQLite
    SQLite
    SQLite is an ACID-compliant embedded relational database management system contained in a relatively small C programming library. The source code for SQLite is in the public domain and implements most of the SQL standard...

     database.
  • Master Maths: Software for computer based mathematics training. Developed with fpGUI Toolkit
    FpGUI
    fpGUI, the Free Pascal GUI toolkit, is a cross-platform graphical user interface toolkit developed by Graeme Geldenhuys. fpGUI is open source and free software, licensed under a Modified LGPL license...

    , and makes use of Firebird RDBMS and tiOPF v2 for object persistence. Runs under Linux and Windows.
  • OutKafe: next-generation free and open source cybercafe management suite. OutKafe is running hundreds of cybercafes around the world.
  • CQRLOG: an advanced amateur radio logger based on the Firebird database. It provides radio control based on hamlib libraries (currently supports 140+ radio types and models), DX cluster connection, QRZ callbook (web version), a grayliner, ON6DP QSL manager database support and a country resolution algorithm based on country tables developed by OK1RR.
  • Dedalu: a collection of small and simple projects (games, editors, utilities, etc.) developed with Lazarus
    Lazarus (software)
    Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...

     and Free Pascal by Giuseppe Ridinò (a.k.a. Pepecito).
  • TruckBites: USA-specific business management software for independent trucking operators.
  • Mundo The Game: an in-progress open-source multi-platform 3D MMORPG
    MMORPG
    Massively multiplayer online role-playing game is a genre of role-playing video games in which a very large number of players interact with one another within a virtual game world....

    .
  • Arkadia.com: a real-estate website that uses Free Pascal to implement the 64-bit ISAPI module.
  • EZlect: masking plug-in for Photoshop, written using Delphi for Windows, and Free Pascal for Mac OS X.
  • WinFF: a GUI for the command line video converter, FFMPEG. It will convert almost any video file that FFmpeg can convert, and can handle multiple files in multiple formats at one time. WinFF is open source and cross platform, written in Free Pascal and Lazarus.

See also



  • Morfik
    Morfik
    Morfik Technology Pty Ltd., an Australian company, is the developer of Morfik, a set of visual designers, compilers and a Framework combined in an Integrated development environment aimed at developing Ajax applications in a high-level language such as Java, C#, BASIC or Object Pascal. Morfik...

    : an RAD IDE for Ajax
    Ajax (programming)
    Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...

    -based Web applications that uses Free Pascal as the back-end
    Front-end and back-end
    Front end and back end are generalized terms that refer to the initial and the end stages of a process. The front end is responsible for collecting input in various forms from the user and processing it to conform to a specification the back end can use...

     for server-side compiling.
  • fpGUI Toolkit
    FpGUI
    fpGUI, the Free Pascal GUI toolkit, is a cross-platform graphical user interface toolkit developed by Graeme Geldenhuys. fpGUI is open source and free software, licensed under a Modified LGPL license...

    : an Object Pascal toolkit for cross-platform application development developed with the Free Pascal compiler; custom-drawn to reduce library dependencies and simplify deployment. It provides single-source portability across Linux, MS Windows, *BSD and embedded devices such as those using Embedded Linux and Windows CE.

Official websites


General introduction


Development tools

  • FPS Complete Win32 based IDE for FPC, including debugger (trace
    Stack trace
    A stack trace is a report of the active stack frames at a certain point in time during the execution of a program.It is commonly used during interactive and post-mortem debugging...

    , breakpoint
    Breakpoint
    In software development, a breakpoint is an intentional stopping or pausing place in a program, put in place for debugging purposes. It is also sometimes simply referred to as a pause....

     and watch
    Breakpoint
    In software development, a breakpoint is an intentional stopping or pausing place in a program, put in place for debugging purposes. It is also sometimes simply referred to as a pause....

    windows).
  • DevPascal Win32 based IDE for FPC.
  • MSEide+MSEgui - a RAD/Cross Platform GUI Development System for FPC.
  • Morfik Win32 based IDE for build Ajax-based web applications that uses FPC for compiling back-end server side logic.

Sites specialized in game development