# 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

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

- Free Pascal
- Lazarus, среда за разработка подобна на Delphi, но използваща FPC
- Introduction to Free Pascal 2.0
- http://www.mis-algoritmos.com/

Взето от „http://bg.wikipedia.org../../../f/r/e/Free_Pascal_b833.html“.

Категории: Свободен софтуер | Приложен софтуер

##### Views

- Статия
- Беседа
- Текуща версия

##### Търсене

##### На други езици

- Česky
- Deutsch
- English
- Español
- Suomi
- Français
- 日本語
- 한국어
- Polski
- Português
- Română
- Русский
- Українська
- 中文