Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Поддерживаемые диалекты [ править ]

Первоначально Free Pascal принял де-факто стандартный диалект программистов Pascal - Borland Pascal, но позже принял Delphi. Начиная с версии 2.0, совместимость с Delphi постоянно совершенствуется или улучшается.

В проекте есть концепция режима компиляции , и разработчики дали понять, что они будут включать рабочие патчи для стандартизированных диалектов Американского национального института стандартов (ANSI) и Международной организации по стандартизации (ISO), чтобы создать режим, соответствующий стандартам.

Небольшие усилия были предприняты для поддержки синтаксиса Apple Pascal, чтобы упростить взаимодействие с классической Mac OS и macOS . Поскольку диалект Apple реализует некоторые стандартные функции Паскаля, которые не учитываются в Turbo Pascal и Delphi, Free Pascal немного более совместим с ISO, чем они.

Версия 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-битный код для расширителя GO32v1 DOS , который в то время использовался и разрабатывался проектом DJ GNU Programming Platform ( DJGPP ).

Первоначально компилятор представлял собой 16-битный исполняемый файл DOS, скомпилированный Turbo Pascal . Спустя два года компилятор смог скомпилировать себя и стал 32-битным исполняемым файлом.

Расширение [ править ]

Первоначальный 32-битный компилятор был опубликован в Интернете , и к проекту присоединились первые участники. Позже Майкл ван Каннейт создал порт Linux , за пять лет до того, как компилятор Borland Kylix стал доступен.

Порт DOS был адаптирован для использования в OS / 2 с использованием Eberhard Mattes eXtender (EMX), что сделало OS / 2 второй поддерживаемой целью компиляции. Даниэль Мантионе, как и Флориан Клэмпфл, первоначальный автор, также внес значительный вклад в это, предоставив исходный перенос библиотеки времени выполнения для OS / 2 и EMX. Компилятор постепенно улучшался, и версия для DOS перешла на расширитель GO32v2. Это привело к выпуску версии 0.99.5, которая использовалась гораздо более широко, чем предыдущие версии, и была последней версией, нацеленной только на совместимость с Turbo 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 года . [1] Библиотека поддержки 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]

Версия 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 года. Она содержит множество новых языковых функций: FPC New Features 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]

Цели [ править ]

Free Pascal также поддерживает генерацию байтового кода для виртуальной машины Java с версии 3.0.0 и ориентирован как на Oracle Java, так и на 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.

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

  • Бесплатная библиотека времени выполнения 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 . [6]
  • Double Commander - это мультиплатформенный двухпанельный файловый менеджер с открытым исходным кодом, вдохновленный Total Commander только для Microsoft Windows.
  • Free Pascal написан на Object Pascal и языке ассемблера и сам компилируется .
  • HNSKY , Hallo Northern Sky - бесплатная программа- планетарий для Windows и Linux. Начиная с версии 3.4.0, написан и скомпилирован с помощью Lazarus / FPC.
  • Lazarus : Аффилированный с Delphi программный пакет Free Pascal для быстрой разработки графических приложений.
  • MeKin2D : пакет для кинематики планарного рычага, кулачка и зубчатого механизма. [7]
  • Морфик : Morfik WebOS AppBuilder использует Free Pascal для создания двоичных файлов CGI.
  • MyNotex - это бесплатное программное обеспечение для создания заметок и диспетчера заметок для GNU / Linux.
  • Ранние версии компилятора Nim были разработаны в Free Pascal, прежде чем он стал самостоятельно размещаться в Nim. [8]
  • Peazip - это архиватор с открытым исходным кодом, созданный с помощью Lazarus / FPC.
  • TorChat , ранее написанный на Python, теперь переписывается на Free Pascal и Lazarus.

См. Также [ править ]

  • fpGUI Free Pascal GUI toolkit - кроссплатформенный и настраиваемый инструментарий, реализованный в Object Pascal

Ссылки [ править ]

  1. ^ bugs.freepascal.org
  2. ^ Пользовательские изменения 2.4.2
  3. ^ «Новые возможности FPC 3.2.0 - Free Pascal wiki» . wiki.freepascal.org . Проверено 20 июня 2020 .
  4. ^ freepascal wiki: FPC JVM
  5. ^ Пользовательский интерфейс
  6. ^ "Программы построения графиков D_2D и D_3D" . sourceforge.net . Проверено 23 марта 2018 .
  7. ^ "MeKin2D: Подпрограммы для кинематического моделирования механизма плоской связи" . sourceforge.net . Проверено 23 марта 2018 .
  8. ^ "Источник Нима Паскаля" .

Внешние ссылки [ править ]

Официальные сайты [ править ]

  • Официальный сайт FPC
  • Официальный сайт Lazarus RAD IDE

Общее введение [ править ]

  • Официальная документация
  • Введение в современный Object Pascal для программистов - Михалис Камбурелис

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

  • Разработка игр на Паскале
  • Журнал Pascal Gamer
  • FPC 4 GBA Programming Tutorial - подробное руководство по программированию игр на Game Boy Advance с Free Pascal