Free Pascal

Free Pascal (również: FPK Pascal, FPC) jest 32- oraz 64-bitowym kompilatorem języka Pascal, dostępnym na wiele różnych platform sprzętowych i systemów operacyjnych.

Wprowadzenie 
Kompilator Free Pascal jest rozpowszechniany zgodnie z licencją GPL. Biblioteki wykonawcze oraz dodatkowe pakiety rozpowszechniane razem z kompilatorem objęte są jednak zmodyfikowaną licencją LGPL. Modyfikacja owa polega na tym, że autorzy jasno wyrazili zgodę na dołączanie (linkowanie) tych bibliotek do innych programów bez względu na licencję tworzonego programu i sposób łączenia (statyczne lub dynamiczne).

Początkowo projekt nosił nazwę FPK Pascal. FPK stanowiło skrót od niemieckojęzycznej nazwy Frei Pascal Kompiler, a także oznaczało inicjały twórcy projektu (Florian P. Klaempfl). Podczas wydania wersji 1.0 skrót, jak i nazwę, zmieniono na odpowiednio FPC i Free Pascal Compiler.

Wizualną częścią bibliotek dla FPC, zgodną z VCL znanym z Delphi, a także stworzeniem narzędzia typu RAD, zajmuje się osobny projekt – Lazarus.

FPC posiada własne IDE stworzone w trybie tekstowym, jednak wiele błędów nie zostało naprawionych od wielu lat, mimo stosunkowej popularności środowiska.

FPC rozpoznaje i kompiluje kod Pascala zapisany w poniższych dialektach tego języka:

 FPC – domyślny tryb pracy kompilatora,

 obiektowy FPC – dialekt podobny do FPC, z tym że dopuszcza użycie rozszerzeń Object Pascala,
 Delphi – tryb zgodności z Delphi w wersji 4 i późniejszymi,
 GPC – zgodność z kompilatorem GPC z pakietu GCC,
 Mac (wciąż w fazie tworzenia) – zgodność z dialektem Pascala firmy Apple,
 TP – zgodność z dialektem użytym w kompilatorze Turbo Pascal 7.

Możliwości 
Składnia języka jest semantycznie zgodna z TP 7.0, tak samo jak z większością wersji Delphi (klasy, RTTI, wyjątki, ansistrings). Free Pascal udostępnia pełny zakres programowania obiektowego. Możliwe jest przeciążanie funkcji i przeciążanie operatorów oraz zagnieżdżanie komentarzy. Free Pascal obsługuje arytmetykę 64-bitową, SSE. Wbudowana jest optymalizacja kodu maszynowego dla procesorów Pentium, AMD, AMD64. FPC wspiera klasy generyczne (Dodane w serii 2.2). Jednak w związku z problemami w zastosowaniu operatorów w rekordach, które były używane przez klasy generyczne, od wersji 2.6.0 dodano wsparcie dla zaawansowanych rekordów, co umożliwiło ich szersze zastosowanie.

Historia 
Free Pascal powstał w czasie, kiedy stało się jasne, że firma Borland nie wyda kolejnej – ósmej wersji dosowego kompilatora Turbo Pascal. Zamiast niego powstał kompilator Delphi dostępny tylko dla użytkowników Windows. Student Florian Klaempfl zaczął pisać swój własny 16-bitowy kompilator dla DOS-a. Po dwóch latach przepisał go na architekturę 32-bitową przy użyciu rozszerzenia go32v1.

Kompilator został opublikowany w internecie, co spowodowało przyłączenie się do projektu innych programistów. Na pięć lat przed powstaniem Kyliksa Michael van Canneyt stworzył port FPC dla Linuksa. W międzyczasie powstał port dla OS/2, a pierwotna wersja dla DOS-a została znacznie ulepszona. Programiści zdecydowali się wydać wersję 0.99.5, która doczekała się także portu dla procesorów 680x0.

W kolejnej wersji 0.99.8 został dodany port dla platformy Win32 i rozpoczęły się prace nad dodaniem kompatybilności z Delphi. 12 lipca 2000 ukazała się pierwsza stabilna wersja 1.0. Kolejne wydania z serii 1.0.x zawierały głównie poprawki błędów oraz wciąż rozwijany port dla procesorów 680x0. Kłopoty w implementacji tego portu skłoniły zespół programistów FPC do rozpoczęcia prac nad nową serią 1.1.x (przekształconą później w 1.9.x). Miała ona zawierać przepisany od nowa generator kodu ułatwiający portowanie kompilatora do zupełnie nowych architektur.

Na początku 2003 roku powstał port dla PowerPC, a niedługo potem dla AMD64. Rozpoczęto też prace nad portami ARM i SPARC. Wersja FPC dla AMD64 uczyniła go kompilatorem zarówno 32-, jak i 64-bitowym.

15 maja 2005 miała miejsce długo wyczekiwana premiera wersji 2.0. Przyniosła ona zmianę struktury kompilatora na bardziej modularną, by ułatwić jego przenoszenie na nowe platformy. Poprawiono obsługę wątków i optymalizację kodu. Kompilator przeniesiono na systemy Mac OS 9 i X, MorphOS oraz Novell Netware.

Kwiecień 2006 przyniósł pierwszy snapshot kompilatora dla platformy Win64 Vista.

W Sierpniu 2007 wydana została seria 2.2.X która przyniosła wewnętrzny linker dla platform Win32, Win64 oraz WinCE. Pozwolił on na znaczne zredukowanie czasu generowania plików wykonywalnych w porównaniu do linkera GCC. Poza tym w serii tej ulepszono usuwanie martwego kodu oraz smartlinking.

Platformy docelowe 
Wersja 2.6.0 jest dostępna na następujących platformach:

Zobacz też 
 Lazarus

Przypisy

Linki zewnętrzne 
 Oficjalna strona projektu 

Kompilatory
Pascal
Oprogramowanie na licencji GNU GPL