TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Живой Журнал

Гостевая книга

Рассылка

Благодарности

Об авторе

Free Pascal

Что такое Free Pascal, и с чем его едят?

Free Pascal, иначе называемый FPC (Free Pascal Compiler) — это 32х-разрядный, кроссплатформенный компилятор языка Pascal. В настоящем обзоре я рассмотрю его основные характеристики и возможности. Free Pascal относится к категории сво­бод­но­го программного обеспечения (free software) и распространяется по лицензии GNU.


Кроссплатформенность

Итак, что в данном случае понимается под кроссплатформеностью? Довольно-таки большое количество платформ, однако. Во-первых, это два типа процессора:

i386 — процессоры Intel серии 80x86, начиная с 80386;
m68k — процессоры Motorola серии m68k, соответственно.

Для i386 поддерживаются следующие операционные системы:

BeOS
BSD Unix, а именно:
FreeBSD
NetBSD
OpenBSD
DOS32, т.е. DOS с расширителем для 32х-разрядного защищенного режима. В версии компилятора 1.0.10 поддерживаются расширители:
Go32v1 — DJ Delorie DOS extender версии 1
Go32v2 — DJ Delorie DOS extender версии 2
Lunux
OS/2
QNX
SunOS/Solaris
Win32

Для m68k:

Amiga
Atari
PalmOS

Версия 1.1 (находящаяся в состоянии разработки нестабильная ветвь) также поддерживает:

OS/2 via EMX
Nowell Netware
MacOS
WDOSX DOS extender

Надо заметить, что поддержка некоторых целевых платформ в нестабильной версии находится в состоянии разработки и не впол­не пригодна для серьезной работы. Также в ветке 1.1 идет разработка компиляции для Linux и других ОС на отличных от i386 и m68k типах процессоров, таких как PowerPC, Sparc и 64х-разрядные процессоры линии x86.

Непосредственно кросскомпиляция поддерживается, однако возникают серьезные проблемы. Так, например, мне не удалось ском­пи­ли­ро­вать ассемблерные части RTL для Linux используя версии binutils для DOS и Windows.


Возможности языка

В целом возможности языка ориентированы на развитые "промышленные стандарты", а не на ANSI-стандарт языка, как GNU Pascal. Промышленным же стандартом языка Pascal в настоящее время является его диалект Object Pascal от фирмы Borland. Кро­ме того, Free Pascal поддерживает дополнительные расширения, нехарактерные для Borland Delphi.

Версия 1.0.10 поддерживает следующие возможности:

Object Pascal на уровне Delphi 3, и немного от Delphi 4:

Объектные типы, в том числе классы;
Длинные строки;
"Широкие" строки с поддержкой UNICODE. Впрочем, полной поддержки различных кодовых страниц на данный момент нет, т.е. автоматическое преобразование WideString -> AnsiString и наоборот корректно выполняется только для символов Latin-1;
Перегрузка (overloading) функций и процедур.

Дополнительные расширения:

Перегрузка операторов сравнения (<, >, =, <=, >=), арифметических (+, -, *, /, **, div, mod), и оператора присваивания (:=);
Поддержка inline-функций и процедур — в отличие от Borland Pascal, такие подпрограммы не требуется писать в машинных кодах;
Поддержка примитивных макросов;
Поддержка операторов присваивания с выполнением некоторого арифметического действия (+=, -=, *=, /=).

В версии 1.1 добавлены средства языка из старших версий Borland Delphi:

Динамические массивы;
Интерфейсы.

В настоящий момент все перечисленные средства языка работают удовлетворительно, хотя можно выделить пару проблем: во-пер­вых, незавершено автопреобразование строк UNICODE, и во-вторых, реализация интерфейсов допускает не­со­от­вет­ствие тре­бо­ва­ни­ям модели COM — единственность ссылки на IUnknown должна отслеживаться разработчиком.


Компиляция

Компиляция происходит весьма быстро, поскольку, как и положено компилятору Pascal, Free Pascal работает в один проход. Так, на­при­мер, полная сборка самого компилятора на моем компьютере (Celeron 600) занимает около полутора минут.

Для сборки объектных файлов, получающихся в результате компиляции, вызывается внешний компоновщик — GNU ld (или ldw для Windows-платформы). Вообще, дистрибутив Free Pascal попросту включает в себя пакет GNU BinUtils, частью которого яв­ля­ет­ся ld. Также данный пакет включает в себя кроссплатформенный ассемблер as (asw), GNU make, компилятор ресурсов для Win32 — windres и другие программы.

Встроенный компоновщик планируется в следующих версиях компилятора, однако ход работ в этом направлении мне неизвестен.

Компилятор командной строки для платформ i386 называется ppc386 (ppc386.exe для DOS и Windows). В дистрибутив входит так­же "загрузчик" (loader) компилятора, называемый, для любого процессора, fpc (fpc.exe). Таким образом, на любой платформе мож­но использовать в командной строке fpc <имя файла>.

Компилятор Free Pascal использует оптимизацию. Хотя она и уступает интеллектуальной оптимизации компилятора того же Delphi, од­на­ко рутинную, формальную оптимизацию FPC таки выполняет. В частности, можно указать целевой процессор, чтобы ис­поль­зо­вать расширенный набор команд, отсутствующих в i386, например, команды Pentium II. Для вычислений можно задействовать на­бор команд MMX или XMM.


Стандартные модули

В состав дистрибутива входят модули, реализующие основную функциональность. Конкретный состав модулей зависит от плат­фор­мы. Кроме ядра RTL, дистрибутив включает в себя дополнительные модули, на­зы­ва­емые "пакетами" (packages), со­дер­жа­щие, на­при­мер, интерфейс к API SQL-сервера InterBase (пакет ibase), или функции работы с регулярными вы­ра­же­ни­ями (пакет regexpr).

Также наличествует некоторый аналог VCL, точнее ее ядра — основных классов и модулей библиотеки. Библиотека на­зы­ва­ет­ся FCL — Free Component Library. Содержит как относительно примитивные классы, a-la TStringList, так и классы для ра­бо­ты с ба­за­ми данных. Впрочем, модули FCL в настоящее время явно недоработаны — содержат пробелы в функциональности и не­ко­то­рые баги.


Документация

В целом, Free Pascal весьма хорошо документирован.

Документация к версии 1.0.10 состоит из шести частей и распространяется в различных форматах, в том числе — исходники LaTeX. В состав дистрибутива входит документация в виде PDF и HTML. Ниже — описание частей документации.

Free Pascal : Reference guide

Справочное руководство. Содержит описание языка и модуля System. Также описывается модуль ObjPas, автоматически под­гру­жа­емый (аналогично System) при выборе режима компиляции Delphi, или ObjFPC.

Free Pascal : Users' manual

Руководство пользователя. Содержит описание процедуры инсталляции, ключей командной строки компилятора, IDE и ути­лит, входящих в состав дистрибутива, сообщений компилятора об ошибках, ошибках времени выполнения и так далее. Также со­дер­жит перечень стандартных модулей для различных платформ.

Free Pascal : Programmers' manual

Руководство программиста. Описываются режимы компиляции, директивы компилятора, вопросы распределения памяти, ком­по­нов­ки, использования ассемблера и так далее.

Free Pascal supplied units : Reference guide

Справочное руководство по стандартным модулям. Довольно подробно описываюся модули RTL, за исключением тех, которые яв­ля­ют­ся интерфейсами к API операционных систем и их компонент.

Free Component Library (FCL) : Reference guide

Справочное руководство по FCL. В настоящий момент содержит описание классов модуля Classes. По всей видимости, в даль­ней­шем будет расти вместе с доработкой самой FCL. По крайней мере, я на это надеюсь.

FPDoc : Free Pascal code documenter : Reference manual

Руководство по использованию утилиты для автодокументации fpcdoc, входящей в состав дистрибутива.


IDE и утилиты

Вместе с компилятором распространяется IDE (интегрированная среда разработки — Integrated Development Environment) тек­сто­во­го режима, похожее на IDE Turbo/Borland Pascal. В настоящее время, стабильные версии IDE, насколько мне известно, су­щес­тву­ют только для DOS и Win32, работа над вариантами для других платформ еще не закончена. IDE содержит встро­ен­ную систему отладки — если я не ошибаюсь, с использованием отладчика GNU GDB, — и встроенную справку.

О стабильности IDE, к сожалению, приходится говорить с некоторой натяжкой — проблемы существуют. Однако, в целом поль­зо­вать­ся можно.

Также в состав дистрибутива входят следующие утилиты:

data2inc — преобразует произвольный файл во включаемый файл (.inc) для FPC, где соответсвующие данные представлены в виде константы-массива.
delp — очищает каталог от "временных" файлов, возникающих при компиляции, таких как объектные файлы модулей и .ppu.
fpcmake — используется для подготовки make-файлов для GNU make.
fpdoc — генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.
fpmc — компилятор msg-файлов.
fprcp — pascal-препроцессор для windres.
h2pas и h2paspp — транслятор заголовочных файлов C и C++ в модули Pascal.
makeskel — утилита для подготовки скелета xml-описания для fpdoc.
ppdep — позволяет получить список модулей, от которых зависит некий данный.
ppudump — извлекает информацию из .ppu-файлов.
ppufiles — то же, что ppdep, но не для исходных модулей, как тот, а для .ppu-файлов.
ppumove — позволяет собирать библиотеки из .ppu.
ptop — форматирование исходников.
rstconv — конвертирует файлы .rst, создаваемые компилятором для строк, описанных как resourcestring, в формат GNU gettext .po.

Кроме вышеперечисленных, относящихся собственно к Free Pascal, утилит, в дистрибутив входит, как уже упоминалось, пакет GNU BinUtils.

В настоящий момент находится в процессе разработки RAD для Free Pascal — IDE Lazarus. Существует рабочая версия для Linux. Версия для Win32 пока не работает.


Лицензия

Free Pascal распространяется под лицензией GNU GPL (GNU General Public License), входящие в состав дистрибутива биб­ли­о­те­ки модулей — под лиценизией GNU LGPL (GNU Lesser Public License). Таким образом, программы, написанные на Free Pascal, мо­гут распространяться каким угодно образом, в том числе — и закрытым, а исходники самого компилятора доступны для из­ме­не­ния и использования с сохранением условий GNU GPL.

 

Скачать Free Pascal(1 часть)

Скачать Free Pascal(2 часть)

Скачать Free Pascal(3 часть)

Скачать Free Pascal(4 часть)

Скачать Free Pascal(5 часть)

Скачать Free Pascal(6 часть)

 

Архив разбит на 6 частей.

 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz