Free Pascal

Материал из Циклопедии
Перейти к навигации Перейти к поиску
программное обеспечение
Free Pascal
Тип

компилятор

Автор

Free Pascal team

Разработчики

Флориан Клэмпфль и другие участники проекта

Написана на

Object Pascal

Операционная система

дистрибутивы GNU/Linux и BSD, Windows, macOS X, DOS, OS/2, AIX, Android, Haiku OS, Game Boy Advance, Nintendo DS/Wii, AROS, AmigaOS

Первый выпуск

23 декабря 1998

Репозиторий

https://gitlab.com/freepascal.org/fpc/source

Последняя версия

3.2.2 (20 мая 2021[1])

Тестовая версия

3.3.1

Лицензия

GNU GPL 2 (компилятор), GNU LGPL 2.1 (RTL)

Free Pascal — свободный компилятор языка Pascal, лицензированный под GNU GPL 2 (сам компилятор)[2] и GNU LGPL 2.1 (Run-Time Library)[3]. Поддерживает разные стандарты языка: Object Pascal, Delphi, Turbo Pascal, ISO Pascal и Objective-Pascal.

Free Pascal IDE[править]

Вместе с FPC поставляется Free Pascal IDE — среда интегрированной разработки, приближенная к подобной среде Turbo Pascal, написанная на Pascal с использованием Free Vision (свободной замены Turbo Vision от Borland).

Отличие реализаций[править]

Отличия от Turbo Pascal[4][править]

  • Запрет повторяющихся условий для case .. of
  • Порядок принимаемых элементов в функции в implementation и interface должен быть идентичным (обходится опцией компилятора -M)
  • Функции MEM, MEMW, MEML и PORT вынесены из модуля System
  • Запрет на использование переменных/процедур с названием Published, Protected, Public, Try, Finally, Except или Raise (обходится опцией компилятора -Mtp или использованием {$MODE TP} в коде программы/модуля)
  • Разрешено использовать словы Far и Near как название функций/процедур
  • Директива Interrupt работает только для DOS
  • Для ассемблера по умолчанию используется синтаксис AT&T
  • В качестве замены проприетарного Turbo Vision присутствует Free Vision (написан на базе исходных текстов TV из Borland C++[5])
  • Отсутствие модуля overlay
  • Бинарные модули несовместимы
  • Структура TextRec бинарно несовместима
  • Размер множеств по умолчанию составляет 4 байта
  • Нужно использование Reset для выполнения процедуры Rewrite над файлом, открытым только для чтения
  • Отсутствие параметров у деструктора (обходится опцией компилятора -So)
  • Запрет на наличие у объекта более 1 деструктрора (обходится опцией компилятора -So)

Отличия от Delphi[6][7][править]

  • Структура TextRec бинарно несовместима
  • Идентичность dynamic- и virtual- методов
  • Константы не обязательно передаются по ссылке
  • Отсутствие поддержки пакетов
  • Генерация консольных приложений по умолчанию (обходится использованием {$APPTYPE GUI} в коде программы/модуля)
  • Модуль Windows предоставляет лишь основные функции Win32 API
  • Отсутствие автоматического управления WideString'ами
  • Отсутствие нативной поддержки потоков (для UNIX-подобных ОС есть специальный модуль CThreads)
  • Проверка регистра файлов для регистрозависимых ФС
  • Расхождения в реализации формата RTTI
  • Отличие в размере памяти по умолчанию у множеств и перечислений
  • Отстутствие возможности локального объявления переменной для счётчика
  • Невозможность определить временную переменную внутри кода

Источники[править]

 
Диалекты

Clascal • Concurrent Pascal • Delphi • Pascal • Object Pascal • Oxygene • SuperPascal

Компиляторы
IDE

Delphi • Lazarus • MSEide+MSEgui • PascalABC.NET

Персоны

Никлаус Вирт • Ларри Теслер • Андерс Хейлсберг

Категория Паскаль