Свободный Паскаль - Free Pascal
Разработчики) | Флориан Клемпфл и волонтеры |
---|---|
Первый выпуск | 1997 |
Стабильный выпуск | 3.2.2 / 20 мая 2021 г .
|
Предварительный выпуск | 3.3.1
|
Репозиторий | |
Написано в | Object Pascal |
Операционная система | Кросс-платформенный , встроенный |
Тип | Компилятор , Встроенная операционная система |
Лицензия | Стандартная общественная лицензия GNU для исполняемых файлов компилятора и служебных программ. Стандартная общественная лицензия GNU с исключением статической компоновки для среды выполнения, пакета, компонента и других библиотек, которые становятся частью исполняемых файлов, созданных с помощью компилятора. |
Веб-сайт | www |
Free Pascal Compiler ( FPC ) - компилятор для тесно связанных диалектов языков программирования Pascal и Object Pascal . Это бесплатное программное обеспечение, выпущенное под Стандартной общественной лицензией GNU , с оговорками об исключениях, которые разрешают статическое связывание с его библиотеками времени выполнения и пакетами для любых целей в сочетании с любой другой лицензией на программное обеспечение.
Он поддерживает свой собственный диалект Object Pascal, а также в определенной степени диалекты нескольких других компиляторов семейства Pascal, включая диалекты Borland Pascal (до 1990 v6 назывался "Turbo Pascal"), Borland (позже Embarcadero) Delphi и некоторых других. исторические компиляторы Macintosh . Диалект выбирается для каждой единицы (модуля) , и в одной программе может использоваться более одного диалекта.
Он следует философии однократной записи, компиляции в любом месте и доступен для многих архитектур ЦП и операционных систем (см. Цели ). Он поддерживает встроенный язык ассемблера и включает внутренний ассемблер, способный анализировать несколько диалектов, таких как AT&T и стиль Intel.
Существуют отдельные проекты, облегчающие разработку кроссплатформенных приложений с графическим пользовательским интерфейсом (GUI), наиболее известным из которых является интегрированная среда разработки (IDE) Lazarus .
Поддерживаемые диалекты
Первоначально Free Pascal принял де-факто стандартный диалект программистов Pascal, Borland Pascal, но позже принял Object Pascal от Delphi. Начиная с версии 2.0, совместимость с Delphi постоянно совершенствуется.
В проекте есть концепция режима компиляции , и разработчики дали понять, что они будут включать рабочие патчи для стандартизированных диалектов Американского национального института стандартов (ANSI) и Международной организации по стандартизации (ISO), чтобы создать режим, соответствующий стандартам.
Небольшие усилия были предприняты для поддержки синтаксиса Apple Pascal, чтобы упростить взаимодействие с классической Mac OS и macOS . Диалект Apple реализует некоторые стандартные функции Паскаля, которые не учитываются в Turbo Pascal и Delphi.
Версия 2.2. x не изменили существенно цели диалекта за пределами синтаксиса уровня примерно Delphi 7, вместо этого стремясь к большей совместимости. Заметным исключением из этого правила было добавление поддержки универсальных шаблонов в Free Pascal в версии 2.2.0, за несколько лет до того, как они были поддержаны в любом качестве в Delphi.
В 2011 году несколько специфичных для Delphi 2006 функций были добавлены в ветку разработки, и некоторые из начальных работ по новым функциям в Delphi 2009 (в первую очередь, добавление UnicodeString
типа) были завершены. В ветке разработки также есть расширение Objective-Pascal для взаимодействия с Objective-C ( Какао ).
В версии 2.7.1 Free Pascal реализован базовый режим ISO Pascal, хотя многие вещи , такие как Get
и Put
процедур, а также понятие переменной файлового буфера для обработки файлов по - прежнему отсутствует.
Начиная с версии 3.0.0, режим ISO Pascal является довольно полным. Он смог скомпилировать компилятор P5 ISO Pascal от standardpascal.org без изменений.
История
Ранние годы
Free Pascal был создан, когда Borland пояснил, что разработка Borland Pascal для DOS остановится на версии 7, которая будет заменена продуктом, предназначенным только для Windows , который позже стал Delphi.
Студент Флориан Пол Клэмпфл начал разработку собственного компилятора, написанного на диалекте Turbo Pascal, и произвел 32-битный код для расширителя DOS GO32v1 , который в то время использовался и разрабатывался проектом DJ 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. Началась стабилизация для небета- версии , и в июле 2000 года была выпущена версия 1.0. Серия x широко использовалась в бизнесе и образовании. Для версии 1.0. x , был переделан перенос на процессор 68k, а компилятор произвел стабильный код для нескольких 68k Unix-подобных и AmigaOS операционных систем.
Версия 2
Во время стабилизации то, что стало бы 1.0. x , а также при переносе на системы Motorola 68k было ясно, что конструкция генератора кода слишком ограничена во многих аспектах. Основные проблемы заключались в том, что добавление процессоров означало переписывание генератора кода и что распределение регистров основывалось на принципе сохранения трех свободных регистров между строительными блоками, что было негибким и трудным в обслуживании.
По этим причинам версия 1.1. х серии разветвленных от от 1,0. x в декабре 1999 года. Сначала изменения касались в основном чистки и переписывания-переделки всех частей компилятора. Генератор кода и распределитель регистров также были переписаны. Все оставшиеся недостающие совместимости с Delphi были добавлены.
Работа над 1.1.x продолжалась медленно, но неуклонно. В конце 2003 года стал доступен рабочий порт PowerPC , за ним последовал порт ARM летом 2004 года, порт SPARC осенью 2004 года и порт x86-64 -AMD64 в начале 2004 года, что сделало компилятор доступным для 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 и модели компонентных объектов (COM) , а также связывания и встраивания объектов (OLE), хотя ошибки все еще обнаруживались. Делегирование в интерфейс с использованием ключевого слова было частично реализовано, но не было завершено по состоянию на март 2011 года. Библиотечная поддержка ActiveX также была улучшена.
implements
Другой важной особенностью был внутренний компоновщик для Win32, Win64 и Windows CE, который значительно улучшил время компоновки и использование памяти, а также значительно ускорил цикл компиляция-ссылка-запуск в Lazarus. Также была повышена эффективность интеллектуального связывания или удаления мертвого кода .
Незначительные новые функции включали улучшенную поддержку формата отладки DWARF (2/3) и оптимизацию, такую как хвостовая рекурсия , пропуск ненужных кадров стека и оптимизация исключения общих подвыражений (CSE) на основе регистров . Также стала доступна первая реализация поддержки общего программирования (дженериков), но только экспериментально.
Версия 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 (на основе специальных разделов в двоичном файле вместо констант Паскаля). Эта функция, остро необходимая Lazarus, стала главной изюминкой ветки.
Другими более незначительными дополнениями были диспетчер памяти, который улучшил производительность диспетчера кучи в многопоточных средах, небольшие улучшения совместимости с Delphi, такие как OleVariant
улучшения в делегировании интерфейса .
С 1 января 2010 года, Free Pascal 2.4.0 был выпущен, а затем 13 ноября 2010 года, путем выпуска ошибка исправления 2.4.2 с поддержкой for..in
петель, sealed
и abstract
классов, а также другие изменения.
Версия 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.0.0 - 3.3.1 (Магистраль) | Версия 2.6.2 | Версия 2.6.0 | Версия 2.4.4 | Версия 2.4.2 | Версия 2.4.0 | Версия 2.2.4 | Версия 2.0. Икс | Версия 1.0. Икс |
---|---|---|---|---|---|---|---|---|---|---|
i386 | DOS ( расширитель GO32v2 ) | да | да | да | да | да | да | да | да | да |
FreeBSD | да | да | да | да | да | да | да | да | да | |
OpenBSD | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да | |
NetBSD | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да | |
Linux | да | да | да | да | да | да | да | да | да | |
macOS | да | да | да | да | да | да | да | Нет | Нет | |
OS / 2 | да | да | да | да | да | да | да | да | да | |
Окна | да | да | да | да | да | да | да | да | да | |
Windows CE | да | да | да | да | да | да | Нет | Нет | Нет | |
BeOS | да | да | да | да | да | да | да | да | да | |
Хайку | да | да | да | да | да | да | Нет | Нет | Нет | |
NetWare | да | да | да | да | да | да | да | да | Нет | |
Солярис | да | да | да | да | да | Нет | Нет | Нет | да | |
iPhone Sim | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
QNX Neutrino | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | |
Android | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AROS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
x86-64 | FreeBSD | да | да | да | да | да | Нет | Нет | Нет | Нет |
OpenBSD | да | да | Неизвестный | Неизвестный | Неизвестный | Неизвестный | Неизвестный | Неизвестный | Неизвестный | |
NetBSD | да | да | Неизвестный | Неизвестный | Неизвестный | Неизвестный | Неизвестный | Неизвестный | Неизвестный | |
Linux | да | да | да | да | да | да | да | Неизвестный | Нет | |
macOS | да | да | да | да | да | да | Нет | Нет | Нет | |
Окна | да | да | да | да | да | да | Нет | Нет | Нет | |
iPhone Sim | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
AROS | да | да | да | да | да | Нет | Нет | Нет | Нет | |
DragonFly BSD | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Солярис | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Хайку | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
РУКА | iOS | да | да | да | да | да | да | Нет | Нет | Нет |
Game Boy Advance | да | да | да | да | да | да | Нет | Нет | Нет | |
Nintendo DS | да | да | да | да | да | да | Нет | Нет | Нет | |
Linux | да | да | да | да | да | да | да | Неизвестный | Нет | |
Windows CE | да | да | да | да | да | да | да | Неизвестный | Нет | |
Android | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Встроенный | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Встроенный Rasp-Pi | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AROS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AArch64 | Linux | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
iOS | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Android | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AVR | Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
PowerPC | Linux | да | да | да | да | да | да | да | да | Нет |
macOS | да | да | да | да | да | да | да | да | Нет | |
Классическая Mac OS | да | да | да | да | Нет | Нет | да | да | Нет | |
AmigaOS 4 | да | да | да | да | Неизвестный | Неизвестный | Неизвестный | да | Нет | |
MorphOS | да | да | да | да | Неизвестный | Неизвестный | Неизвестный | да | Нет | |
AIX | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
Wii | да | да | да | да | Нет | Нет | Нет | Нет | Нет | |
PowerPC 64-разрядная | Linux | да | да | да | да | да | да | да | Нет | Нет |
macOS | да | да | да | да | да | да | Нет | Нет | Нет | |
AIX | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
SPARC | Солярис | да | да | да | да | да | Нет | Нет | Нет | Нет |
NetBSD | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Встроенный | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Linux | да | да | да | да | да | Нет | Нет | Нет | Нет | |
SPARC64 | Linux | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет |
RISC-V | Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
RISC-V64 | Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Виртуальная машина Java | Джава | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Android | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
MIPS (BE и LE) | Linux | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
8086 (16 бит) | ДОС | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Win16 | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
m68k | Linux | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да |
NetBSD | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | |
AmigaOS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | |
Atari TOS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да только ограниченный кросс-компилятор | |
Palm OS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Неизвестный |
Free Pascal также поддерживает генерацию байтового кода для виртуальной машины Java с версии 3.0.0 и ориентирован как на Oracle Java, так и на JVM Android от Google, хотя синтаксис Object Pascal не поддерживается полностью. 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 - это встроенная или «голая» среда разработки для 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.
- Free Pascal имеет собственную IDE с текстовым режимом, напоминающую IDE Turbo Pascal. Он создан с использованием фреймворка Free Vision (также включенного в Free Pascal), клона Turbo Vision. В дополнение ко многим функциям Turbo Pascal IDE, в ней есть автозавершение кода и поддержка нескольких форматов файлов справки (HTML, Microsoft Compiled HTML Help (CHM), Information Presentation Facility (IPF). Вместо использования инструментов командной строки в IDE используется собственный встроенный компилятор, основанный на том же источнике, что и компилятор командной строки и отладчик (с использованием libgdb или GDBMI), чтобы обеспечить его функциональность.
- Lazarus - самая популярная IDE, используемая программистами Free Pascal. Он выглядит и ощущается так же, как IDE Delphi, и может использоваться для создания консольных и графических приложений, служб Windows , демонов и веб-приложений . Lazarus предоставляет кросс-платформенный фреймворк пользовательского интерфейса, который называется Lazarus Component Library (LCL). Графические приложения, созданные с помощью LCL, можно перенести на другую платформу путем перекомпиляции или кросс-компиляции .
- Dev-Pascal - это бесплатная IDE только для Windows для Free Pascal и GNU Pascal , без дальнейшего развития после версии 2004 FPC и версии 2005 GPC.
Связанные библиотеки
Помимо компилятора и IDE, Free Pascal предоставляет следующие библиотеки:
- Бесплатная библиотека времени выполнения Pascal (RTL): базовая библиотека времени выполнения низкого уровня для общих задач программирования
- Бесплатная библиотека компонентов (FCL): библиотека компонентов программного обеспечения высокого уровня для общих задач программирования.
Примеры программного обеспечения, созданного с помощью Free Pascal
- 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 WebOS AppBuilder использует Free Pascal для создания двоичных файлов CGI.
- MyNotex - это бесплатное программное обеспечение для создания заметок и диспетчера заметок для Linux.
- Ранние версии компилятора Nim были разработаны в Free Pascal, прежде чем он стал самостоятельно размещаться в Nim.
- Peazip - это архиватор с открытым исходным кодом, созданный с помощью Lazarus / FPC.
- TorChat , ранее написанный на Python, теперь переписывается на Free Pascal и Lazarus.
Смотрите также
- fpGUI Free Pascal GUI toolkit - кроссплатформенный и настраиваемый инструментарий, реализованный в Object Pascal.
использованная литература
внешние ссылки
Официальные сайты
- Официальный сайт FPC
- Официальный сайт Lazarus RAD IDE
Общее введение
- Официальная документация
- Введение в современный Object Pascal для программистов - Михалис Камбурелис
Сайты, специализирующиеся на разработке игр
- Разработка игр на Паскале
- Журнал Pascal Gamer
- FPC 4 GBA Programming Tutorial - подробное руководство по программированию игр на Game Boy Advance с Free Pascal.