Свободный Паскаль

редактировать
Свободный Паскаль
FPC 3.1.1 command-line options.png FPC 3.1.1 в Windows
Разработчики) Флориан Клемпфл и волонтеры
Первый выпуск 1997 ; 24 года назад ( 1997)
Стабильный выпуск 3.2.2 / 20 мая 2021 г. ; 3 месяца назад ( 2021-05-20)
Предварительный выпуск 3.3.1
Репозиторий Отредактируйте это в Викиданных
Написано в Object Pascal
Операционная система Кросс-платформенный, встроенный
Тип Компилятор, Встроенная операционная система
Лицензия Стандартная общественная лицензия GNU для исполняемых файлов компилятора и служебных программ. Стандартная общественная лицензия GNU с исключением статической компоновки для среды выполнения, пакета, компонента и других библиотек, которые становятся частью исполняемых файлов, созданных с помощью компилятора.
Веб-сайт www.freepascal.org

Free Pascal Compiler ( FPC) - компилятор для тесно связанных диалектов языков программирования Pascal и Object Pascal. Это бесплатное программное обеспечение, выпущенное под Стандартной общественной лицензией GNU, с оговорками об исключениях, которые разрешают статическое связывание с его библиотеками времени выполнения и пакетами для любых целей в сочетании с любой другой лицензией на программное обеспечение.

Он поддерживает свой собственный диалект Object Pascal, а также в определенной степени диалекты нескольких других компиляторов семейства Pascal, включая диалекты Borland Pascal (до 1990 v6 назывался "Turbo Pascal"), Borland (позже Embarcadero) Delphi и некоторых других. исторические компиляторы Macintosh. Диалект выбирается для каждой единицы (модуля), и в одной программе может использоваться более одного диалекта.

Он следует философии однократной записи, компиляции в любом месте и доступен для многих архитектур ЦП и операционных систем (см. Цели). Он поддерживает встроенный язык ассемблера и включает внутренний ассемблер, способный анализировать несколько диалектов, таких как ATamp;T и стиль Intel.

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

СОДЕРЖАНИЕ
  • 1 Поддерживаемые диалекты
  • 2 История
    • 2.1 Ранние годы
    • 2.2 Расширение
    • 2.3 Версия 2
    • 2.4 Версия 2.2.x
    • 2.5 Версия 2.4.x
    • 2.6 Версия 2.6.x
    • 2.7 Версия 3.0.x
    • 2.8 Версия 3.2.x
  • 3 мишени
  • 4 Интегрированные среды разработки
  • 5 встроенных библиотек
  • 6 примеров программного обеспечения, созданного с помощью Free Pascal
  • 7 См. Также
  • 8 ссылки
  • 9 Внешние ссылки
    • 9.1 Официальные сайты
    • 9.2 Общее введение
    • 9.3 Сайты, специализирующиеся на разработке игр
Поддерживаемые диалекты

Первоначально 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.

Бесплатная IDE Pascal в Linux
  • 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 предоставляет следующие библиотеки:

Примеры программного обеспечения, созданного с помощью 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.
использованная литература
внешние ссылки

Официальные сайты

Общее введение

Сайты, специализирующиеся на разработке игр

Последняя правка сделана 2023-04-21 05:21:25
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте