stringtranslate.com

Бесплатный Паскаль

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), наиболее известным из которых является интегрированная среда разработки (IDE) Lazarus .

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

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

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

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

2.2. Серия выпусков x не претерпела существенных изменений в целях диалекта, выходящих за рамки примерно синтаксиса уровня Delphi 7, вместо этого стремясь к более тесной совместимости. Заметным исключением из этого правила было добавление поддержки дженериков в 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 без изменений.

История

Ранние года

Free Pascal был создан, когда компания 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. Началась стабилизация для небета- версии , и в июле 2000 года была выпущена версия 1.0. Версия 1.0. Серия x широко использовалась в бизнесе и образовании. Для версии 1.0. x , порт на процессор 68k был переделан, а компилятор создал стабильный код для нескольких 68k Unix-подобных и AmigaOS операционных систем.

Версия 2

Во время стабилизации того, что станет 1.0. x , а также при портировании на системы Motorola 68k стало ясно, что конструкция генератора кода во многих аспектах слишком ограничена. Основные проблемы заключались в том, что добавление процессоров означало переписывание генератора кода и что распределение регистров было основано на принципе всегда сохранения трех свободных регистров между строительными блоками, что было негибким и трудным в обслуживании.

По этим причинам 1.1. Серия x ответвилась от версии 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.х

В 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.х

Серия выпусков 2.4.x имела менее четкий набор целей, чем предыдущие выпуски. Переписывание системы юнитов снова было отложено, а ветка, которая стала 2.4, была создана для сохранения рискованных коммитов из 2.2 для ее стабилизации. В основном эти рискованные коммиты были связаны с улучшениями новых платформ, Mac PowerPC 64, Mac x86-64, iPhone, а также множеством исправлений для архитектур ARM и x86-64 в целом, а также DWARF.

Другие улучшения компилятора включали оптимизацию всей программы (WPO) и девиртуализацию , а также поддержку двоичного интерфейса встроенных приложений ARM (EABI).

Позже, в цикле 2.2, была добавлена ​​поддержка ресурсов, более подобная Delphi (основанная на специальных разделах в двоичном файле вместо констант Паскаля). Эта функция, остро необходимая Лазарусу, стала главной изюминкой ветки.

Другими более незначительными дополнениями были менеджер памяти , который улучшил производительность менеджера кучи в многопоточных средах, небольшие улучшения совместимости с Delphi, такие как OleVariant, и улучшения в делегировании интерфейса .

1 января 2010 г. был выпущен Free Pascal 2.4.0, а 13 ноября 2010 г. - версия 2.4.2 с исправлением ошибок с поддержкой for..inциклов, sealedклассов abstractи другими изменениями. [2]

Версия 2.6.х

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

Версия 3.0.х

Версия 3.0.0 была выпущена 25 ноября 2015 г. и стала первой крупной версией с 1 января 2012 г. В ней было представлено множество новых языковых функций. [3]

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

Версия 3.2.х

Следующий основной выпуск, версия 3.2.0, был опубликован 19 июня 2020 года. В нем представлено множество новых функций языка, включая общие процедуры, стандартные пространства имен, управляемые записи и расширенные функциональные возможности для динамических массивов, а также появление новых стандартных модулей. и поддержка дополнительных платформ. [4]

Версия 3.2.2 была выпущена 20 мая 2021 г. и поддерживает macOS на AArch64 и именование потоков. Кроме того, он включает исправления ошибок и небольшие обновления компилятора. [5]

Цели

Free Pascal также поддерживает генерацию байт-кода для виртуальной машины Java, начиная с версии 3.0.0, и ориентирован как на Java Oracle, так и на JVM Android от Google, [6] хотя синтаксис 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 (с использованием пользовательского нарисованного интерфейса [7] ). Начиная с FPC 2.6.2, OpenBSD и NetBSD поддерживаются на архитектурах IA32 и X86_64. Добавлена ​​новая встроенная цель для использования без ОС (в основном ARM Cortex M и MIPS). С помощью InstantFPC можно запускать программы Pascal, которые вовремя транслируются в виде сценариев Unix или серверной части CGI .

Ultibo core — это встроенная или «голая» среда разработки для Raspberry Pi. [8] Ultibo основан на Free Pascal и разработан на основе модифицированной версии Lazarus. IDE создана для ПК, но также портирована на Linux и Mac. Ultibo — это среда выполнения без ОС, поддерживающая большинство функций и позволяющая программисту полный контроль над оборудованием через модули RTL. Среда выполнения реализует многопоточную вытесняющую многозадачность. Программист может разместить потоки на конкретном процессоре или позволить среде выполнения автоматически распределять нагрузку, или использовать и то, и другое. Поддерживается большинство моделей Raspberry Pi, включая A, B, A+ и B+, а также Raspberry Pi 2B, 3B, 4B/400/CM4 и Zero. [9]

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

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

Lazarus IDE в Windows 10
Бесплатная среда разработки Pascal в Linux , показывающая «Hello, World!» программа на немецком языке

Связанные библиотеки

Помимо компилятора и IDE, Free Pascal предоставляет следующие библиотеки:

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

Смотрите также

Рекомендации

  1. ^ ошибки.freepascal.org
  2. ^ Изменения пользователя 2.4.2
  3. ^ «Новые функции FPC 3.0.0» . Бесплатная вики по Паскалю . Проверено 28 февраля 2021 г.
  4. ^ «Новые функции FPC 3.2.0 — Бесплатная вики-страница Pascal» . wiki.freepascal.org . Проверено 20 июня 2020 г.
  5. ^ «Новые функции FPC 3.2.2 — Бесплатная вики-страница Pascal» . wiki.freepascal.org . Проверено 30 декабря 2021 г.
  6. ^ вики freepascal: FPC JVM
  7. ^ Пользовательский нарисованный интерфейс
  8. ^ "Встроенная библиотека времени выполнения Ultibo" . Ultibo.org . Ультибо.
  9. ^ «Ultibo поддерживает платы Pi» . Ultibo.org.
  10. ^ "Ядро УЛИБО".
  11. ^ «Программы построения графиков D_2D и D_3D» . sourceforge.net . Проверено 23 марта 2018 г.
  12. ^ «MeKin2D: Подпрограммы для кинематического моделирования плоского рычажного механизма» . sourceforge.net . Проверено 23 марта 2018 г.
  13. ^ "Источник Нима Паскаля" . Гитхаб .
  14. ^ "Транзистоу".

Внешние ссылки

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

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

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