Free Pascal
   HOME

TheInfoList



OR:

Free Pascal Compiler (FPC) is a
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
for the closely related programming-language dialects
Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of people and fictional characters with the name ** Blaise Pascal, Frenc ...
and
Object Pascal Object Pascal is an extension to the programming language Pascal that provides object-oriented programming (OOP) features such as classes and methods. The language was originally developed by Apple Computer as ''Clascal'' for the Lisa Worksh ...
. It is
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, n ...
released under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
, wit
exception clauses
that allow static linking against its runtime libraries and packages for any purpose in combination with any other software license. It supports its own Object Pascal dialect, as well as the dialects of several other Pascal family compilers to a certain extent, including those of
Borland Pascal Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for the Pascal programming language running on CP/M, CP/M-86, and DOS. It was originally developed by Anders Hejlsberg at Borl ...
(named "Turbo Pascal" until the 1990 version 6), Borland (later Embarcadero)
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The orac ...
, and some historical
Macintosh The Mac (known as Macintosh until 1999) is a family of personal computers designed and marketed by Apple Inc., Apple Inc. Macs are known for their ease of use and minimalist designs, and are popular among students, creative professionals, and ...
compilers. The dialect is selected on a per-unit (module) basis, and more than one dialect can be used per program. It follows a ''
write once, compile anywhere Write once, compile anywhere (WOCA) is a philosophy taken by a compiler and its associated software libraries or by a software library/software framework which refers to a capability of writing a computer program that can be compiled on all platf ...
'' philosophy and is available for many CPU architectures and
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s (see Targets). It supports inline
assembly language In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence b ...
and includes an internal assembler capable of parsing several dialects such as AT&T and Intel style. There are separate projects to facilitate developing
cross-platform In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software ...
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, ins ...
(GUI) applications, the most prominent one being the Lazarus
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools ...
(IDE).


Supported dialects

Initially, Free Pascal adopted the ''de facto'' standard dialect of Pascal programmers, Borland Pascal, but later adopted Delphi's Object Pascal. From version 2.0 on, Delphi compatibility has been continuously implemented or improved. The project has a ''compilation mode'' concept, and the developers made it clear that they would incorporate working patches for the standardized dialects of the
American National Standards Institute The American National Standards Institute (ANSI ) is a private non-profit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The orga ...
(ANSI) and
International Organization for Standardization The International Organization for Standardization (ISO ) is an international standard development organization composed of representatives from the national standards organizations of member countries. Membership requirements are given in A ...
(ISO) to create a standards-compliant mode. A small effort has been made to support some of the
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple trees are cultivated worldwide and are the most widely grown species in the genus '' Malus''. The tree originated in Central Asia, where its wild ancest ...
Pascal syntax to ease interfacing to the
Classic Mac OS Mac OS (originally System Software; retronym: Classic Mac OS) is the series of operating systems developed for the Macintosh family of personal computers by Apple Computer from 1984 to 2001, starting with System 1 and ending with Mac OS 9. ...
and
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
. The Apple dialect implements some standard Pascal features that Turbo Pascal and Delphi omit. The 2.2.''x'' release series did not significantly change the dialect objectives beyond roughly Delphi 7 level syntax, instead aiming for closer compatibility. A notable exception to this was the addition of support fo
generics
to Free Pascal in version 2.2.0, several years before they were supported in any capacity by Delphi. In 2011 several Delphi 2006-specific features were added in the development branch, and some of the starting work for the features new in Delphi 2009 (most notably the addition of the UnicodeString type) was completed. The development branch also has an ''Objective-Pascal'' extension for
Objective-C Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its NeXT ...
(
Cocoa Cocoa may refer to: Chocolate * Chocolate * ''Theobroma cacao'', the cocoa tree * Cocoa bean, seed of ''Theobroma cacao'' * Chocolate liquor, or cocoa liquor, pure, liquid chocolate extracted from the cocoa bean, including both cocoa butter an ...
) interfacing. As of version 2.7.1, Free Pascal implemented basic ISO Pascal mode, though many things such as the Get and Put procedures, and the file-buffer variable concept for file handling were still absent. As of version 3.0.0, ISO Pascal mode is fairly complete. It has been able to compile standardpascal.org's P5 ISO Pascal compiler with no changes.


History


Early years

Free Pascal was created when Borland clarified that Borland Pascal development for
DOS DOS is shorthand for the MS-DOS and IBM PC DOS family of operating systems. DOS may also refer to: Computing * Data over signalling (DoS), multiplexing data onto a signalling channel * Denial-of-service attack (DoS), an attack on a communicat ...
would stop with version 7, to be replaced by a
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for se ...
-only product, which later became Delphi. Student Florian Paul Klämpfl began developing his own compiler written in the Turbo Pascal dialect and produced
32-bit In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32- bit units. Compared to smaller bit widths, 32-bit computers can perform large calculati ...
code for the GO32v1
DOS extender A DOS extender is a computer software program running under DOS that enables software to run in a protected mode environment even though the host operating system is only capable of operating in real mode. DOS extenders were initially developed ...
, which was used and developed by the DJ's GNU Programming Platform ( DJGPP) project at that time. Originally, the compiler was a
16-bit 16-bit microcomputers are microcomputers that use 16-bit microprocessors. A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two ...
DOS executable compiled by
Turbo Pascal Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for the Pascal programming language running on CP/M, CP/M-86, and DOS. It was originally developed by Anders Hejlsberg at ...
. After two years, the compiler was able to compile itself and became a 32-bit executable.


Expansion

The initial 32-bit compiler was published on the
Internet The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a '' network of networks'' that consists of private, p ...
, and the first contributors joined the project. Later, a
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
port was created by Michael van Canneyt, five years before the Borland Kylix Pascal compiler for Linux became available. The DOS port was adapted for use in
OS/2 OS/2 (Operating System/2) is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 r ...
using the Eberhard Mattes eXtender (EMX) which made OS/2 the second supported compiling target. As well as Florian Klämpfl the original author, Daniël Mantione also contributed significantly to make this happen, providing the original port of the run-time library to OS/2 and EMX. The compiler improved gradually, and the DOS version migrated to the GO32v2 extender. This culminated in release 0.99.5, which was much more widely used than prior versions, and was the last release aiming only for Borland Pascal compliance; later releases added a Delphi compatibility mode. This release was also ported to systems using
Motorola 68000 family The Motorola 68000 series (also known as 680x0, m68000, m68k, or 68k) is a family of 32-bit complex instruction set computer (CISC) microprocessors. During the 1980s and early 1990s, they were popular in personal computers and workstations and ...
(m68k) processors. With release 0.99.8 the
Win32 The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations th ...
target was added, and a start was made with incorporating some Delphi features. Stabilizing for a non-
beta release A software release life cycle is the sum of the stages of development and maturity for a piece of computer software ranging from its initial development to its eventual release, and including updated versions of the released version to help impro ...
began, and version 1.0 was released in July 2000. The 1.0.''x'' series was widely used, in business and education. For the 1.0.''x'' releases, the port to 68k CPU was redone, and the compiler produced stable code for several 68k
Unix-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
and
AmigaOS AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
operating systems.


Version 2

During the stabilization of what would become 1.0.''x'', and also when porting to the
Motorola Motorola, Inc. () was an American multinational telecommunications company based in Schaumburg, Illinois, United States. After having lost $4.3 billion from 2007 to 2009, the company split into two independent public companies, Motorola ...
68k systems, it was clear that the design of the code generator was far too limited in many aspects. The principal problems were that adding processors 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 difficult to maintain. For these reasons, the 1.1.''x'' series branched off from the 1.0.''x'' main branch in December 1999. At first, changes were mostly clean-ups and rewrite-redesigns to all parts of the compiler. The code generator and register allocator were also rewritten. Any remaining missing Delphi compatibility was added. The work on 1.1.x continued slowly but steadily. In late 2003, a working
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple– IBM– ...
port became available, followed by an ARM port in summer 2004, a
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system develope ...
port in fall 2004, and an
x86-64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
-AMD64 port in early 2004, which made the compiler available for a 64-bit platform. In November 2003, a first
beta Beta (, ; uppercase , lowercase , or cursive ; grc, βῆτα, bē̂ta or ell, βήτα, víta) is the second letter of the Greek alphabet. In the system of Greek numerals, it has a value of 2. In Modern Greek, it represents the voiced labiod ...
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; the latter introduced 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).


Version 2.2.x

In 2006, some of the major reworks planned for 2.2, such as the rewrite of the unit system, had still not begun, and it was decided to instead start stabilizing the already implemented features. Some of the motives for this roadmap change were the needs of the Lazarus integrated development environment project, particularly the internal linker, support for Win64,
Windows CE Windows Embedded Compact, formerly Windows Embedded CE, Windows Powered and Windows CE, is an operating system subfamily developed by Microsoft as part of its Windows Embedded family of products. Unlike Windows Embedded Standard, which is base ...
, and OS X on x86, and related features like
DWARF Dwarf or dwarves may refer to: Common uses *Dwarf (folklore), a being from Germanic mythology and folklore * Dwarf, a person or animal with dwarfism Arts, entertainment, and media Fictional entities * Dwarf (''Dungeons & Dragons''), a humanoid ...
. 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 support for the
ActiveX ActiveX is a deprecated software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide We ...
and Component Object Model (COM)
interface Interface or interfacing may refer to: Academic journals * ''Interface'' (journal), by the Electrochemical Society * '' Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics'' * '' Int ...
, and Object Linking and Embedding (OLE), though bugs were still being found. The delegation to interface using the implements keyword was partly implemented, but was not complete . Library support for ActiveX was also improved. Another major feature was the internal linker for Win32, Win64, and Windows CE, which greatly improved linking time and memory use, and make the compile-link-run cycle in Lazarus much faster. The efficiency for smart-linking, or
dead code elimination In compiler theory, dead-code elimination (also known as DCE, dead-code removal, dead-code stripping, or dead-code strip) is a compiler optimization to remove code which does not affect the program results. Removing such code has several benefits: ...
, was also improved. Minor new features included improved DWARF (2/3) debug format support, and optimizations such as
tail recursion In computer science, a tail call is a subroutine call performed as the final action of a procedure. If the target of a tail is the same subroutine, the subroutine is said to be tail recursive, which is a special case of direct recursion. Tail recur ...
, omission of unneeded stack frames and register-based
common subexpression elimination In compiler theory, common subexpression elimination (CSE) is a compiler optimization that searches for instances of identical expressions (i.e., they all evaluate to the same value), and analyzes whether it is worthwhile replacing them with a sin ...
(CSE) optimization. A first implementation of
generic programming Generic programming is a style of computer programming in which algorithms are written in terms of types ''to-be-specified-later'' that are then ''instantiated'' when needed for specific types provided as parameters. This approach, pioneered b ...
(generics) support also became available, but only experimentally.


Version 2.4.x

The 2.4.x release 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 64, Mac x86-64, iPhone, and many fixes to the ARM and x86-64 architectures in general, as well as DWARF. Other compiler improvements included
whole program optimization Interprocedural optimization (IPO) is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length. IPO differs from other compiler optimi ...
(WPO) and devirtualization and ARM
embedded-application binary interface In computer software, an application binary interface (ABI) is an interface between two binary program modules. Often, one of these modules is a library or operating system facility, and the other is a program that is being run by a user. An ' ...
(EABI) support. Later, during the 2.2 cycle, a more
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The orac ...
-like resource support (based on special sections in the binary instead of Pascal constants) was added. This feature, direly needed by Lazarus, became the main highlight of the branch. Other more minor additions were a memory manager that improved heap manager performance in threaded environments, small improvements in Delphi compatibility such as OleVariant, and improvements in
interface Interface or interfacing may refer to: Academic journals * ''Interface'' (journal), by the Electrochemical Society * '' Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics'' * '' Int ...
delegation Delegation is the assignment of authority to another person (normally from a manager to a subordinate) to carry out specific activities. It is the process of distributing and entrusting work to another person,Schermerhorn, J., Davidson, P., Poole ...
. On January 1, 2010, Free Pascal 2.4.0 was released, followed on November 13, 2010, by bug fix release 2.4.2, with support for for..in loops, sealed and abstract classes, and other changes.


Version 2.6.x

In January 2012, Free Pascal 2.6 was released. This first version from the 2.6 release series also supported Objective Pascal on OS X and iOS targets and implemented many small improvements and bug fixes. In February 2013, FPC 2.6.2 was released. It contained
NetBSD NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is ava ...
and
OpenBSD OpenBSD is a security-focused, free and open-source, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by forking NetBSD 1.0. According to the website, the OpenBSD project e ...
releases for the first time since 1.0.10, based on fresh ports. In March 2014, the last point release in the 2.6 series, 2.6.4, was launched, featuring mostly database (fcl-db) updates.


Version 3.0.x

Version 3.0.0 was released on November 25, 2015, and was the first major release since January 1, 2012. It introduced many new language features. Version 3.0.2 was released on February 15, 2017, and includes bug fixes and minor compiler updates.
Version 3.0.4 was released on November 28, 2017.
It includes many language improvements over previous versions, including an internal linker for
Executable and Linkable Format In computing, the Executable and Linkable FormatTool Interface Standard (TIS) Portable Formats SpecificationVersion 1.1'' (October 1993) (ELF, formerly named Extensible Linking Format), is a common standard file format for executable files, ...
(ELF), Arm AARCH64 for iOS and Linux, a revived i8086 platform, extended libraries and much more.


Version 3.2.x

The next major release, version 3.2.0, was published on June 19, 2020. It introduced many new language features, including generic routines, standard namespaces, managed records and expanded functionality for dynamic arrays, in addition to the advent of new standard units and the support of additional platforms. Version 3.2.2 was released on May 20, 2021, and supports macOS on
AArch64 AArch64 or ARM64 is the 64-bit extension of the ARM architecture family. It was first introduced with the Armv8-A architecture. Arm releases a new extension every year. ARMv8.x and ARMv9.x extensions and features Announced in October 2011, AR ...
and naming of threads. Additionally it includes bug fixes and minor compiler updates.


Targets

Free Pascal also supports byte code generation for the
Java Virtual Machine A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describe ...
as of version 3.0.0 and targets both Oracle's Java and Google's Android JVM, although Object Pascal syntax is not fully supported. Free Pascal 3.0.0 also supports ARMHF platforms like the
Raspberry Pi Raspberry Pi () is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic ...
, including ARMV6-EABIHF running on Raspbian. Work on 64-bit ARM has resulted in support for iOS in 3.0.0 as well. A native ARM Android target has been added, ending the formerly hacked ARM Linux target to generate native ARM libraries for Android. This makes porting Lazarus applications to Android (using Custom Drawn Interface) easier. Since FPC 2.6.2,
OpenBSD OpenBSD is a security-focused, free and open-source, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by forking NetBSD 1.0. According to the website, the OpenBSD project e ...
and
NetBSD NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is ava ...
are supported on IA32 and X86_64 architectures. A new target ''embedded'' has been added for usage without OS (ARM Cortex M and MIPS mainly). With InstantFPC it is possible to run Pascal programs, which are translated just in time, as Unix scripts or CGI back-end. Ultibo core is an embedded or bare metal development environment for Raspberry Pi. Ultibo is based on Free Pascal and developed under a modified version of Lazarus. The IDE is PC based but has been ported to Linux and Mac as well. Ultibo is an OS-less runtime and has support for most functions and allows the programmer full control over the hardware via the RTL units. The runtime implements multi-threaded, pre-emptive multitasking. The programmer can put threads on a specific CPU or let the runtime divide the load automatically or a mix of the two. Most Raspberry Pi models are supported including the A, B, A+ and B+ as well as the Raspberry Pi 2B, 3B, 4B/400/CM4 and Zero.


Integrated development environments

Like most modern compilers, Free Pascal can be used with an
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools ...
(IDE). Besides independent IDEs there are also plugins to various existing IDEs *Free Pascal has its own text-mode IDE resembling Turbo Pascal's IDE. It is made using the Free Vision framework (also included with Free Pascal), a Turbo Vision clone. In addition to many features of the Turbo Pascal IDE, it has code completion and support for multiple help file formats (HTML,
Microsoft Compiled HTML Help Microsoft Compiled HTML Help is a Microsoft proprietary online help format, consisting of a collection of HTML pages, an index and other navigation tools. The files are compressed and deployed in a binary format with the extension .CHM, for Com ...
(CHM),
Information Presentation Facility Information Presentation Facility (IPF) is a system for presenting online help and hypertext on IBM OS/2 systems. IPF also refers to the markup language that is used to create IPF content. The IPF language has its origins in BookMaster and Ge ...
(IPF). Instead of using command line tools, the IDE uses its own embedded compiler, based on the same source as the command line compiler and debugger (using libgdb or GDBMI) to provide its functionality. * Lazarus is the most popular IDE used by Free Pascal programmers. It looks and feels similar to the Delphi IDE, and can be used to create
console Console may refer to: Computing and video games * System console, a physical device to operate a computer ** Virtual console, a user interface for multiple computer consoles on one device ** Command-line interface, a method of interacting with ...
and graphical applications,
Windows service In Windows NT operating systems, a Windows service is a computer program that operates in the background. It is similar in concept to a Unix daemon. A Windows service must conform to the interface rules and protocols of the Service Control Manag ...
s, daemons, and
web application A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection. History In earlier computing models like client-serv ...
s. Lazarus provides a cross-platform user interface framework, called
Lazarus Component Library The Lazarus Component Library, abbreviated ''LCL'' is a visual software component library for the Lazarus IDE. Description The LCL consists of a collection of units that provide components and classes especially for visual tasks. It is base ...
(LCL). Graphical applications created with LCL can be ported to another platform via recompiling or
cross compiling A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running. For example, a compiler that runs on a PC but generates code that runs on an Android smartphone is a cross ...
. * Dev-Pascal is a free Windows-only IDE for Free Pascal and GNU Pascal, with no further development following the 2004 FPC version and the 2005 GPC version.


Bundled libraries

Apart from a compiler and an IDE, Free Pascal provides the following libraries: *
Free Pascal Runtime Library The Free Pascal Runtime Library, abbreviated ''RTL'', is Free Pascal's runtime library. The RTL consists of a collection of units that provide components and classes for general programming tasks. It acts as a basis for Free Pascal's Free Compon ...
(RTL): Basic low-level
runtime library In computer programming, a runtime library is a set of low-level routines used by a compiler to invoke some of the behaviors of a runtime environment, by inserting calls to the runtime library into compiled executable binary. The runtime enviro ...
for general programming tasks *
Free Component Library The Free Component Library, abbreviated ''FCL'', is a software component library for Free Pascal. The FCL consists of a collection of units that provide components and classes for general programming tasks. Although it is intended to be compatibl ...
(FCL): High-level software component library for general programming tasks


Examples of software produced with Free Pascal

* ULTIBO Core] is a development environment targeting bare-metal (no operating system) Raspbian PI boards. It uses FreePascal/Lazarus and links the application with an unikernel runtime. *
Beyond Compare Beyond Compare is a proprietary data comparison utility. Aside from comparing files, the program is capable of doing side-by-side comparison of directories, FTP and SFTP directories, Dropbox directories, Amazon S3 directories, and archives. It ...
is a data comparison utility for Windows, OS X, and Linux. The Linux and OS X versions are compiled with Lazarus/FPC. * Cartes du Ciel is a free
planetarium A planetarium ( planetariums or ''planetaria'') is a Theater (structure), theatre built primarily for presenting educational entertainment, educational and entertaining shows about astronomy and the night sky, or for training in celestial navi ...
program for Linux, OS X, and Windows. It maps and labels most constellations, planets, and objects visible by telescope. It was fully written in Lazarus/FPC, and released under GPL. *
Cheat Engine Cheat Engine (CE) is a proprietary, source available freeware memory scanner/debugger created by Eric Heijnen ("Byte, Darke") for the Windows operating system. Cheat Engine is mostly used for cheating in computer games and is sometimes mo ...
is an open-source memory scanner, hex editor, and debugger. It can be used for cheating in computer games. Since version 6.0 it is compiled with Lazarus/FPC. * D_2D & D_3D data plotting programs. * Double Commander is an open-source multi-platform two-panel orthodox file manager inspired by the Microsoft Windows-only Total Commander. * Free Pascal is written in
Object Pascal Object Pascal is an extension to the programming language Pascal that provides object-oriented programming (OOP) features such as classes and methods. The language was originally developed by Apple Computer as ''Clascal'' for the Lisa Worksh ...
and assembly language, and self-compiled. *
HNSKY HNSKY or Hallo Northern Sky is a popular free and open-source planetarium program for Linux, macOS, Microsoft Windows, and Raspberry Pi to simulate the night sky. It is provided with several non-English language modules, numerous astronomical ca ...
, Hallo Northern Sky is a free planetarium program for Windows and Linux. Since version 3.4.0 written & compiled with Lazarus/FPC. * Lazarus: Free Pascal's affiliated Delphi-like software package for rapid development of graphical applications. * MeKin2D: package for planar linkage, cam and gear mechanism kinematics. * Morfik: Morfik WebOS AppBuilder uses Free Pascal to produce CGI binaries. *
MyNotex MyNotex is free software dedicated to notetaking and activity management. It offers several features for redaction, classification and search according to certain criteria. Its interface resembles a text editor and has several panes that give an ov ...
is a free software note-taking and notes manager for Linux. * Early versions of the Nim compiler were developed in Free Pascal, before it became self-hosting in Nim. * Peazip is an open source archiver, made with Lazarus/FPC. *
TorChat TorChat was a peer-to-peer anonymous instant messenger that used Tor onion services as its underlying network. It provided cryptographically secure text messaging and file transfers. The characteristics of Tor's onion services ensure that all t ...
, previously written in Python, is now being rewritten in Free Pascal and Lazarus. * Tranzistow is a 32/64-bit software synthesizer for Windows and Linux developed with FreePascal/Lazarus.


See also

* fpGUI Free Pascal GUI toolkit – a cross-platform and custom-drawn toolkit implemented in Object Pascal


References


External links


Official websites

* FPC * Lazarus RAD IDE


General introduction


Official documentation


- by Michalis Kamburelis


Sites specialized in game development


Pascal Game Development

Pascal Gamer Magazine


– an extensive tutorial into game programming on the Game Boy Advance with Free Pascal {{Authority control Classic Mac OS software Compilers Cross-platform free software Cross-platform software Free compilers and interpreters Free software programmed in Pascal Linux programming tools MacOS programming tools MorphOS software Object-oriented programming languages Pascal (programming language) Pascal (programming language) compilers Pascal programming language family Pascal (programming language) software Platform-sensitive development Programming tools for Windows Self-hosting software Software using the GPL license Solaris software Systems programming languages