Free Pascal - Free Pascal
FPC 3.1.1 в Windows | |
Разработчики) | Флориан Клемпфл & волонтеры |
---|---|
изначальный выпуск | 1997 |
Стабильный выпуск | 3.2.0 / 19 июня 2020 г. |
Предварительный выпуск | 3.3.1 |
Репозиторий | |
Написано в | Object Pascal |
Операционная система | Кроссплатформенность |
Тип | Компилятор |
Лицензия | Стандартная общественная лицензия GNU для исполняемых файлов компилятора и служебных программ. Стандартная общественная лицензия GNU с исключением статической компоновки для среды выполнения, пакета, компонента и других библиотек, которые становятся частью исполняемых файлов, созданных с помощью компилятора |
Интернет сайт | www |
Бесплатный компилятор Паскаля (FPC) это компилятор для тесно связанных диалектов языков программирования Паскаль и Object Pascal. это свободное программное обеспечение выпущен под Стандартная общественная лицензия GNU, с участием оговорки об исключениях которые позволяют статическое связывание с его библиотеками времени выполнения и пакетами для любых целей в сочетании с любой другой лицензией на программное обеспечение.
Он поддерживает свой собственный диалект Object Pascal, а также в определенной степени диалекты нескольких других компиляторов семейства Pascal, включая диалекты Турбо Паскаль, Delphi, и некоторые исторические Macintosh компиляторы. Диалект выбран на на единицу (модуль) основы, и в программе можно использовать более одного диалекта.
Это следует за написать один раз, компилировать где угодно философия и доступна для многих Архитектура ЦП и операционные системы (увидеть Цели ). Он поддерживает встроенный язык ассемблера и включает внутренний ассемблер, способный разбирать несколько диалектов, таких как AT&T и Intel стиль.
Существуют отдельные проекты для облегчения разработки кросс-платформенный графический интерфейс пользователя (GUI) приложения, наиболее известным из которых является Лазарь интегрированная среда разработки (IDE).
Поддерживаемые диалекты
Первоначально Free Pascal принял де-факто стандартный диалект программистов Паскаля - Borland Паскаль, но позже принял Delphi. Начиная с версии 2.0, совместимость с Delphi постоянно совершенствуется или улучшается.
В проекте есть режим компиляции концепции, и разработчики дали понять, что будут включать рабочие патчи для стандартизированных диалектов Американский национальный институт стандартов (ANSI) и Международная организация по стандартизации (ISO) для создания режима, соответствующего стандартам.
Были предприняты небольшие усилия для поддержки некоторых из яблоко Синтаксис Pascal для облегчения взаимодействия с Классическая Mac OS и macOS. Поскольку диалект Apple реализует некоторые стандартные функции Паскаля, которые не учитываются в Turbo Pascal и Delphi, Free Pascal немного более совместим с ISO, чем они.
Версия 2.2.Икс В серии выпусков диалектные задачи существенно не изменились за пределами синтаксиса уровня примерно Delphi 7, вместо этого они были направлены на более тесную совместимость. Заметным исключением из этого правила была добавленная поддержка дженерики в Free Pascal версии 2.2.0, за несколько лет до того, как они были поддержаны Delphi в каком-либо качестве.
По состоянию на 2011 г.[Обновить], несколько специфичных для Delphi 2006 функций были добавлены в ветвь разработки, а некоторые из начальных работ над функциями, новыми в Delphi 2009 (в первую очередь, добавление UnicodeString
тип) был завершен. В ветке разработки также есть Objective-Pascal расширение для Цель-C (Какао ) интерфейс.
Начиная с версии 2.7.1, Free Pascal реализовал базовый режим ISO Pascal, хотя многие вещи, такие как Получить
и Положил
концепция процедур и переменных файлового буфера для обработки файлов по-прежнему отсутствовала.
Начиная с версии 3.0.0, режим ISO Pascal является довольно полным, с одной остающейся ошибкой, которая с тех пор была исправлена в основной ветви. Он смог скомпилировать компилятор P5 ISO Pascal от standardpascal.org без изменений.
История
Ранние года
Free Pascal был создан, когда Borland пояснил, что Borland Pascal разработка для ДОС остановится на версии 7, ее заменит Windows -только продукт, который позже стал Delphi.
Студент Флориан Пол Клемпфл начал разработку собственного компилятора, написанного на диалекте Turbo Pascal, и произвел 32-битный код для GO32v1 Расширитель DOS, который был использован и разработан DJ's GNU Programming Platform (DJGPP ) проект в то время.
Первоначально компилятор был 16 бит Исполняемый файл DOS, скомпилированный Турбо Паскаль. Через два года компилятор смог компилировать себя и стал 32-битным исполняемым файлом.
Расширение
Первоначальный 32-битный компилятор был опубликован на Интернет, и к проекту присоединились первые участники. Позже Linux порт был создан Майклом ван Каннейтом, за пять лет до Borland Kylix компилятор стал доступен.
Порт DOS был адаптирован для использования в OS / 2 с использованием Эберхард Мэттес eXtender (EMX), что сделало OS / 2 второй поддерживаемой целью компиляции. Даниэль Мантионе, как и Флориан Клэмпфл, первоначальный автор, также внес значительный вклад в это, предоставив исходный перенос библиотеки времени выполнения для OS / 2 и EMX. Компилятор постепенно улучшался, и версия для DOS перешла на расширитель GO32v2. Это привело к выпуску версии 0.99.5, которая использовалась гораздо более широко, чем предыдущие версии, и была последней версией, нацеленной только на совместимость с Turbo Pascal; в более поздних выпусках добавлен режим совместимости с Delphi. Этот выпуск также был перенесен на системы, использующие Семейство Motorola 68000 (m68k) процессоры.
С выпуском 0.99.8 Win32 target был добавлен, и было начато включение некоторых функций Delphi. Стабилизация для не-бета-версия началось, и версия 1.0 была выпущена в июле 2000 года.Икс серия широко использовалась в бизнесе и образовании. Для версии 1.0.Икс выпусков, перенос на 68k CPU был переделан, а компилятор выдал стабильный код для нескольких 68k Unix-подобный и AmigaOS операционные системы.
Версия 2
Во время стабилизации то, что стало бы 1.0.Икс, а также при переносе на Motorola 68k, было ясно, что конструкция генератора кода слишком ограничена во многих аспектах. Основные проблемы заключались в том, что добавление процессоров означало переписывание генератора кода и что распределение регистров основывалось на принципе сохранения трех свободных регистров между строительными блоками, что было негибким и сложным в обслуживании.
По этим причинам версия 1.1.Икс серии разветвленный выкл от 1.0.Икс основная ветвь в декабре 1999 года. Сначала изменения были в основном очищены и переписаны с редизайном всех частей компилятора. Также были переписаны генератор кода и распределитель регистров. Все оставшиеся недостающие совместимости с Delphi были добавлены.
Работа над 1.1.x продолжалась медленно, но верно. В конце 2003 г. PowerPC порт стал доступен, а затем РУКА порт летом 2004 г. SPARC порт осенью 2004 г. и x86-64 -AMD64 в начале 2004 года, что сделало компилятор доступным для 64-битной платформы.
В ноябре 2003 г. бета выпуск 1.1.Икс ветка была упакована и пронумерована 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.Икс серия значительно улучшила поддержку ActiveX и Компонентная объектная модель (COM) интерфейс, и Связывание и внедрение объектов (OLE), хотя ошибки все еще обнаруживались. Делегирование интерфейсу с помощью орудия
ключевое слово было частично реализовано, но не было завершено по состоянию на март 2011 г.[Обновить].[1] Также была улучшена поддержка библиотеки ActiveX.
Другой важной особенностью был внутренний компоновщик для 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 с поддержкой для..в
петли, запечатанный
и Абстрактные
классы и другие изменения.[2]
Версия 2.6.x
В январе 2012 года был выпущен Free Pascal 2.6. Эта первая версия из серии выпусков 2.6 также поддерживала Объективный Паскаль в 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 г. Она содержит множество новых языковых функций: Новые возможности FPC 3.0
Версия 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]
Цели
Архитектура процессора | Операционная система, устройство | Версия 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 | ДОС (GO32v2 расширитель ) | да | да | да | да | да | да | да | да | да |
FreeBSD | да | да | да | да | да | да | да | да | да | |
OpenBSD | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да | |
NetBSD | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да | |
Linux | да | да | да | да | да | да | да | да | да | |
macOS | да | да | да | да | да | да | да | Нет | Нет | |
OS / 2 | да | да | да | да | да | да | да | да | да | |
Windows | да | да | да | да | да | да | да | да | да | |
Windows CE | да | да | да | да | да | да | Нет | Нет | Нет | |
BeOS | да | да | да | да | да | да | да | да | да | |
Хайку | да | да | да | да | да | да | Нет | Нет | Нет | |
NetWare | да | да | да | да | да | да | да | да | Нет | |
Солярис | да | да | да | да | да | Нет | Нет | Нет | да | |
iPhone Sim | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
QNX Neutrino | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | |
Android | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AROS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
x86-64 | FreeBSD | да | да | да | да | да | Нет | Нет | Нет | Нет |
OpenBSD | да | да | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | |
NetBSD | да | да | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | |
Linux | да | да | да | да | да | да | да | Неизвестно | Нет | |
macOS | да | да | да | да | да | да | Нет | Нет | Нет | |
Windows | да | да | да | да | да | да | Нет | Нет | Нет | |
iPhone Sim | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
AROS | да | да | да | да | да | Нет | Нет | Нет | Нет | |
DragonFly BSD | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Солярис | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Хайку | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
РУКА | iOS | да | да | да | да | да | да | Нет | Нет | Нет |
Game Boy Advance | да | да | да | да | да | да | Нет | Нет | Нет | |
Nintendo DS | да | да | да | да | да | да | Нет | Нет | Нет | |
Linux | да | да | да | да | да | да | да | Неизвестно | Нет | |
Windows CE | да | да | да | да | да | да | да | Неизвестно | Нет | |
Android | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Встроенный | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AROS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AArch64 | Linux | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
iOS | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Android | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
AVR | Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
PowerPC | Linux | да | да | да | да | да | да | да | да | Нет |
macOS | да | да | да | да | да | да | да | да | Нет | |
Классическая Mac OS | да | да | да | да | Нет | Нет | да | да | Нет | |
MorphOS | да | да | да | да | Неизвестно | Неизвестно | Неизвестно | да | Нет | |
AIX | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
Wii | да | да | да | да | Нет | Нет | Нет | Нет | Нет | |
PowerPC 64-разрядная | Linux | да | да | да | да | да | да | да | Нет | Нет |
macOS | да | да | да | да | да | да | Нет | Нет | Нет | |
AIX | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет | |
SPARC | Солярис | да | да | да | да | да | Нет | Нет | Нет | Нет |
NetBSD | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Встроенный | да | да | да | да | да | Нет | Нет | Нет | Нет | |
Linux | да | да | да | да | да | Нет | Нет | Нет | Нет | |
SPARC 64 | Linux | да | да | да | Нет | Нет | Нет | Нет | Нет | Нет |
RISC-V | Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
RISC-V 64 | Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Виртуальная машина Java | Ява | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Android | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
MIPS (BE и LE) | Linux | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
8086 (16 бит) | ДОС | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Win16 | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Встроенный | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
m68k | Linux | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да |
NetBSD | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | |
AmigaOS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | |
Atari TOS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | датолько ограниченный кросс-компилятор | |
Palm OS | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Неизвестно |
Free Pascal также поддерживает генерацию байтового кода для Виртуальная машина Java начиная с версии 3.0.0 и нацелен на Java Oracle и Android JVM от Google,[4] хотя синтаксис 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 (с использованием пользовательского интерфейса[5]) Полегче. Начиная с FPC 2.6.2, OpenBSD и NetBSD поддерживаются на архитектурах IA32 и X86_64. Новая цель встроенный был добавлен для использования без ОС (в основном ARM Cortex M и MIPS). С InstantFPC можно запускать программы на языке Pascal, которые вовремя переводятся, как сценарии Unix или CGI бэкэнд.
Интегрированные среды разработки
Как и большинство современных компиляторов, Free Pascal можно использовать с интегрированная среда разработки (IDE). Помимо независимых IDE, есть также плагины для различных существующих IDE.
- Free Pascal имеет собственную IDE с текстовым режимом, похожую на IDE Turbo Pascal. Он создан с использованием фреймворка Free Vision (также включенного в Free Pascal), клона Turbo Vision. В дополнение ко многим функциям Turbo Pascal IDE, она имеет автозавершение кода и поддержку нескольких форматов файлов справки (HTML, Скомпилированная справка Microsoft HTML (CHM), Информационная презентация (IPF). Вместо использования инструментов командной строки, IDE использует собственный встроенный компилятор, основанный на том же источнике, что и компилятор командной строки и отладчик (с использованием libgdb или GDBMI) для обеспечения своей функциональности.
- Лазарь - самая популярная IDE, используемая программистами Free Pascal. По внешнему виду и ощущениям она похожа на IDE Delphi, и ее можно использовать для создания консоль и графический Приложения, Службы Windows, демоны, и веб-приложения. Lazarus предоставляет кроссплатформенную структуру пользовательского интерфейса, называемую Библиотека компонентов Lazarus (LCL). Графические приложения, созданные с помощью LCL, могут быть перенесены на другую платформу через перекомпиляция или кросс-компиляция.
- Дев-Паскаль это бесплатная IDE только для Windows для Free Pascal и GNU Pascal, без дальнейшего развития после версии 2004 FPC и версии 2005 GPC.
Связанные библиотеки
Помимо компилятора и IDE Free Pascal предоставляет следующие библиотеки:
- Бесплатная библиотека времени выполнения Pascal (RTL): базовый низкоуровневый библиотека времени исполнения для общих задач программирования
- Бесплатная библиотека компонентов (FCL): Библиотека программных компонентов высокого уровня для общих задач программирования.
Примеры программного обеспечения, созданного с помощью Free Pascal
- Вне всякого сравнения это утилита сравнения данных для Windows, OS X и Linux. Версии для Linux и OS X скомпилированы с помощью Lazarus / FPC.
- Cartes du Ciel это бесплатный планетарий программа для Linux, OS X и Windows. Он отображает и маркирует большинство созвездий, планет и объектов, видимых в телескоп. Он был полностью написан на Lazarus / FPC и выпущен под GPL.
- Чит-двигатель - это сканер памяти с открытым исходным кодом, шестнадцатеричный редактор и отладчик. Его можно использовать для читерства в компьютерных играх. Начиная с версии 6.0 он компилируется с помощью Lazarus / FPC.
- D_2D и D_3D программы построения графиков данных.[6]
- Двойной командир - это многоплатформенный двухпанельный файловый менеджер с открытым исходным кодом, вдохновленный Total Commander только для Microsoft Windows.
- Free Pascal написан на Object Pascal и ассемблере, и самкомпилированный.
- HNSKY, Hallo Northern Sky - это бесплатный планетарий программа для Windows и Linux. Начиная с версии 3.4.0, написан и скомпилирован с помощью Lazarus / FPC.
- Лазарь: Аффилированный с Free Pascal Delphi -подобный программный пакет для быстрой разработки графических приложений.
- MeKin2D: комплект для кинематики планарного рычага, кулачка и зубчатого механизма.[7]
- Морфик: Morfik WebOS AppBuilder использует Free Pascal для создания двоичных файлов CGI.
- MyNotex это бесплатное программное обеспечение для создания заметок и менеджера заметок для GNU / Linux.
- Ранние версии Ним компилятор был разработан на Free Pascal, прежде чем он стал самостоятельный хостинг в Ним.[8]
- Peazip это архиватор с открытым исходным кодом, созданный с помощью Lazarus / FPC.
- TorChat, ранее написанный на Python, теперь переписывается на Free Pascal и Lazarus.
Смотрите также
- fpGUI Free Pascal GUI toolkit - кроссплатформенный и настраиваемый инструментарий, реализованный в Object Pascal
использованная литература
- ^ bugs.freepascal.org
- ^ Пользовательские изменения 2.4.2
- ^ «Новые возможности FPC 3.2.0 - Free Pascal wiki». wiki.freepascal.org. Получено 2020-06-20.
- ^ freepascal wiki: FPC JVM
- ^ Пользовательский интерфейс
- ^ "Программы построения графиков D_2D и D_3D". sourceforge.net. Получено 2018-03-23.
- ^ «MeKin2D: подпрограммы для кинематического моделирования планарного механизма связи». sourceforge.net. Получено 2018-03-23.
- ^ "Источник Нима Паскаля".
внешние ссылки
Официальные сайты
- Официальный веб-сайт FPC
- Официальный веб-сайт Lazarus RAD IDE
Общее введение
- Официальная документация
- Введение в современный Object Pascal для программистов - Михалис Камбурелис
Сайты, специализирующиеся на разработке игр
- Разработка игр на Паскале
- Журнал Pascal Gamer
- Руководство по программированию FPC 4 GBA - подробное руководство по программированию игр для Game Boy Advance с Free Pascal