Free Pascal

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Free Pascal
Free Pascal 2.3.1 op een 64 bit Windows
Free Pascal 2.3.1 op een 64 bit Windows
Ontwikkelaar Florian Klämpfl en vrijwilligers
Recentste versie 2.6.4 
(11 maart 2014)
Status Actief
Besturingssysteem Multiplatform
Categorie Compiler
Licentie GPL
Website (en) Projectpagina
Portaal  Portaalicoon   Informatica
Vrije software
De Free Pascal-IDE voor Linux. De computer werd voorbereid voor gebruik in de National Olympiad in Informatics (China)

Free Pascal (afgekort FPC) is een vrije, portable en open source-compiler voor Pascal en Object Pascal. Het is een 32/64-bits compiler met ondersteuning voor meerdere processorarchitecturen en besturingssystemen. De compiler implementeert Borlands Pascal-dialecten (Turbo Pascal en Delphi (programmeertaal), evenals een aantal Mac Pascal-constructies, en is beschikbaar voor de meeste gangbare besturingssystemen.

Free Pascal stond bekend als FPK Pascal, waarbij de letters stonden voor de intialen van de auteur Florian Paul Klämpfl. De naam werd eind 1997 gewijzigd in Free Pascal Compiler, wat afgekort wordt tot FPC.

Functies[bewerken]

Free Pascal wordt geleverd met een tekstmodus-IDE die lijkt op die van Turbo Pascal (Turbo Vision). Deze IDE verrotte een tijd (software rot) omdat hij niet werd onderhouden.

Door samenwerking in de tweede helft van 2005 en de eerste maanden van 2006 werden de meeste grote problemen verholpen en werd de IDE weer release-waardig.

Net als Turbo Pascal en Delphi heeft Free Pascal uitstekende ondersteuning voor integratie van assembleertalen in de Pascal/Object Pascal-code. Free Pascal ondersteunt verschillende architecturen en notaties in de interne assembler.

De grafische onderdelen van de Delphi-bibliotheken (de VCL en het ontwikkelen van een grafische IDE en Rapid application development) zijn onderdeel van een apart project, genaamd Lazarus.

Taaldialect[bewerken]

Free Pascal heeft de de facto standaarddialecten van moderne Pascal-programmeurs overgenomen: de Borland-dialecten. Vanaf versie 2.0 is er continu gewerkt aan compatibiliteit met Delphi 7.

Het project heeft een compilatiemodeconcept, en de ontwikkelaars hebben duidelijk gemaakt dat ze werkende patches voor de ANSI- en ISO-standaarddialecten zouden schrijven om ondersteuning voor een standaardmodus aan het project toe te voegen.

Er is gepoogd een deel van de syntaxis van Apples Pascaldialect te ondersteunen, om de interactie met Mac OS en Mac OS X te vergemakkelijken. Omdat dit dialect een aantal Standaard Pascal-features implementeert die niet beschikbaar zijn in Turbo Pascal en Delphi, is Free Pascal meer ISO-compatibel dan deze anderen.

Met de 2.2-serie is er weinig noemenswaardigs veranderd aan de doelen voor het dialect (met name compatibiliteit met Delphi 7), in plaats daarvan heeft vooral compatibiliteit prioriteit. Er ontbreekt nog steeds Delphi-functionaliteit, namelijk compilerondersteuning voor het exporteren van klassen vanuit shared libraries (gedeelde bibliotheken), wat handig is voor bijvoorbeeld Lazarus, dat pakketten van components implementeert.

Geschiedenis[bewerken]

Het begin[bewerken]

Free Pascal verscheen toen Borland duidelijk maakte dat er geen Borland Pascal 8 zou komen, en de volgende versie enkel Windows zou ondersteunen (dit werd later Delphi).

Florian Paul Klämpfl, toen student, begon met het werken aan zijn eigen compiler. De compiler was vanaf het begin geschreven in het Turbo Pascal-dialect en genereerde 32-bit-code voor de go32v1 extender, die toen werd gebruikt en ontwikkeld door het DJGPP-project.

In het begin was de compiler zelf een 16 bit-programma, geproduceerd door de Turbo Pascal-compiler. Na twee jaar was de compiler in staat zichzelf te compileren, en werd toen ook 32 bit.

Uitbreiding[bewerken]

Toen de eerste 32 bit-compiler op het internet werd gepubliceerd, gingen de eerste vrijwilligers meedoen aan het project. Een aantal jaar later werd er door Michael van Canneyt een Linux-port gemaakt, vijf jaar voordat Kylix beschikbaar was.

De DOS-versie werd ook steeds beter, en migreerde naar de go32v2 extender. Vooral hierdoor werd versie 0.99.5 een stuk meer gebruikt dan voorgaande versies, en was de laatste versie die zich enkel richtte op Turbo Pascal-compatibiliteit - in latere versies is er een Delphi-compatibiliteitsmodues toegevoegd. Deze versie is ook geport naar systemen met een 680x0.

Met de 0.99.8-release is de Win32-target toegevoegd en is er een begin gemaakt met het opnemen van een aantal Delphi-features. Er werd begonnen aan het stabiliseren van de code voor de 1.0-uitgave. Deze mijlpaal is bereikt in juli 2000.

De 1.0-serie werd veel gebruikt, zowel voor commerciële als educatieve toepassingen. Voor de 1.0-releases is de compiler opnieuw geport naar 68k, en de compiler produceerde stabiele code voor een aantal 68k Unices en AmigaOS.

De tweede generatie[bewerken]

Gedurende de stabilisatie van wat later 1.0.x zou worden, en specifiek tijdens het porten naar de Motorola 68k-systemen, was het duidelijk dat het ontwerp van de codegenerator in veel opzichten te beperkt was. De belangrijkste problemen waren dat het toevoegen van een processor bestond uit het herschrijven van de codegenerator, en dat het de registertoewijzing was gebaseerd op het altijd beschikbaar houden van drie registers tussen het bouwen van blokken, wat flexibiliteit beperkte en moeilijk vol te houden was.

Om deze redenen is er een aparte 1.1.x-branch gevormd van de 1.0.x-hoofdbranch in december 1999. In het begin bestond de nieuwe branch voornamelijk uit verbeteringen en herschreven delen van alle delen van de compiler, en daarna zijn de codegenerator en registertoewijzer herschreven. Toen is ook de nog ontbrekende Delphi-compatibiliteit toegevoegd.

Het werk aan 1.1.x ging ging langzaam maar zeker, en in eind 2003 werkte de PowerPC-port, gevolgd door ports naar ARM en SPARC in respectievelijk de zomer en herfst van 2004. De AMD64-port volgde in begin 2004, en dat maakte dat de compiler beschikbaar werd voor een 64-bit-platform.

In november 2003 is een eerste bètaversie van de 1.1.x branch vrijgegeven en is het versienummer opgeschroefd naar 1.9.0. Deze werden gauw opgevolgd door versie 1.9.2 en 1.9.4.

Versie 1.9.4 was bijzonder omdat het de eerste versie met was met ondersteuning voor Mac OS X.

Het werk ging verder met versie 1.9.6 (januari 2005), 1.9.8 (eind februari 2005), 2.0.0 (mei 2005), 2.0.2 (december 2005) en 2.0.4 (augustus 2006).

Verbetering: de 2.2 versies[bewerken]

In 2006 was er nog niet begonnen aan het werk aan het herstructuren zoals gepland voor 2.2, zoals het herschrijven van het unit-systeem. Er is toen besloten om te werken aan de stabiliteit van de al geïmplementeerde features. Een aantal redenen voor het veranderen van de roadmap waren de eisen van het Lazarus-project, specifiek the interne linker, ondersteuning voor Win64, Windows CE en Mac OS X op x86 en gerelateerde features zoals DWARF. Na een korte reeks betas (2.1.2 and 2.1.4) is versie 2.2.0 vrijgegeven in september 2007, gevolgd door versie 2.2.2 in augustus 2008, en toen versie 2.2.4 in maart 2009.

In de 2.2.x-serie zijn de ondersteuning voor ActiveX/COM, interface, en OLE sterk verbeterd, maar zijn er wel een paar bugs overgebleven. De interfacedelegatie via het implements-sleutelwoord is gedeeltelijk geïmplementeerd.[1]

Naast de taalondersteuning is ook de bibliotheekondersteuning voor ActiveX verbeterd.

Een andere grote verandering was de interne linker voor Win32, Win64 en Windows CE, die linktijd en geheugengebruik flink omlaag bracht, en de compile-link-run-cyclus in Lazarus wat uitstaanbaarder maakt. De efficiëntie van het smart-linken (dead code elimination) is ook verbeterd.

Kleinere nieuwe features zijn de verbeterde ondersteuning voor het DWARF debugformaat, en optimalisaties zoals staartrecursie, weglaten van onnodige stack frames en register-gebaseerde common subexpression elimination. Een eerste implementatie van genericiteitsondersteuning is ook beschikbaar, maar enkel voor 'verkenningsdoeleinden'.

Het is op dit moment onduidelijk of de verbeterde ondersteuning voor in binaire bestanden ingebedde resources in 2.3.x in versie 2.2.4 beschikbaar zal zijn.

Platformen[bewerken]

Free Pascals beschikbaarheid hangt af van de major version.

Versie 2.3 (ontwikkelversie)[bewerken]

Naast de door versie 2.2 ondersteunde platformen ondersteunt deze versie:

  • Symbian OS - met UIQ toolkit
  • Mac OS X 64-bit - voor x86_64 (AMD64) en 64-bit PowerPC
  • FreeBSD/x86_64 - niet volledig stabiel momenteel

Versie 2.2 (stabiel)[bewerken]

De huidige stabiele versie 2.2.0 heeft, naast ondersteuning van de 2.0.x-versies, ondersteuning voor de volgende platforms:

Versie 2.0[bewerken]

Processoren:

Besturingssystemen:

Versie 1.0[bewerken]

Processoren:

Besturingssystemen:

Bètaplatformen:

Zie ook[bewerken]

  • Lazarus: een IDE (Integrated Development Environment), en RAD (Rapid Application Development)-pakket gebaseerd op Free Pascal.

Externe links[bewerken]

Verwijzingen[bewerken]

  1. http://bugs.freepascal.org/view.php?id=8951