shikhalev.org
Скриншот IDE Lazarus

Free Pascal [1], точнее Free Pascal Compiler aka FPC — это свободный1 кроссплатформенный компилятор языка программирования Pascal. В отличие от другой свободной реализации этого языка — GNU Pascal, FPC ориентирован не на стандарт, а на популярные диалекты — то, что когда-то называлось Object Pascal, а теперь Delphi Language.

Существует также проект Lazarus [2] — основанная на FPC свободная среда программирования, реализующая значительную часть функционала собственно среды Borland Delphi (см. врезку). Простые проекты можно переносить практически без ру­ч­ной работы, после чего они могут быть скомпилированы для систем, отличных от Win32.

Поддерживаемые платформы

Список ниже неполон. Дело в том, что разработка компилятора ведется непрерывно и портирование его на различные платформы тоже. Версии для разных платформ находятся в разных стадиях готовности, постоянно дорабатываются, а проверить их вживую у меня нет никакой возможности. Поэтому я перечислю только те, в которых я более-менее уверен.

  • x86 (aka i386, IA32)
    • Linux
    • Win32
    • FreeBSD
    • Darwin (Mac OS X)
    • DOS (с «расширителями» для защищенного 32-разрядного режима)
      • Go32v2
      • WDOSX
      • Watcom-совместимые
    • OS/2
    • Netware
    • Solaris
  • x86-64 (aka AMD64, EM64T)
    • Linux
    • Win64
    • FreeBSD
    • Darwin (Mac OS X)
    • Solaris
  • ARM
    • Linux
    • Windows CE, Windows Mobile
    • Darwin (Mac OS X / iPhoneOS)
    • GameBoy Advance
    • Nintendo DS
    • PalmOS
    • SymbianOS
  • PowerPC
    • Linux
    • Darwin (Mac OS X)
    • MacOS (classic)
    • Nintendo Wii
  • PowerPC64
    • Linux
    • Darwin (Mac OS X)
  • SPARC
    • Linux
    • Solaris

Не все из этого развито одинаково хорошо. За подробным списком с пояснениями, что и как, прошу на официальный сайт, в ви­ки­до­ку­мен­та­цию [3]. Информация в pdf-документации, пожалуй, слишком скупа [4, стр. 7–8]. Замечу, что чем менее «мейн­стрим­на» ваша платформа, тем больше вероятность столкнуться с проблемами. Наиболее отлажены и богаты библиотеками — самые распространенные системы: Windows, Linux, Mac OS X и FreeBSD.

В устаревших версиях компилятора 1.x, которые можно попытаться найти на ftp-зеркалах в интернете, поскольку на официальном ftp-сервере [5] они сейчас отсутствуют, была также поддержка архитектуры Motorola 680x0. В современных версиях она отсутствует, и неизвестно, вернется ли. Скорее всего, никому особо-то и не нужно.

Отдельно стоит упомянуть о недавно запущенном проекте генерации кода для виртуальной Java-машины. В релиз эта возможность еще не попала, желающие могут обратиться к викидокументации [6].

Диалекты языка

TP

режим совместимости с Turbo Pascal. Совместимость практически полная, за исключением тех средств Turbo Pascal, которые были возможны только в real-mode DOS.

Delphi

режим совместимости с Borland Delphi. На сегодняшний день по языку2 Free Pascal совместим с Delphi примерно 7-й версии.

FPC

собственный диалект языка. Базируется на TP, от которого отличается различными расширениями, такими как, например, перегрузка операций. Включен по-умолчанию.

ObjFPC

собственный диалект языка с объектно-ориентированными расширениями a-la Delphi. Рекомендуется для новых проектов.

MacPas

режим совместимости с Macintosh Pascal.

Выбор текущего диалекта осуществляется через указание параметров компилятора, а также посредством директивы компилятора {$MODE xxx} непосредственно в исходных файлах. В одном проекте, но в разных модулях, могут быть задействованы одновременно любые диалекты.

Подробнее о различиях между поддерживаемыми диалектами и прочих расширениях языка пойдет речь в отдельной статье.

Источники информации

Официальная документация на английском языке распространяется вместе с компилятором, а также доступна на официальном же сайте FreePascal.org [1]. Там же находится вики, где можно найти дополнительную информацию — о новых, экспериментальных и только планируемых возможностях.

Документация распространяется в формате PDF и состоит из следующих книг:

Free Pascal: Language Reference Guide [7]

Справочное руководство по языку. Подробно описывает собственно язык, не включая стандартную библиотеку, которая документирована отдельно (см. ниже).

Free Pascal: Programmer’s Guide [8]

Руководство программиста. Описывает различные тонкости, такие как: директивы компилятора, управление памятью, соглашения об использовании регистров, особенности различных платформ и т.д.

Free Pascal: User’s Guide [4]

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

Также описывается отладка, сообщения об ошибках и проч.

Run-Time Library (RTL): Reference Guide [9]

Справочное руководство по стандартным модулям. Включает документацию на 46 модулей, входящих в состав RTL.

Free Component Library (FCL): Reference Guide [10]

Справка по дополнительным модулям, также входящим в стандартный набор, но не входящих в состав RTL. Подробнее о том, какие это модули и с чем их едят, мы поговорим в отдельной статье.

FPDoc: Reference Manual [11]

Справочное руководство по утилите автодокументирования исходников FPDoc.

Тем же, кто предпочитает русский язык, следует в первую очередь обратиться на сайт FreePascal.ru [12], где наличествует ряд материалов (в основном статьи) и хороший живой форум [13]. Также могу порекомендовать книги для начинающих [14] и [15].

Лицензии

Компилятор как таковой распространяется на условиях GNU General Public License v2 [16], тогда как идущие в комплекте библиотеки — RTL и FCL — на условиях модифицированной GNU Lesser General Public License v2.1 [17]. Данная модификация явно разрешает статическую линковку с произвольным кодом [18, п 1.4]. Также входящие в комплект модули из каталогов packages могут использовать какие-то другие лицензии — тут лучше уточнять отдельно в каждом конкретном случае.

Схожую картину можно наблюдать и в проекте Lazarus — IDE и утилиты под GPLv2, основные библиотеки — modified LGPL, некоторые пакеты под своими лицензиями.

Итого: вы можете, используя Free Pascal и/или Lazarus, писать, как проприетарные, так и свободные (в том числе — копилефтные) программы.

Ссылки

  1. GNU General Public License, см. подраздел «Лицензии»

  2. Совместимость стандартных библиотек менее полная.