Free Pascal
An Open Source, Cross Platform, Object Pascal Compiler
By PascalDragon (DECT 3723), Leipzig, 36C3 History
● Started by Florian Klämpfl on 8th June 1993
● Written in Turbo Pascal for GO32v1 DOS Extender – 16-bit application generating 32-bit code ● 1995: ability to compile itself → FPC became a 32-bit program
● Port to other OSes (Linux, OS/2) and CPUs (Motorola 68000)
● 2005: first Open Source compiler for Win64 (thanks to internal assembler and linker) Open Source
● Compiler and tools licensed as GPLv2 (or newer)
● RTL and code library licensed as LGPLv2 with static linking exception – Allows closed source applications to statically link against RTL and code library Cross Platform
● Various processor architectures supported – x86 (16/32/64-bit) – ARM (32/64-bit) – PowerPC (32/64-bit) – M68k – RISC V (32/64-bit) – AVR (8-bit) ● Others: JVM (including Android), WebAssembly (in development)
● Special: Pascal → JavaScript transpiler pas2js Cross Platform
● Various Operating Systems supported – Windows (32 & 64-bit), Windows CE, Windows 3.11 – Unix-like: Linux, Mac OS X / macOS, Free-/Open-/Net-/DragonFlyBSD – Amiga-like: Amiga 3.x (M68k), Amiga 4.x (PPC), MorphOS, AROS – Others: OS/2, DOS (with and without extender), Atari ST, MacOS Classic, GameBoy Advance, Nintendo DS, Nintendo Wii, (Nintendo Switch) ● Barebone Hardware (e.g. AVR, ARM) Object Pascal
● Multiple Pascal dialects through “Mode” concept: – Selectable per compilation unit – Existing dialects: TP, Delphi, MacPascal, ISO, ExtendedPascal – Custom dialects: FPC, ObjFPC ● Supports namespace/module-like concept through “Unit”
● Object Oriented Programming – Virtual methods, Interfaces, Class Metatype ● Extensive RunTime Type Information
● Support for generics Give it a try
● Check current release (3.0.4) at https://www.freepascal.org
● Use Lazarus IDE (2.0.6) at https://www.lazarus-ide.org Thank you for your attention! “Running Cheetah” from https://www.freepascal.org/pic/running_cheetah_dan_gerh_01.svg licensed as Public Domain ( http://web.resource.org/cc/PublicDomain )