Free Pascal

от Уикипедия, свободната енциклопедия

Free Pascal (или FPK Pascal) е 32-битов и 64-битов компилатор за Pascal.

Съдържание

[редактиране] Въведение

Free Pascal е 32/64-битов мултиплатформен (поддържащ както различни операционни системи, така и различни процесорни архитектури) компилатор. Компилаторът реализира диалектите на Borland (Turbo Pascal и Delphi) и е достъпен за най-често срещаните операционни системи.

Free Pascal първоначално се е казвал FPK Pascal, тъй като FPK са инициалите на автора - Florian Paul Klämpfl. Въпреки популярното мнение, FPK Pascal не означава „Free Pascal Kompiler“, най-малкото поради факта, че „Compiler“ на немски не се пише с K. В края на 1997 името на проекта е променено на Free Pascal Compiler (FPC).

В момента 2.0.4 е последната стабилна версия на Free Pascal.

FPC е доста добре документиран свободен софтуер, с документация от около 1800 страници.

Free Pascal идва със среда за разработка, работеща в текстов режим. Тя наподобява тази на Turbo Pascal.

Отделно е създаден проект, който дава възможност за визуално програмиране на FPC, наречен Lazarus. Интерфейсът му наподобява този в Borland Delphi, а бибилиотеката с визуални компоненти LCL съдържа аналози на по-голямата част от функциите и компонентите, намиращи се във VCL.

[редактиране] Езиков диалект

FPC се придържа към реалността и реализира де факто стандартните диалекти на Pascal: диалектите на Borland. (По-точно: Borland Pascal 7 и Delphi 2 за версия 1.0.x и Delphi 6/7 за 2.0.x).

Въпреки това обаче проектът има концепция за режим на компилиране и разработчиците са дали ясен знак че няма да отхвърлят работещи patch-ове които добавят режим на компилиране съвместим с Ansi/ISO стандарта.

Също така известни усилия са положени и за поддръжка на част от синтаксиса на Apple-ския Pascal за да се улесни интерфейса към Mac OS (X).

Следната функционалност от Delphi все още липсва във Free Pascal:

  • Delegation using the "implements" keyword
  • automatic COM IDispatch dual interfaces (dispinterfaces)
  • dispid in normal interfaces
  • packages
  • set types can have different size.

[редактиране] Възможности

Компилаторът FreePascal се съпровожда от богат набор библиотеки и солидна документация.

Библиотеките за UNIX среда дават възможност за комуникация с различни мрежови услуги и бази данни, както и за директен достъп до ядрото. Това прави FPC удобен за изграждане на големи приложения. FPC през последните години стана реален инструмент за програмистите, които предпочитат простия и ясен стил на езика Pascal. След отказа на Borland да поддържа езика Pascal за други платформи (освен Windows), FreePascal е дефакто стандарт за езика.

Компилаторът е един от 4-те, които официално се използват на международните състезания по информатика.

[редактиране] История

[редактиране] Ранните години

Free Pascal се заражда когато Borland обявяват че няма да има Borland Pascal 8 и следващата версия ще бъде продукт само за Windows (който в последствие излиза под името Delphi). Тогава един студент (Florian Paul Klämpfl) започва работа по свой собствен компилатор. Компилаторът, макар и писан на 16-битовия Turbo Pascal е генерирал 32-битов код, използвайки DOS extender-а go32v1 (същия, който е използван от gcc (DJGPP) под DOS). След две години компилаторът вече може сам да компилира себе си.

[редактиране] Разрастването

32-битовият компилатор е публикуван в мрежата и първите разработчици се присъединяват към проекта. В първите години след появата му в интернет е направена Linux версия от Michael van Canneyt (цели 5 години преди Kylix), DOS версията е адаптирана към OS/2 EMX extender-а, за ползване под OS/2, а самата DOS версия постепенно е подобрена и пренесена върху go32v2 extender-а. Това води до появата на версия 0.99.5 която става много по-използвана от версиите преди нея, и също последната, която поддържа само Turbo Pascal, тъй като следващите вече включват и Delphi-съвместим режим. Също така 0.99.5 е пренесена и на системи с процесор Motorola 680x0.

Във версия 0.99.8 е добавена Win32 поддръжка и е започнат процеса на добавяне на Delphi разширенията към Pascal. Започва стабилизиране за версия 1.0 и окончателно тя излиза през Юли 2000. 1.0.x серията (заедно с последвалите я версии, последната, 1.0.10 през Юли 2003) стават широко използвани както професионално, така и в обучението. 1.0.x версиите отново са прехвърлени и на процесор 680x0 и компилаторът генерира стабилен код за редица Unix-подобни OS и за AmigaOS.

[редактиране] Следващото поколение

По време на стабилизирането на бъдещото тогава 1.0.x, и по-специално по време на пренасянето на m68k системи става ясно, че дизайнът на генератора на код е твърде ограничен по много начини. Двата принципни проблема са: добавянето на поддръжка на нови процесори означава пренаписване на целия генератор на код и заделянето на регистрите е основано на принцип (винаги да се пазят 3 свободни регистъра между градивните блокове) който е твърде труден за спазване и не-гъвкав.

Поради тези причини, FPC 1.1.x клонът е създаден от 1.0.x бета клона през декември 1999. В началото промените са основно почистване на кода и пренаписване/дизайн на всички части от компилатора, след това генератора на код и register allocator-а са пренаписани. Като бонус и липсващите неща за Delphi съвместимост са добавени.

Работата по 1.1.x продължава бавно но сигурно и в ранната 2003 поддръжката за PowerPC процесор започва да работи, бързо последвана от AMD64 (на емулатор, разработчиците не са имали истински чип по това време) и първоначалните версии за ARM и Sparc. Поддръжката на AMD64 реално прави компилатора 32/64-битов.

През ноември 2003 е направена първата бета версия на 1.1.x клона и по повод случая номерът на версията е увеличен на 1.9. Това бързо е последвано от излизането на версии 1.9.2 и 1.9.4. 1.9.4 е специална защото е първата която поддържа Mac OS X.

Работата по компилатора продължава с версии 1.9.6 (Януари 2005) и 1.9.8 (края на Февруари 2005). Версия 2.0.0 излиза окончателно през Май 2005.

[редактиране] Бъдещето

Планове за бъдещето (версия 2.1.x)

  • Подобряване на поддръжката на COM/OLE. Това включва наколко неща:
    • интерфейси (vmt) съвместими с COM
    • Variant-и (заради OLE)
    • implements style delegation
  • Неща свързани с link-ването, debug-ването и с файловите формати, генерирани от компилатора:
    • Оптимизиране на smart link-ването (махане на .a файловете, използване на по-малко памет).
    • По-добра поддръжка на "packages" и на динамични библиотеки (PIC!) като цяло.
    • cross linking (до голяма степен е готово в 2.0)
    • преход от stabs към dwarf формат за генерираната debug информация.
    • Някаква поддръжка на ресурси съвместими с Kylix. (все още се обсъжда от разработчиците)
  • Поддръжка на "големи" файлове (с 64-битови дължини).
  • Свързани с Apple Pascal:
    • Предаване на адрес на вложена под-процедура, като параметър при извикване на друга процедура.

Част от тази функционалност (по-специално нещата касаещи link-ването) може да иска преструктуриране свързано с

  • написване на вграден linker за някои основно платформи (вместо LD)
  • Пренаписване на кода, свързан с поддръжката на модули (units).

[редактиране] Платформи

Платформите поддържани от FPC зависят от версията.

Текущата стабилна версия 2.0.x поддържа следните процесори

  • Intel 80386 и съвместими
  • PowerPC
  • ARM (Zaurus)
  • Sparc v8 и v9
  • AMD64 (x86_64)

и следните операционни системи

  • GNU/Linux, (всички процесори)
  • FreeBSD
  • Mac OS X и Darwin (PowerPC)
  • Mac OS (PowerPC)
  • DOS (С помощта на dos extender-а Go32V2. PMode extender се използва понякога за embedded projects),
  • Win32,
  • OS/2 (EMX и native)
  • Novell NetWare


Предишната стабилна версия 1.0.x поддържаше следните процесори

  • Intel 80386 и съвместими
  • Motorola 680x0

и следните операционни системи:

  • GNU/Linux, (x86/m68k)
  • FreeBSD,
  • NetBSD, (x86/m68k)
  • DOS (С помощта на dos extender-а Go32V2. PMode extender се използва понякога за embedded projects),
  • Win32,
  • OS/2 (EMX)
  • Classic Amiga (m68k)

и бета платформите:

  • BeOS, (beta)
  • SunOS (Solaris),
  • QNX

[редактиране] Външни препратки