LINUX.ORG.RU

Состоялся выпуск FPC 3.2.2

 , ,


0

5

20 мая 2021 года состоялся выпуск FPC 3.2.2!

FPC – это свободный (GNU GPL 2) компилятор Паскаля.

Со времени выхода FPC 3.2 прошёл почти 1 год. (Версия 3.2.0 вышла 19 июня 2020.)

Новые возможности:

  1. Поддержка сборки программ под новые маки на ARM64 (macOS/AArch64).

  2. Сохранение ссылок на методы записей в переменные (совместимость с Delphi).

program test;

{$Mode Delphi}

type R = record
    var X: Integer;
    function Foo: Integer;
end;

function R.Foo: Integer;
begin
    result := X
end;

var    F: function : Integer of object;
    Z: R = (X:42);
begin
    // Сейчас компилируется
    // в 3.2.0 : 'Error: Incompatible types'
    F := Z.Foo;
    if F() <> 42 then
      Halt(1);
end.
  1. Юнит для MySQL теперь поддерживает MySQL 8.0.

  2. У класса TThread появилось поле TThread.NameThreadForDebugging (совместимость с Delphi).

>>> Список изменений, которые могут нарушить обратную совместимость

>>> Скачать

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

★★★★★

Проверено: xaizek ()
Последнее исправление: CYB3R (всего исправлений: 3)

Ответ на: комментарий от grem

Просто всякие петоны массой задавили, поэтому за ними деятельности в области других более нормальных языков не видно.

Reset ★★★★★
()

В погоне за зарабатыванием всех денег мира на 1С я как то забыл о своем любимом языке. Ребята, есть примеры серьезных проектов на фриПаскале? Стоит ли заниматься им сейчас?
И для заработка тоже ...

Влaдимир

anonymous
()
Ответ на: комментарий от anonymous

при том, что софт на том же delphi, да и на любом другом языке, не должен быть написан под твои хотелки

чушь

дурь

анонимус порвался, несите следующего

grem ★★★★★
()
Ответ на: комментарий от anonymous

FPC уже давно юникод поддерживает, а не только кириллицу.

saahriktu ★★★★★
()
Ответ на: комментарий от grem

Анонимус мудро глаголет. Нормальные люди не возят на велосипеде кирпич на стройку и не ездят в отпуск на карьерном самосвале - всему свой инструмент. А вот ты не зная к чему придраться возжелал чтобы на С++ вдруг писали для тебя CMS, с такими замашками тебе к Владимиру.

anonymous
()
Ответ на: комментарий от anonymous

Анонимус тупит, потому как на delphi сейчас в основном пишут интерфейсы для обращения к базам данных. Поэтому его ожидания произвольного софта на нём в открытом доступе примерно то же самое, что ожидание cms на c++.

Проблема в том, что Borland в своё время упустил момент, когда примерно в начале 2000-х ПК стали ширпотребом, а у C++ наконец-то к тому моменту уже появился стандарт и под разные его реализации можно стало писать хоть как-то совместимый между ними код. Упустил, потому что даже после продажи среды разработки embarcadero порог вхождения для использования delphi был всё ещё дорогим из-за высокой стоимости лицензии и отсутствии бесплатных вариантов, как в случае с той же visual studio от MS. Сейчас такие версии несколько лет как есть. Но массовость его использования это уже не вернёт, хоть в своей нише он вполне применяется.

Скорость разработки и компиляции на delphi очень высокая. По крайней мере раньше была, хз что стало после перехода на llvm - раньше после каждой строчки можно было запускать компиляцию и не ждать пока он что-то соберёт. Даже ожидание сборки hello world на c++ в середине 2000-х было мучительным если сравнивать.

grem ★★★★★
()
Ответ на: комментарий от anonymous

Ребята, есть примеры серьезных проектов на фриПаскале?

Hedge Wars же.

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

У налоговой софтина для заполнения 3-НДФЛ на delphi написана. Куда серьёзнее то? Хотя сейчас и на сайте можно заполнить наконец-то или загрузить на сайт файл созданный в софтине. Даже заявление с указанием номера счёта теперь отдельно не обязательно писать, а можно указать в определённом поле.

Но если нужно именно на lazarus/fpc, то есть http://www.cvrk.com/mk/

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от grem

Плохо то, что после выхода Delphi 7 Компания Borland вдруг метнулась в несовместимую Delphi.Net и этим растеряла большую часть разработчиков.

А далее пошёл общий разнос маховика:

В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор. 

Однако в ноябре того же года было принято решение отказаться от продажи IDE-бизнеса. Тем не менее разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland. 

В августе 2006 года Borland выпустил облегчённую версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++. 

В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 2)
Ответ на: комментарий от grem

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

anonymous
()

И все таки все обсуждение вокруг «модности», современности. Представим на минуту, что сейчас мы в параллельной реальности и тут поменяны местами С++ и Pascal. Во всем. Ну, вот. Что дальше? В такой реальности «модный и современный» язык Pascal. С++ закидывают ссаными тряпками. Спрашивают «а что на нём написано-то?»(имея в виду С++). Потом берут Lazarus или Delphi и пишут софт. Что мешает в нашей реальности сделать так, как в последнем предложении? Взять Pascal и писать программу?

anonymous
()
Ответ на: комментарий от anonymous

Что мешает в нашей реальности сделать так, как в последнем предложении? Взять Pascal и писать программу?

Регистронезависимость. Это ужас. Даже нельзя VAR object: Object; написать как в Обероне. В коде бардак с разным регистром имён. И ещё постоянные коллизии идентификаторов с ключевыми словами.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Дельфи опустим, а на freepascal там по ссылкам:
https://wiki.freepascal.org/Projects_using_Free_Pascal

С другой стороны, imho, на fpc пишут для себя, for fun, для души что ли. Нигде это не регистрируя.

novus
()
Последнее исправление: novus (всего исправлений: 4)
Ответ на: комментарий от X512

Регистронезависимость

В коде бардак с разным регистром имён

Взаимопротиворечивые параграфы. Независимость от регистра как раз и позволяет писать код с любимым форматом регистров букв.

постоянные коллизии идентификаторов с ключевыми словами

Это в любом языке может быть если их не знать и не помнить. Однако, в Паскале можно даже так делать:

program beginfhw;
var
    &for: String = 'Hello, world!';

procedure &begin;
begin
    writeln(&for);
end;

begin
        &begin;
end.

saahriktu ★★★★★
()
Ответ на: комментарий от anonymous

grem отдает дань идиотизму

Иначе бы это бы не я. Но только дань, без выкручиваний (в том числе тестикул). На той же java с одной стороны софта не видать на десктопе, а начнёшь ковырять - он есть. Хотя сходу мало что припоминается, тем более из популярного.

Да, Паскаль можно использовать и он используется как язык общего назначения. Это действительно так. Я ж не виноват, что на нём любят утилиты для обращения к базам данных писать. Даже на lazarus бесплатных несколько было.

grem ★★★★★
()
Ответ на: комментарий от iZEN

Да, попытка отхватить ещё кусочек рынка за счёт .net выглядела странной на фоне полного забивание на уже развитое решение. Те кто хотел .net уже и так писали на C#. Но, видимо, зрелище наступающей популярности Java и C# слишком удручало руководство Borland.

grem ★★★★★
()
Ответ на: комментарий от saahriktu

позволяет писать код с любимым форматом регистров букв.

То есть бардак. Не могу я написать VAR object: Object;, приходится выдумывать убогую венгерскую нотацию вроде VAR object: TObject.

&for

Костыль придумали? Молодцы. В Обероне таких проблем изначально нет потому что он регистрозависим и имена только из больших букв длиннее одного символа зарезервированы под ключевые слова.

X512 ★★★★★
()
Ответ на: комментарий от grem

Хотя сходу мало что припоминается, тем более из популярного.

Поставил ZCAD — не запускается, пишет, что ошибка:

> /usr/local/zcad/zcad
{N+}GetSysInfo
{N+}ProcessParamStr
{N-}end;{ProcessParamStr}
{N}ZCAD log v0.9.8.Unknown started
{N}Program compiled on Free Pascal Compiler
{N}Program compiled with {$DEFINE BREACKPOINTSONERRORS}
{N}DefaultSystemCodePage:=65001
{N}DefaultUnicodeCodePage:=0
{N}UTF8CompareLocale:=0
{N}SysParam.ProgramPath="/usr/"
{N}SysParam.TempPath="/tmp/"
{N}SysParam.UserPath="/usr/home/igor/.zcad/"
{N}SysParam.ScreenX=1920
{N}SysParam.ScreenY=1080
{N}SysParam.NoSplash=False
{N}SysParam.NoLoadLayout=False
{N}SysParam.UpdatePO=False
{N}SysParam.PreloadedFile=""
{N-}end;{GetSysInfo}
{I}[UnitsInitialization] Unit "uzeparser.pas" initialization
{I}GLU Version:="1.3"
{I}GLU Extensions:="GLU_EXT_nurbs_tessellator GLU_EXT_object_space_tess "
[FORMS.PP] ExceptionOccurred 
  Sender=EAccessViolation
  Exception=Access violation
  Stack trace:
  $000000000044C33C
  $00007FFFFFFFE193
  $00000000004B12C6
{I}[UnitsFinalization] Unit "uzegluinterface.pas" finalization
{I}[UnitsFinalization] Unit "uzccominterface.pas" finalization
{I}[UnitsFinalization] Unit "uzcmainwindow.pas" finalization
{I}[UnitsFinalization] Unit "uzcfprojecttree.pas" finalization
{I}[UnitsFinalization] Unit "uzccombase.pas" finalization
{I}[UnitsFinalization] Unit "uzccommand_selectframe.pas" finalization
{I}[UnitsFinalization] Unit "uzcctrlcontextmenu.pas" finalization
{I}[UnitsFinalization] Unit "uzgldrawergdi.pas" finalization
{I}[UnitsFinalization] Unit "uzcregenginefeatures.pas" finalization
{I}[UnitsFinalization] Unit "uzcregpaths.pas" finalization
{I}[UnitsFinalization] Unit "uzcregfontmanager.pas" finalization
{I}[UnitsFinalization] Unit "uzcreggeneralwiewarea.pas" finalization
{I}[UnitsFinalization] Unit "uzglbackendmanager.pas" finalization
{I}[UnitsFinalization] Unit "uzcoiregister.pas" finalization
{I}[UnitsFinalization] Unit "uzcimagesmanager.pas" finalization
{I}[UnitsFinalization] Unit "uzcoimultiobjects.pas" finalization
{I}[UnitsFinalization] Unit "uzcoimultipropertiesutil.pas" finalization
{I}[UnitsFinalization] Unit "uzehelpobj.pas" finalization
{I}[UnitsFinalization] Unit "uzctreenode.pas" finalization
{I}[UnitsFinalization] Unit "uzccommandsmanager.pas" finalization
{I}[UnitsFinalization] Unit "uzcinfoform.pas" finalization
{I}[UnitsFinalization] Unit "uzeffmanager.pas" finalization
{I}[UnitsFinalization] Unit "uzelongprocesssupport.pas" finalization
{I}[UnitsFinalization] Unit "uzeenttext.pas" finalization
{I}[UnitsFinalization] Unit "uzeentdevice.pas" finalization
{I}[UnitsFinalization] Unit "uzedimblocksregister.pas" finalization
{I}[UnitsFinalization] Unit "uzeutils.pas" finalization
{I}[UnitsFinalization] Unit "uzeblockdefsfactory.pas" finalization
{I}[UnitsFinalization] Unit "uzeblockdef.pas" finalization
{I}[UnitsFinalization] Unit "uzcguimanager.pas" finalization
{I}[UnitsFinalization] Unit "uzeentity.pas" finalization
{I}[UnitsFinalization] Unit "uzeentityfactory.pas" finalization
{I}[UnitsFinalization] Unit "uzgldrawergeneral.pas" finalization
{I}[UnitsFinalization] Unit "uzetextpreprocessor.pas" finalization
{I}[UnitsFinalization] Unit "uzeparser.pas" finalization
{I}[UnitsFinalization] Unit "uzefontmanager.pas" finalization
{I}[UnitsFinalization] Unit "uzgprimitivescreator.pas" finalization
{I}[UnitsFinalization] Unit "uzcregzscript.pas" finalization
{I}[UnitsFinalization] Unit "uzctranslations.pas" finalization
{I}[UnitsFinalization] Unit "varman.pas" finalization
{I}[UnitsFinalization] Unit "UUnitManager.pas" finalization
[FORMS.PP] ExceptionOccurred 
{I}[UnitsFinalization] Unit "uzcfsplash.pas" finalization
{I}[UnitsFinalization] Unit "uzclog.pas" finalization
iZEN ★★★★★
()
Ответ на: комментарий от grem

У налоговой софтина для заполнения 3-НДФЛ на delphi написана

Ого, не знал. Спасибо, друже! Буду изучать дальше.

Владимир

anonymous
()
Ответ на: комментарий от superuser

Да, состояние вечных переделок-недоделок затянулось((

zamtmn ★★
()
Ответ на: комментарий от grem

Слушайте, вот теперь я задумался, что выбрать для изучения - Lazarus или Delphi? Что перспективнее? И Delphi, я так понимаю, это немного другой язык …

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Lazarus конечно. Ибо Delphi в Linux только недавно научился (и научился ли?) и вообще он только для наркобаронов.

superuser ★★★★★
()

Pascal сильно непрактичный язык.Просто неудобно все это многословие набивать, типа Integer of object. Не знаю, у кого С вызывает трудности. Очень простой язык. С++ посложнее будет, но и на нем можно программировать, используя лишь поддиалект, а не всё сразу, если трудно поначалу, типа С с классами))). А уж со временем на более сложное переходить.

anonymous
()

Почему то Pascal любят в академических кругах всякие теоретики, а вот практики программирования Паскаль не любят за непрактичность и неудобство.

anonymous
()
Ответ на: комментарий от anonymous

Возможно потому, что в академических кругах принято сначала думать, а потом писать, а в погромистских кругах наоборот – сперва писать, а потом уже думать, и то если время останется.

anonymous
()
Ответ на: комментарий от anonymous

Просто неудобно все это многословие набивать.

Среда программирования разве не предлагает автодополнение по Ctrl+Space?

iZEN ★★★★★
()
Ответ на: комментарий от anonymous

Взять Pascal и писать программу?

Вот этим? Новые стили, компоненты и инструменты RAD Studio 10.4.2: https://www.youtube.com/watch?v=TNqbyhzVyrM

Проходили уже… 20 лет назад. Всё одно и то же, только цвета поменялись. А так — пишите хоть на чём, но будет ли интересно?

iZEN ★★★★★
()
Ответ на: комментарий от anonymous

Не надо клеветать на программистов! В программистских кругах думать вообще не принято! Как и в другом известном сообществе, разнорабочих, у программистов думающий человек вызывает глубокое подозрение, а долго думающий - панику. Да и когда думать? Дедлайн вечен.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

«Тролло» читать как «Трололо». Очепятка.

почему я не удивлен? типикэл сишник (с) 🤣🤣🤣

anonymous
()
Ответ на: комментарий от zamtmn

Состав установленного пакета ZCAD:

> pkg info -l zcad-gtk2
zcad-gtk2-0.9.8.5_1:
	/usr/local/share/doc/zcad/UserGuide.odt
	/usr/local/share/doc/zcad/UserGuide.pdf
	/usr/local/zcad/autosave/empty.txt
	/usr/local/zcad/components/32inch_2560x1440.xml
	/usr/local/zcad/components/_sys.dxf
	/usr/local/zcad/components/autorun.cmd
	/usr/local/zcad/components/defaultlayout.xml
	/usr/local/zcad/components/defaultlayoutbackup.xml
	/usr/local/zcad/components/empty.dxf
	/usr/local/zcad/components/empty_dxf.txt
	/usr/local/zcad/components/logo.png
	/usr/local/zcad/components/main.sf
	/usr/local/zcad/components/myfulscreen.xml
	/usr/local/zcad/components/oldpalette.rgb
	/usr/local/zcad/components/palette.rgb
	/usr/local/zcad/components/stage0.cmd
	/usr/local/zcad/components/suppressedshortcuts.xml
	/usr/local/zcad/components/testlayout.xml
	/usr/local/zcad/components/zcad.lin
	/usr/local/zcad/fonts/GEWIND.SHX
	/usr/local/zcad/fonts/OpenGostTypeA-Regular.ttf
	/usr/local/zcad/fonts/OpenGostTypeB-Regular.ttf
	/usr/local/zcad/fonts/_mipGost.shx
	/usr/local/zcad/fonts/ltypeshp.shx
	/usr/local/zcad/images/actions/about.png
	<...>
	/usr/local/zcad/images/actions/zoomwindow.png
	/usr/local/zcad/images/basket.png
	<...>
	/usr/local/zcad/images/unprint.png
	/usr/local/zcad/languages/anchordockstr.ru.po
	/usr/local/zcad/languages/lclstrconsts.ru.po
	/usr/local/zcad/languages/rtzcad.po
	/usr/local/zcad/languages/rtzcad.ru.po
	/usr/local/zcad/languages/zcad.po
	/usr/local/zcad/languages/zcad.ru.po
	/usr/local/zcad/log/empty.txt
	/usr/local/zcad/menu/BMP/copyclipbase.bmp
	/usr/local/zcad/menu/BMP/help.bmp
	/usr/local/zcad/menu/BMP/main.png
	/usr/local/zcad/menu/BMP/noimage.bmp
	/usr/local/zcad/menu/BMP/spec.bmp
	/usr/local/zcad/menu/actionscontent.xml
	/usr/local/zcad/menu/default.cla
	/usr/local/zcad/menu/menuscontent.xml
	/usr/local/zcad/menu/palettescontent.xml
	/usr/local/zcad/menu/toolbarscontent.xml
	/usr/local/zcad/plugins/empty.txt
	/usr/local/zcad/rtl/devicebase.pas
	/usr/local/zcad/rtl/dwg/DrawingDeviceBase.pas
	/usr/local/zcad/rtl/dwg/DrawingVars.pas
	/usr/local/zcad/rtl/objdefunits/objroot.pas
	/usr/local/zcad/rtl/savedvar.pas
	/usr/local/zcad/rtl/system.pas
	/usr/local/zcad/rtl/sysvar.pas
	/usr/local/zcad/sample/entities.dxf
	/usr/local/zcad/sample/enttree/nonregular.dwg
	/usr/local/zcad/sample/enttree/nonregular.dxf
	/usr/local/zcad/sample/enttree/nonregular2.dwg
	/usr/local/zcad/sample/enttree/nonregular2.dxf
	/usr/local/zcad/sample/enttree/regular.dwg
	/usr/local/zcad/sample/enttree/regular.dxf
	/usr/local/zcad/sample/test_dxf/1.csv
	/usr/local/zcad/sample/test_dxf/3d_mount.dxf
	/usr/local/zcad/sample/test_dxf/by_trace.csv
	/usr/local/zcad/sample/test_dxf/by_trace.dxf
	/usr/local/zcad/sample/test_dxf/by_trace.dxf.dbpas
	/usr/local/zcad/sample/test_dxf/currenttest.dxf
	/usr/local/zcad/sample/test_dxf/currenttest.dxf.dbpas
	/usr/local/zcad/sample/test_dxf/debug.dxf
	/usr/local/zcad/sample/test_dxf/dxf.ltp
	/usr/local/zcad/sample/test_dxf/em.dxf
	/usr/local/zcad/sample/test_dxf/em.dxf.dbpas
	/usr/local/zcad/sample/test_dxf/ops.dxf
	/usr/local/zcad/sample/test_dxf/ops.dxf.dbpas
	/usr/local/zcad/sample/test_dxf/ops_arial.dxf
	/usr/local/zcad/sample/test_dxf/ops_text.dxf
	/usr/local/zcad/sample/test_dxf/ops_times.dxf
	/usr/local/zcad/sample/test_dxf/teapot.dxf
	/usr/local/zcad/sample/test_dxf/test.dxf
	/usr/local/zcad/sample/test_dxf/truetype.dxf
	/usr/local/zcad/sample/zigzag.dxf
	/usr/local/zcad/template/default.dxf
	/usr/local/zcad/zcad

Где что посмотреть для исправления?

iZEN ★★★★★
()
Ответ на: комментарий от anonymous

Вообще, многословие Паскаля - это миф. Он не более многословный чем тот же Си.

Да, в одних местах букв побольше, зато в других местах меньше, поскольку он более высокоуровневый чем тот же Си. Поэтому в целом код получается короче. Вот одно и уравновешивает другое и в целом получается примерно одинаково в буквах.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Какой ещё «Integer of object»? Нет такого в Паскале.

Конечно есть.

только там пропущено

function [(параметры)] : Integer of object;
function : Integer of object;

Вот почитай: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Procedural_Types_(Delphi)

И точно также поддерживается и в

{$Mode objfpc}

вот например в этой теме 2017 года обсуждают:

https://forum.lazarus.freepascal.org/index.php?topic=38077.0

fsb4000 ★★★★★
() автор топика
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от fsb4000

Судя по контексту, это типы. Про тип «Integer of object» Гугл почти ничего не знает, это что-то редкое из Дельфи. Если оно и есть во Free Pascal'е, то для совместимости с Дельфи.

Вот «procedure of object» встречается чаще и лучше документировано.

A procedure of object is a procedure reference for procedures contained in class instances. When calling procedures that are members of a class, the implict Self reference must be passed with the other parameters. Using procedure of object tells the compiler to store the Self reference with the procedure address inside the procedure reference, so that when the procedure is called via the procedure reference, the Self reference will be automatically passed.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Гм. Ну, по аналогии можно тогда догадаться что такое Integer of object, да.

И это уже Object Pascal тогда, а не просто Паскаль.

saahriktu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.