Введение

Свободный компилятор и IDE для Pascal и ObjectPascal

Free Pascal Compiler (FPC) — это компилятор для тесно связанных диалектов языков программирования Pascal и Object Pascal. Это свободное программное обеспечение, распространяемое по лицензии GNU General Public License с оговорками, позволяющими статическую компоновку с его библиотеками и пакетами для любых целей в сочетании с любой другой лицензией на программное обеспечение. Он поддерживает собственный диалект Object Pascal, а также диалекты нескольких других компиляторов семейства Pascal в определенной степени, включая Borland Pascal (известный как "Turbo Pascal" до версии 6 в 1990 году), Borland (позже Embarcadero) Delphi и некоторые старые компиляторы для Macintosh. Диалект выбирается для каждого модуля (единицы), и в одной программе можно использовать несколько диалектов. Он придерживается принципа "напиши один раз, компилируй везде" и доступен для множества архитектур процессоров и операционных систем (см. раздел "Целевые платформы"). Он поддерживает встроенный ассемблер и включает внутренний ассемблер, способный разбирать различные диалекты, такие как AT&T и Intel. Существуют отдельные проекты, облегчающие разработку кроссплатформенных приложений с графическим пользовательским интерфейсом (GUI), наиболее известным из которых является интегрированная среда разработки Lazarus (IDE).

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

Первоначально Free Pascal принял де-факто стандартный диалект программистов Pascal, Borland Pascal, но позже перешёл на Object Pascal от Delphi. Начиная с версии 2.0, совместимость с Delphi постоянно внедряется и улучшается. Проект использует концепцию режимов компиляции, и разработчики заявили о намерении включать рабочие исправления для стандартизированных диалектов Американского национального института стандартов (ANSI) и Международной организации по стандартизации (ISO) для создания режима, соответствующего стандартам. Были предприняты небольшие усилия по поддержке некоторых элементов синтаксиса Apple Pascal для упрощения взаимодействия с Classic Mac OS и macOS. Диалект Apple Pascal реализует некоторые стандартные возможности Pascal, которые отсутствуют в Turbo Pascal и Delphi. Серия версий 2.2.x не внесла существенных изменений в цели, касающиеся диалекта, за пределами синтаксиса уровня Delphi 7, а вместо этого стремилась к более тесной совместимости. Примечательным исключением стало добавление поддержки обобщённого программирования (generics) в Free Pascal в версии 2.2.0, за несколько лет до того, как эта возможность была реализована в Delphi. В 2011 году в разрабатываемую версию были добавлены некоторые функции, специфичные для Delphi 2006, и завершена часть работы над новыми функциями Delphi 2009 (в частности, добавление типа UnicodeString). В разрабатываемой версии также имеется расширение Objective Pascal для взаимодействия с Objective-C (Cocoa). Начиная с версии 2.7.1, Free Pascal реализовал базовый режим ISO Pascal, хотя многие элементы, такие как процедуры Get и Put, а также концепция буферной переменной файла для работы с файлами, всё ещё отсутствовали. Начиная с версии 3.0.0, режим ISO Pascal достаточно полон. Он позволяет компилировать компилятор P5 ISO Pascal со стандартного сайта standardpascal.org без каких-либо изменений.

Ранние годы

Свободный Паскаль был создан после того, как Borland заявила о прекращении разработки Borland Pascal для DOS с версией 7 и переходе на продукт, предназначенный исключительно для Windows, который впоследствии стал Delphi. Студент Флориан Пол Клампфл начал разработку собственного компилятора, написанного на диалекте Turbo Pascal, и создал 32-битный код для DOS-расширителя GO32v1, который использовался и разрабатывался проектом DJ's GNU Programming Platform (DJGPP) в то время. Изначально компилятор представлял собой 16-битный исполняемый файл DOS, скомпилированный Turbo Pascal. Спустя два года компилятор смог компилировать сам себя и стал 32-битным исполняемым файлом.

Расширение

Первоначальный 32-битный компилятор был опубликован в Интернете, и к проекту присоединились первые участники. Позже Майкл ван Каннейт создал порт для Linux, за пять лет до выхода компилятора Borland Kylix Pascal для Linux. Порт DOS был адаптирован для использования в OS/2 с помощью расширителя Eberhard Mattes eXtender (EMX), что сделало OS/2 второй поддерживаемой платформой для компиляции. Помимо Флориана Клампфля, оригинального автора, Даниэль Мантионе также внес значительный вклад, предоставив первоначальный порт библиотеки времени выполнения для OS/2 и EMX. Компилятор постепенно совершенствовался, а DOS-версия перешла на расширитель GO32v2. Это вылилось в выпуск 0.99.5, который использовался гораздо шире, чем предыдущие версии, и стал последним релизом, ориентированным исключительно на соответствие Borland Pascal; в последующих релизах был добавлен режим совместимости с Delphi. Этот релиз также был портирован на системы с процессорами семейства Motorola 68000 (m68k). С выпуском 0.99.8 была добавлена платформа Win32, и началась работа по включению некоторых функций Delphi. Началась стабилизация для выпуска не-бета версии, и версия 1.0 была выпущена в июле 2000 года. Серия 1.0.x получила широкое распространение в бизнесе и образовании. Для релизов 1.0.x порт на CPU 68k был переработан, и компилятор генерировал стабильный код для нескольких Unix-подобных и AmigaOS операционных систем на базе 68k.

Версия 2

Во время стабилизации версии 1.0.x, а также при портировании на системы Motorola 68k, стало очевидно, что конструкция генератора кода была слишком ограничена во многих аспектах. Основные проблемы заключались в том, что добавление поддержки новых процессоров требовало полной переработки генератора кода, а распределение регистров основывалось на принципе поддержания как минимум трех свободных регистров между базовыми блоками, что было негибким и сложным в поддержке. По этим причинам серия 1.1.x отделилась от основной ветви 1.0.x в декабре 1999 года. Первоначально изменения касались в основном очистки кода и переработки всех частей компилятора. Генератор кода и распределитель регистров также были переписаны. Была добавлена вся недостающая совместимость с Delphi. Работа над 1.1.x продолжалась медленно, но уверенно. В конце 2003 года стал доступен рабочий порт для PowerPC, за ним летом 2004 года последовал порт для ARM, осенью 2004 года – порт для SPARC, а в начале 2004 года – порт x86-64 AMD64, что сделало компилятор доступным для 64-битных платформ. В ноябре 2003 года была выпущена первая бета-версия ветви 1.1.x под номером 1.9.0. За ней последовали версии 1.9.2 и 1.9.4; последняя из них добавила поддержку OS X. Работа продолжилась с версиями 1.9.6 (январь 2005 года), 1.9.8 (конец февраля 2005 года), 2.0.0 (май 2005 года), 2.0.2 (декабрь 2005 года) и 2.0.4 (август 2006 года).

Версия 2.2.x

В 2006 году некоторые из основных запланированных работ для 2.2, такие как переработка системы единиц, все еще не начались, и было решено вместо этого заняться стабилизацией уже реализованных функций. Причиной изменения дорожной карты стали потребности проекта интегрированной среды разработки Lazarus, в частности, внутреннего компоновщика (линкера), поддержки Win64, Windows CE и OS X на x86, а также связанных функций, таких как DWARF. После бета-версий 2.1.2 и 2.1.4, в сентябре 2007 года была выпущена версия 2.2.0, за которой последовали версии 2.2.2 в августе 2008 года и 2.2.4 в марте 2009 года. Серия 2.2.x значительно улучшила поддержку интерфейсов ActiveX и Component Object Model (COM), а также технологий Object Linking and Embedding (OLE), хотя ошибки все еще обнаруживались. Делегирование интерфейсам с использованием ключевого слова `implements` было частично реализовано, но не завершено к 2011 году. Также была улучшена поддержка библиотек ActiveX. Важной особенностью стал внутренний компоновщик (линкер) для Win32, Win64 и Windows CE, который значительно сократил время компоновки и объем используемой памяти, ускорив цикл компиляции и компоновки в Lazarus. Повысилась эффективность интеллектуальной компоновки, или устранения неиспользуемого кода. Среди незначительных новых функций – улучшенная поддержка формата отладки DWARF (2/3) и оптимизации, такие как хвостовая рекурсия, исключение ненужных фреймов стека и оптимизация общих подвыражений на основе регистров (CSE). Первая реализация поддержки генерического программирования (generics) также стала доступна, но только в экспериментальном режиме.

Версия 2.4.x

Серия версий 2.4.x имела менее определенные цели, чем предыдущие выпуски. Переработка системы единиц была отложена повторно, и ветвь, ставшая 2.4, была создана для изоляции рискованных коммитов из 2.2 и стабилизации разработки. В основном эти рискованные коммиты представляли собой более сложные улучшения для новых платформ, таких как Mac PowerPC 64, Mac x86 64, iPhone, а также множество исправлений для архитектур ARM и x86 64 в целом, и для формата DWARF. Среди других улучшений компилятора были оптимизация всей программы (WPO), девиртуализация и поддержка встроенного бинарного интерфейса приложений ARM (EABI). Позже, в ходе цикла 2.2, была добавлена поддержка ресурсов, более напоминающая Delphi (основанная на специальных секциях в исполняемом файле вместо констант Pascal). Эта функция, крайне необходимая Lazarus, стала основной особенностью этой ветви. Другими, менее значительными дополнениями стали менеджер памяти, улучшающий производительность менеджера кучи в многопоточных средах, небольшие улучшения совместимости с Delphi, такие как OleVariant, и улучшения в делегировании интерфейсов. 1 января 2010 года был выпущен Free Pascal 2.4.0, а 13 ноября 2010 года – выпуск 2.4.2 с исправлениями ошибок и поддержкой циклов for…in, запечатанных и абстрактных классов, а также других изменений.

Версия 2.6.x

В январе 2012 года был выпущен Free Pascal 2.6. Эта первая версия серии 2.6 также поддерживала Objective Pascal для платформ OS X и iOS и включала множество небольших улучшений и исправлений ошибок. В феврале 2013 года был выпущен FPC 2.6.2. Он содержал сборки для NetBSD и OpenBSD впервые с версии 1.0.10, основанные на актуальных портах. В марте 2014 года был выпущен последний релиз серии 2.6 – 2.6.4, содержащий в основном обновления для работы с базами данных (fcl db).

Версия 3.0.x

Версия 3.0.0 была выпущена 25 ноября 2015 года и стала первым крупным релизом с 1 января 2012 года. Она представила множество новых возможностей языка. Версия 3.0.2 была выпущена 15 февраля 2017 года и включает исправления ошибок и незначительные обновления компилятора. Версия 3.0.4 была выпущена 28 ноября 2017 года. Она содержит множество улучшений языка по сравнению с предыдущими версиями, включая внутренний компоновщик для исполняемого и компонуемого формата (ELF), поддержку Arm AARCH64 для iOS и Linux, восстановленную платформу i8086, расширенные библиотеки и многое другое.

Версия 3.2.x

Следующий крупный релиз, версия 3.2.0, был опубликован 19 июня 2020 года. Он представил множество новых возможностей языка, включая обобщенные подпрограммы, стандартные пространства имен, управляемые записи и расширенную функциональность для динамических массивов, а также новые стандартные модули и поддержку дополнительных платформ. Версия 3.2.2 была выпущена 20 мая 2021 года и поддерживает macOS на AArch64 и именование потоков. Помимо этого, она включает исправления ошибок и незначительные обновления компилятора.

Цели

Процессорная архитектура Операционная система, устройство Версия 3.2.2 или 3.3.1 (Trunk) Версия 3.0.0 3.2.0 Версия 2.6.2 Версия 2.6.0 Версия 2.4.4 Версия 2.4.2 Версия 2.4.0 Версия 2.2.4 Версия 2.0. x Версия 1.0. x i386 DOS (GO32v2 extender) ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ FreeBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ OpenBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ NetBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ macOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ OS/2 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Windows ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Windows CE ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ BeOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Haiku ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ NetWare ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Solaris ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ iPhone Sim ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ QNX Neutrino ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Android ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AROS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ x86 64 FreeBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ OpenBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ NetBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ macOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Windows ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ iPhone Sim ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AROS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ DragonFly BSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Solaris ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Haiku ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Android ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ARM iOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Game Boy Advance ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Nintendo DS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Windows CE ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Android ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Embedded Rasp Pi ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AROS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AArch64 Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ iOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Android ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ macOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AVR Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ PowerPC Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ macOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Classic Mac OS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AmigaOS 4 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ MorphOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AIX ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Wii ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ PowerPC 64 bit Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ macOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AIX ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ SPARC Solaris ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ NetBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ SPARC64 Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ RISC V Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ RISC V64 Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Java virtual machine Java ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Android ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ MIPS (BE and LE) Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ 8086 (16 bit) DOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Win16 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ m68k Linux ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ NetBSD ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ AmigaOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Atari TOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ limited cross compiler only Palm OS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Z80 Embedded ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ZX Spectrum ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ MSX DOS ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ WebAssembly Web browsers ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Free Pascal 3.0.0 также поддерживает платформы ARMHF, такие как Raspberry Pi, включая ARMV6 EABIHF, работающий на Raspbian. Работа над 64-битным ARM привела к поддержке iOS в 3.0.0. Была добавлена нативная цель ARM Android, завершая ранее взломанную цель ARM Linux для генерации нативных библиотек ARM для Android. Это облегчает перенос приложений Lazarus на Android (с использованием пользовательского интерфейса). С FPC 2.6.2, OpenBSD и NetBSD поддерживаются на архитектурах IA32 и X86 64. Добавлена новая встроенная цель для использования без ОС (в основном ARM Cortex M и MIPS). С InstantFPC можно запускать программы Pascal, которые переводятся как раз вовремя, как Unix-скрипты или CGI-бэкенд. Ultibo core - это встроенная или bare metal среда разработки для Raspberry Pi. Ultibo основан на Free Pascal и разработан под модифицированной версией Lazarus. IDE основана на ПК, но была портирована на Linux и Mac. Ultibo - это среда выполнения без ОС и имеет поддержку большинства функций, позволяя программисту полностью контролировать аппаратное обеспечение через RTL-модули. Среда выполнения реализует многопоточное, вытесняющее многозадачность. Программист может поместить потоки на определенный процессор или позволить среде выполнения разделить нагрузку автоматически или их комбинацию. Поддерживаются большинство моделей Raspberry Pi, включая A, B, A+ и B+, а также Raspberry Pi 2B, 3B, 4B/400/CM4 и Zero.

Интегрированные среды разработки

Как и большинство современных компиляторов, Free Pascal можно использовать с интегрированной средой разработки (IDE). Помимо независимых IDE существуют также плагины для различных существующих IDE.

Lazarus – наиболее популярная IDE, используемая программистами Free Pascal. Она имеет сходный с Delphi IDE внешний вид и функциональность и может использоваться для создания консольных и графических приложений, Windows-сервисов, демонов и веб-приложений. Lazarus предоставляет кроссплатформенный фреймворк пользовательского интерфейса, называемый Lazarus Component Library (LCL). Графические приложения, созданные с помощью LCL, можно переносить на другие платформы путем перекомпиляции или кросс-компиляции. Free Pascal имеет собственную IDE в текстовом режиме, напоминающую IDE Turbo Pascal. Она создана с использованием фреймворка Free Vision (также поставляемого вместе с Free Pascal), являющегося клоном Turbo Vision. Помимо множества функций IDE Turbo Pascal, она поддерживает автодополнение кода и несколько форматов файлов справки (HTML, Microsoft Compiled HTML Help (CHM), Information Presentation Facility (IPF)). Вместо использования инструментов командной строки, IDE использует свой встроенный компилятор, основанный на том же исходном коде, что и компилятор и отладчик командной строки (с использованием libgdb или GDBMI) для обеспечения своей функциональности. Dev Pascal – это бесплатная IDE, предназначенная только для Windows, для Free Pascal и GNU Pascal, дальнейшая разработка которой прекратилась после версии FPC 2004 года и версии GPC 2005 года.

Примеры программного обеспечения, созданного с помощью Free Pascal

ULTIBO Core] – среда разработки, ориентированная на платформы Raspberry Pi без операционной системы (bare metal). Использует FreePascal/Lazarus и связывает приложение с окружением выполнения уникального ядра (unikernel). Beyond Compare – утилита для сравнения данных для Windows, OS X и Linux. Версии для Linux и OS X компилируются с помощью Lazarus/FPC. Cartes du Ciel – бесплатная программа-планетарий для Linux, OS X и Windows. Она отображает и маркирует большинство созвездий, планет и объектов, видимых в телескоп. Полностью написана на Lazarus/FPC и распространяется под лицензией GPL. Cheat Engine – проприетарный сканер памяти, шестнадцатеричный редактор и отладчик с открытым исходным кодом, распространяемый бесплатно. Может использоваться для читов в компьютерных играх. Начиная с версии 6.0, компилируется с помощью Lazarus/FPC. Программы для построения графиков данных D 2D и D 3D. Double Commander – кроссплатформенный файловый менеджер с открытым исходным кодом, вдохновленный Total Commander, доступным только для Microsoft Windows. Free Pascal написан на Object Pascal и ассемблере и компилируется самостоятельно. HNSKY, Hallo Northern Sky – бесплатная программа-планетарий для Windows и Linux. Начиная с версии 3.4.0, написана и компилируется с помощью Lazarus/FPC. Lazarus: программный пакет, аффилированный с Free Pascal, подобный Delphi, для быстрой разработки графических приложений. MeKin2D: пакет для кинематики плоских механизмов, кулачковых и зубчатых передач. Morfik: Morfik WebOS AppBuilder использует Free Pascal для создания CGI-бинарных файлов. MyNotex – бесплатный менеджер заметок и записей для Linux. Ранние версии компилятора Nim были разработаны на Free Pascal, прежде чем он стал самодостаточным. Peazip – архиватор с открытым исходным кодом, созданный с помощью Lazarus/FPC. TorChat, ранее написанный на Python, сейчас переписывается на Free Pascal и Lazarus. Tranzistow – 32/64-битный программный синтезатор для Windows и Linux, разработанный с использованием FreePascal/Lazarus.