Zdarma Pascal - Free Pascal

Zdarma Pascal
Možnosti příkazového řádku FPC 3.1.1.png
FPC 3.1.1 ve Windows
Vývojáři Florian Klämpfl a dobrovolníci
První vydání 1997 ; Před 24 lety ( 1997 )
Stabilní uvolnění
3.2.2 / 20. května 2021 ; před 3 měsíci ( 2021-05-20 )
Náhled vydání
3.3.1
Úložiště Upravte to na Wikidata
Napsáno Objekt Pascal
Operační systém Cross-platform , Embedded
Typ Kompilátor , integrovaný operační systém
Licence Obecná veřejná licence GNU pro spustitelné soubory kompilátoru a obslužného programu. Obecná veřejná licence GNU se statickou výjimkou pro runtime, balíčky, komponenty a další knihovny, které se stanou součástí spustitelných souborů vytvořených kompilátorem
webová stránka www .freepascal .org

Free Pascal Compiler ( FPC ) je překladač pro úzce související dialekty programovacího jazyka Pascal a Object Pascal . Je to svobodný software vydávaný pod licencí GNU General Public License , s doložkami výjimek, které umožňují statické propojení s jeho runtime knihovnami a balíčky pro jakýkoli účel v kombinaci s jakoukoli jinou softwarovou licencí.

Podporuje do určité míry vlastní dialekt Object Pascal, jakož i dialekty několika dalších kompilátorů rodiny Pascal, včetně Borland Pascal (do roku 1990 v6 „Turbo Pascal“), Borland (později Embarcadero) Delphi a některých historické kompilátory Macintosh . Dialekt se vybírá na základě jednotky (modulu) a na program lze použít více než jeden dialekt.

Následuje jednorázové zapisování, kompilace kdekoli a je k dispozici pro mnoho architektur CPU a operačních systémů (viz Cíle ). Podporuje vložený jazyk sestavení a obsahuje interní assembler schopný analyzovat několik dialektů, jako je styl AT&T a Intel.

Existují samostatné projekty, které mají usnadnit vývoj aplikací s více platformami grafického uživatelského rozhraní (GUI), přičemž nejvýznamnějším z nich je integrované vývojové prostředí Lazarus (IDE).

Podporované dialekty

Free Pascal původně přijal de facto standardní dialekt programátorů Pascal, Borland Pascal, ale později přijal Delphi Object Pascal. Od verze 2.0 je kompatibilita Delphi průběžně implementována nebo vylepšována.

Projekt má koncepci režimu kompilace a vývojáři dali jasně najevo, že začlení pracovní patche pro standardizované dialekty Amerického národního normalizačního institutu (ANSI) a Mezinárodní organizace pro normalizaci (ISO), aby vytvořili režim vyhovující normám.

Bylo vyvinuto malé úsilí na podporu některých syntaxí Apple Pascal, které usnadňují propojení s klasickým Mac OS a macOS . Apple dialekt implementuje některé standardní funkce Pascal, které Turbo Pascal a Delphi vynechávají.

2.2. Série x release výrazně nezměnila dialektové cíle nad rámec syntaxe zhruba na úrovni Delphi 7, místo toho směřovala k bližší kompatibilitě. Významnou výjimkou bylo přidání podpory generik do Free Pascal ve verzi 2.2.0, několik let předtím, než byly Delphi v jakékoli kapacitě podporovány.

V roce 2011 bylo ve vývojové větvi přidáno několik funkcí specifických pro Delphi 2006 a byly dokončeny některé počáteční práce pro funkce nové v Delphi 2009 (zejména přidání UnicodeStringtypu). Vývojová větev má také rozšíření Objective-Pascal pro rozhraní Objective-C ( Cocoa ).

Od verze 2.7.1, Free Pascal implementovány základní režim ISO Pascal, ačkoli mnoho věcí, takový jak Geta Putpostupů, a variabilní koncept soubor-buffer pro manipulaci souborů jsou stále chybí.

Od verze 3.0.0 je režim ISO Pascal poměrně úplný. Byl schopen kompilovat kompilátor P5 ISO Pascal standardpascal.org bez jakýchkoli změn.

Dějiny

Raná léta

Free Pascal byl vytvořen, když Borland objasnil, že vývoj Borland Pascal pro DOS se zastaví s verzí 7, která bude nahrazena produktem pouze pro Windows , který se později stal Delphi.

Student Florian Paul Klämpfl začal vyvíjet svůj vlastní překladač napsaný dialektem Turbo Pascal a vytvořil 32bitový kód pro extender GO32v1 DOS , který v té době používal a vyvíjel projekt DJ's GNU Programming Platform ( DJGPP ).

Původně byl kompilátor 16bitový spustitelný soubor DOS zkompilovaný Turbo Pascal . Po dvou letech se kompilátor dokázal zkompilovat a stal se 32bitovým spustitelným souborem.

Rozšíření

Počáteční 32bitový překladač byl publikován na internetu a do projektu se zapojili první přispěvatelé. Později vytvořil port Linux Michael van Canneyt, pět let předtím, než byl k dispozici kompilátor Borland Kylix Pascal pro Linux.

Port DOS byl upraven pro použití v OS/2 pomocí Eberhard Mattes eXtender (EMX), díky kterému byl OS/2 druhým podporovaným kompilačním cílem. Kromě původního autora Floriana Klämpfla k tomu významně přispěl také Daniël Mantione, který poskytl původní port run-time knihovny OS/2 a EMX. Kompilátor se postupně zlepšoval a verze DOS migrovala na extender GO32v2. To vyvrcholilo vydáním 0.99.5, které bylo mnohem více používáno než předchozí verze, a bylo posledním vydáním zaměřeným pouze na dodržování předpisů Borland Pascal; novější verze přidaly režim kompatibility s Delphi. Toto vydání bylo také přeneseno do systémů využívajících procesory Motorola řady 68000 (m68k).

S vydáním 0.99.8 byl přidán cíl Win32 a byl zahájen začleněním některých funkcí Delphi. Stabilizace pro vydání bez beta verze začala a verze 1.0 byla vydána v červenci 2000. Verze 1.0. Řada x byla široce používána v podnikání a vzdělávání. Pro verzi 1.0. x vydání, byl přepracován port na 68k CPU a kompilátor vytvořil stabilní kód pro několik 68k operačních systémů podobných Unixu a AmigaOS .

Verze 2

Během stabilizace toho, co by se stalo 1,0. x , a také při portování do systémů Motorola 68k bylo zřejmé, že návrh generátoru kódu byl v mnoha aspektech příliš omezený. Zásadní problémy spočívaly v tom, že přidání procesorů znamenalo přepsání generátoru kódu a že alokace registrů byla založena na principu udržování vždy tří volných registrů mezi stavebními bloky, což bylo nepružné a náročné na údržbu.

Z těchto důvodů je 1.1. Řada x se větví od verze 1.0. x hlavní větev v prosinci 1999. Nejprve šlo většinou o vyčištění a přepsání a přepracování všech částí kompilátoru. Přepisován byl také generátor kódu a alokátor registrů. Byla přidána zbývající chybějící kompatibilita s Delphi.

Práce na 1.1.x pokračovaly pomalu, ale vytrvale. Na konci roku 2003 byl k dispozici funkční port PowerPC , následovaný portem ARM v létě 2004, portem SPARC na podzim 2004 a portem x86-64 -AMD64 na začátku roku 2004, díky čemuž byl kompilátor k dispozici pro 64bitovou platformu .

V listopadu 2003, první beta verze 1.1. x větev byla zabalena a očíslována 1.9.0. Na ně rychle navázaly verze 1.9.2 a 1.9.4; druhý představil podporu OS X. Práce pokračovaly verzí 1.9.6 (leden 2005), 1.9.8 (konec února 2005), 2.0.0 (květen 2005), 2.0.2 (prosinec 2005) a 2.0.4 (srpen 2006).

Verze 2.2.x

V roce 2006 stále ještě nezačaly některé z hlavních plánovaných úprav verze 2.2, například přepis jednotkového systému, a bylo rozhodnuto místo toho začít stabilizovat již implementované funkce.

Některé z motivů této změny plánu byly potřeby projektu integrovaného vývojového prostředí Lazarus, zejména interní linker, podpora pro Win64 , Windows CE a OS X na x86 a související funkce jako DWARF . Po beta 2.1.2 a 2.1.4 byla v září 2007 vydána verze 2.2.0, poté v srpnu 2008 verze 2.2.2 a v březnu 2009 verze 2.2.4.

2.2. x série výrazně zlepšila podporu pro ActiveX a Component Object Model (COM) rozhraní a propojování a vkládání objektů (OLE), i když byly stále nalezeny chyby. Delegace na rozhraní pomocí implementsklíčového slova byla částečně implementována, ale nebyla dokončena v březnu 2011. Rovněž byla vylepšena podpora knihovny pro ActiveX.

Další hlavní funkcí byl interní linker pro Win32, Win64 a Windows CE, který výrazně zlepšil čas propojení a využití paměti a podstatně zrychlil cyklus kompilace a propojení v Lazaru. Vylepšena byla také účinnost inteligentního propojení nebo odstranění mrtvého kódu .

Drobné nové funkce zahrnovaly vylepšenou podporu formátu ladění DWARF (2/3) a optimalizace, jako je rekurze ocasu , vynechání nepotřebných rámců zásobníku a optimalizace společné eliminace subexprese (CSE) založené na registrech . K dispozici byla také první implementace podpory generického programování (generik), ale pouze experimentálně.

Verze 2.4.x

Verze 2.4.x měla méně jasný soubor cílů než předchozí verze. Přepis systému jednotek byl znovu odložen a větev, která se stala 2,4, byla vytvořena, aby udržela rizikové závazky od 2,2 a stabilizovala ji. Většinou tyto rizikové závazky zahrnovaly více vylepšení nových platforem, Mac PowerPC 64, Mac x86-64, iPhone a mnoho oprav architektur ARM a x86-64 obecně, stejně jako DWARF.

Mezi další vylepšení kompilátoru patřila optimalizace celého programu (WPO) a devirtualizace a podpora binárního rozhraní vestavěných aplikací ARM (EABI).

Později, během cyklu 2.2, byla přidána další podpora zdrojů podobná Delphi (založená na speciálních sekcích v binárním systému namísto Pascalových konstant). Tato funkce, kterou Lazarus nutně potřeboval, se stala hlavním vrcholem pobočky.

Dalšími menšími přírůstky byly správce paměti, který zlepšil výkon správce haldy v prostředích s vlákny , malá vylepšení kompatibility s Delphi, jako například OleVarianta vylepšení delegování rozhraní .

1. ledna 2010 byl vydán Free Pascal 2.4.0 a 13. listopadu 2010 oprava chyb verze 2.4.2 s podporou for..insmyček sealeda abstracttříd a dalšími změnami.

Verze 2.6.x

V lednu 2012 byl vydán Free Pascal 2.6. Tato první verze ze série 2.6 také podporovala Objective Pascal na cílech OS X a iOS a implementovala mnoho malých vylepšení a oprav chyb. V únoru 2013 byl vydán FPC 2.6.2. Obsahoval vydání NetBSD a OpenBSD poprvé od 1.0.10 na základě nových portů. V březnu 2014 byla spuštěna poslední bodová verze ze série 2.6, 2.6.4, představující převážně aktualizace databáze (fcl-db).

Verze 3.0.x

Verze 3.0.0 byla vydána 25. listopadu 2015 a byla první velkou verzí od 1. ledna 2012. Představila mnoho nových jazykových funkcí.


Verze 3.0.2 byla vydána 15. února 2017 a obsahuje opravy chyb a drobné aktualizace kompilátoru.
Verze 3.0.4 byla vydána 28. listopadu 2017.
Obsahuje mnoho jazykových vylepšení oproti předchozím verzím, včetně interního linkeru pro spustitelný a propojitelný formát (ELF), Arm AARCH64 pro iOS a Linux, oživená platforma i8086, rozšířené knihovny a mnoho dalšího. více.

Verze 3.2.x

Další hlavní verze, verze 3.2.0, byla vydána 19. června 2020. Kromě příchodu nových standardních jednotek představila mnoho nových jazykových funkcí, včetně generických rutin, standardních jmenných prostorů, spravovaných záznamů a rozšířených funkcí pro dynamická pole. a podpora dalších platforem.

Cíle

Architektura procesoru Operační systém, zařízení Verze 3.0.0 - 3.3.1 (kufr) Verze 2.6.2 Verze 2.6.0 Verze 2.4.4 Verze 2.4.2 Verze 2.4.0 Verze 2.2.4 Verze 2.0. X Verze 1.0. X
i386 DOS ( extender GO32v2 ) Ano Ano Ano Ano Ano Ano Ano Ano Ano
FreeBSD Ano Ano Ano Ano Ano Ano Ano Ano Ano
OpenBSD Ano Ano Ne Ne Ne Ne Ne Ne Ano
NetBSD Ano Ano Ne Ne Ne Ne Ne Ne Ano
Linux Ano Ano Ano Ano Ano Ano Ano Ano Ano
Operační Systém Mac Ano Ano Ano Ano Ano Ano Ano Ne Ne
OS/2 Ano Ano Ano Ano Ano Ano Ano Ano Ano
Okna Ano Ano Ano Ano Ano Ano Ano Ano Ano
Windows CE Ano Ano Ano Ano Ano Ano Ne Ne Ne
BeOS Ano Ano Ano Ano Ano Ano Ano Ano Ano
Haiku Ano Ano Ano Ano Ano Ano Ne Ne Ne
NetWare Ano Ano Ano Ano Ano Ano Ano Ano Ne
Solaris Ano Ano Ano Ano Ano Ne Ne Ne Ano
iPhone Sim Ano Ano Ano Ne Ne Ne Ne Ne Ne
QNX Neutrino Ne Ne Ne Ne Ne Ne Ne Ne Ano
Android Ano Ano Ne Ne Ne Ne Ne Ne Ne
AROS Ano Ne Ne Ne Ne Ne Ne Ne Ne
x86-64 FreeBSD Ano Ano Ano Ano Ano Ne Ne Ne Ne
OpenBSD Ano Ano Neznámý Neznámý Neznámý Neznámý Neznámý Neznámý Neznámý
NetBSD Ano Ano Neznámý Neznámý Neznámý Neznámý Neznámý Neznámý Neznámý
Linux Ano Ano Ano Ano Ano Ano Ano Neznámý Ne
Operační Systém Mac Ano Ano Ano Ano Ano Ano Ne Ne Ne
Okna Ano Ano Ano Ano Ano Ano Ne Ne Ne
iPhone Sim Ano Ano Ano Ne Ne Ne Ne Ne Ne
AROS Ano Ano Ano Ano Ano Ne Ne Ne Ne
DragonFly BSD Ano Ano Ano Ano Ano Ne Ne Ne Ne
Solaris Ano Ano Ano Ano Ano Ne Ne Ne Ne
Haiku Ano Ne Ne Ne Ne Ne Ne Ne Ne
PAŽE iOS Ano Ano Ano Ano Ano Ano Ne Ne Ne
Game Boy Advance Ano Ano Ano Ano Ano Ano Ne Ne Ne
Nintendo DS Ano Ano Ano Ano Ano Ano Ne Ne Ne
Linux Ano Ano Ano Ano Ano Ano Ano Neznámý Ne
Windows CE Ano Ano Ano Ano Ano Ano Ano Neznámý Ne
Android Ano Ano Ne Ne Ne Ne Ne Ne Ne
Vestavěný Ano Ano Ne Ne Ne Ne Ne Ne Ne
Vestavěná Rasp-Pi Ano Ne Ne Ne Ne Ne Ne Ne Ne
AROS Ano Ne Ne Ne Ne Ne Ne Ne Ne
AArch64 Linux Ano Ano Ne Ne Ne Ne Ne Ne Ne
iOS Ano Ano Ne Ne Ne Ne Ne Ne Ne
Android Ano Ne Ne Ne Ne Ne Ne Ne Ne
AVR Vestavěný Ano Ne Ne Ne Ne Ne Ne Ne Ne
PowerPC Linux Ano Ano Ano Ano Ano Ano Ano Ano Ne
Operační Systém Mac Ano Ano Ano Ano Ano Ano Ano Ano Ne
Klasický Mac OS Ano Ano Ano Ano Ne Ne Ano Ano Ne
AmigaOS 4 Ano Ano Ano Ano Neznámý Neznámý Neznámý Ano Ne
MorphOS Ano Ano Ano Ano Neznámý Neznámý Neznámý Ano Ne
AIX Ano Ano Ano Ne Ne Ne Ne Ne Ne
Wii Ano Ano Ano Ano Ne Ne Ne Ne Ne
64bitový PowerPC Linux Ano Ano Ano Ano Ano Ano Ano Ne Ne
Operační Systém Mac Ano Ano Ano Ano Ano Ano Ne Ne Ne
AIX Ano Ano Ano Ne Ne Ne Ne Ne Ne
SPARC Solaris Ano Ano Ano Ano Ano Ne Ne Ne Ne
NetBSD Ano Ano Ano Ano Ano Ne Ne Ne Ne
Vestavěný Ano Ano Ano Ano Ano Ne Ne Ne Ne
Linux Ano Ano Ano Ano Ano Ne Ne Ne Ne
SPARC64 Linux Ano Ano Ano Ne Ne Ne Ne Ne Ne
RISC-V Vestavěný Ano Ne Ne Ne Ne Ne Ne Ne Ne
RISC-V64 Vestavěný Ano Ne Ne Ne Ne Ne Ne Ne Ne
Virtuální stroj Java Jáva Ano Ne Ne Ne Ne Ne Ne Ne Ne
Android Ano Ne Ne Ne Ne Ne Ne Ne Ne
MIPS (BE a LE) Linux Ano Ne Ne Ne Ne Ne Ne Ne Ne
Vestavěný Ano Ne Ne Ne Ne Ne Ne Ne Ne
8086 (16bitový) DOS Ano Ne Ne Ne Ne Ne Ne Ne Ne
Win16 Ano Ne Ne Ne Ne Ne Ne Ne Ne
Vestavěný Ano Ne Ne Ne Ne Ne Ne Ne Ne
m68k Linux Ano Ne Ne Ne Ne Ne Ne Ne Ano
NetBSD Ano Ne Ne Ne Ne Ne Ne Ne Ano
AmigaOS Ano Ne Ne Ne Ne Ne Ne Ne Ano
Atari TOS Ano Ne Ne Ne Ne Ne Ne Ne Ano, omezený pouze kompilátor
Palm OS Ano Ne Ne Ne Ne Ne Ne Ne Neznámý

Free Pascal také podporuje generování bajtového kódu pro Java Virtual Machine od verze 3.0.0 a cílí na Oracle Javu i Google Android JVM, ačkoli syntaxe Object Pascal není plně podporována. Free Pascal 3.0.0 také podporuje platformy ARMHF, jako je Raspberry Pi, včetně ARMV6-EABIHF běžícího na Raspbian. Práce na 64bitové ARM vyústila v podporu pro iOS také v 3.0.0. Byl přidán nativní cíl ARM pro Android, čímž byl ukončen dříve hacknutý cíl ARM Linux pro generování nativních knihoven ARM pro Android. To usnadňuje přenášení aplikací Lazarus do systému Android (pomocí Custom Drawn Interface). Od FPC 2.6.2 jsou OpenBSD a NetBSD podporovány na architekturách IA32 a X86_64. Byl přidán nový vložený cíl pro použití bez OS (hlavně ARM Cortex M a MIPS). S InstantFPC je možné spouštět programy Pascal, které jsou přeloženy právě včas, jako unixové skripty nebo CGI back-end.

Ultibo core je vestavěné nebo holé kovové vývojové prostředí pro Raspberry Pi. Ultibo je založeno na Free Pascal a bylo vyvinuto pod upravenou verzí Lazarus. IDE je založeno na PC, ale bylo přeneseno i na Linux a Mac. Ultibo je runtime bez operačního systému a podporuje většinu funkcí a umožňuje programátorovi plnou kontrolu nad hardwarem prostřednictvím jednotek RTL. Modul runtime implementuje vícevláknové, preventivní multitasking. Programátor může umístit vlákna na konkrétní CPU nebo nechat běhové prostředí rozdělit zátěž automaticky nebo kombinaci těchto dvou. Podporována je většina modelů Raspberry Pi, včetně A, B, A+ a B+ a také Raspberry Pi 2B, 3B, 4B/400/CM4 a Zero.

Integrovaná vývojová prostředí

Jako většina moderních překladačů lze Free Pascal používat s integrovaným vývojovým prostředím (IDE). Kromě nezávislých IDE existují také doplňky pro různé existující IDE

Zdarma Pascal IDE v Linuxu
  • Free Pascal má své vlastní IDE v textovém režimu připomínající IDE Turbo Pascal. Je vyroben pomocí rámce Free Vision (také součástí Free Pascal), klonu Turbo Vision. Kromě mnoha funkcí IDE Turbo Pascal má dokončení kódu a podporu pro více formátů souborů nápovědy (HTML, Microsoft Compiled HTML Help (CHM), Information Presentation Facility (IPF). Místo použití nástrojů příkazového řádku používá IDE jeho vlastní vestavěný kompilátor, založený na stejném zdroji jako kompilátor příkazového řádku a debugger (pomocí libgdb nebo GDBMI) k zajištění jeho funkčnosti.
  • Lazarus je nejpopulárnější IDE používané programátory Free Pascal. Vypadá a vypadá podobně jako Delphi IDE a lze jej použít k vytváření konzolových a grafických aplikací, služeb Windows , démonů a webových aplikací . Lazarus poskytuje rámec uživatelského rozhraní napříč platformami, nazývaný Lazarus Component Library (LCL). Grafické aplikace vytvořené pomocí LCL lze portovat na jinou platformu pomocí překompilování nebo křížové kompilace .
  • Dev-Pascal je bezplatné IDE pouze pro Windows pro Free Pascal a GNU Pascal , bez dalšího vývoje po verzi FPC 2004 a verzi 2005 GPC.

Přiložené knihovny

Kromě kompilátoru a IDE poskytuje Free Pascal následující knihovny:

Příklady softwaru vytvořeného pomocí Free Pascal

  • Beyond Compare je nástroj pro porovnávání dat pro Windows, OS X a Linux. Verze Linux a OS X jsou kompilovány s Lazarus/FPC.
  • Cartes du Ciel je bezplatný program planetária pro Linux, OS X a Windows. Mapuje a označuje většinu souhvězdí, planet a objektů viditelných dalekohledem. Byl plně napsán v Lazarus/FPC a vydán pod GPL.
  • Cheat Engine je skener paměti s otevřeným zdrojovým kódem, hexadecimální editor a ladicí program. Může být použit k podvádění v počítačových hrách. Od verze 6.0 je kompilován s Lazarus/FPC.
  • Programy vykreslování dat D_2D a D_3D .
  • Double Commander je open-source multiplatformní dvoupanelový ortodoxní správce souborů inspirovaný Total Commanderem pouze pro Microsoft Windows.
  • Free Pascal je napsán v jazyce Object Pascal a assembleru a je kompilován sám.
  • HNSKY , Hallo Northern Sky je bezplatný program planetária pro Windows a Linux. Od verze 3.4.0 psaný a kompilovaný s Lazarus/FPC.
  • Lazarus : Přidružený softwarový balíček podobný Delphi od Pascalu pro rychlý vývoj grafických aplikací.
  • MeKin2D : balíček pro kinematiku planárních vazeb, vaček a převodových mechanismů.
  • Morfik : Morfik WebOS AppBuilder používá k výrobě binárních souborů CGI Free Pascal.
  • MyNotex je bezplatný software pro vytváření poznámek a správce poznámek pro Linux.
  • Rané verze kompilátoru Nim byly vyvinuty ve Free Pascal, než se v Nim stalo samo-hostováním .
  • Peazip je open source archivátor vytvořený pomocí Lazarus/FPC.
  • TorChat , dříve napsaný v Pythonu, se nyní přepisuje ve Free Pascal a Lazarus.

Viz také

  • fpGUI Free Pascal GUI toolkit-multiplatformní a na míru vytvořená sada nástrojů implementovaná v Object Pascal

Reference

externí odkazy

Oficiální webové stránky

Obecný úvod

Weby specializované na vývoj her