LINUX.ORG.RU

fpc/pascal текущее состояние версий

 , , , ,


0

3

добрый день, товарищи-колдуны!

на текущий день состояние с версиями - не совсем понятно (мне).
судя по ссылкам - работа идет:
github
gilab

на данный момент:

3.2.2 release
3.2.4 rc1/rc2
3.2.3
3.3.1

внимание вопросы:
вопрос1: кто в теме, пояснить что к чему?
вопрос2: кто-что использует, текущие/для разработки fpc/глюки-особенности итд
спасибо

p.s.
понятное дело, что текущая рабочая версия fpc-3.2.2 (по рекомендация офсайта).
естественно, тема связана непосредственно с Lazarus-IDE
хотелось-бы услышать других «колдунов» по поводу «темы топика».

★★★★★

Последнее исправление: sunjob (всего исправлений: 5)

Не всё ли равно? Поддержу вышесказанное - бери ту что есть в репе дистра. Незачем в это вникать, язык от версии компилятора не зависит кроме может быть незначительных мелочей.

firkax ★★★★★
()

Новые версии паскаля не нужны. Компилятора достаточно для поддержки старого кода, а новый всё равно надо вайбкодить на расте.

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

Как бы можно только плюсовать оратора. Проект находится в стабильном (очень) состоянии, так что нет смысла идти выше repository_build, пока не столкнешься с bleeding-edge bugs.

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

что есть в репозитории дистрибутива

Если про лазарус (тег), то каждый раз, когда я брал, что есть в репозитории дистрибутива, это было неюзабельно.
Нормально работали только сборки с сайта lazarus.

fpc-3.2.2,
lazarus-4.8

Без замечаний.

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

Кстати, у них там с пятой версии намечается глюкодром с gtk3 как дефолтный widgetset...

novus ★★
()

c fpc всё норм, а плохо то, что для визуальных компонент lazarus их поведение сильно отличается для gtk и qt сборок.
Некоторые функции вообще не реализованы. Например, для gtk2 сборки не сможешь задать картинку как фон listview, или размер заголовков вкладок PageControl: стандартное свойство TabWidth игнорируется.
Иногда хочется бросить эти компоненты и рисовать всё самому.
Если программировать что-то содержательное, fpc - мощное средство.
Если программировать что-то графическое стандартными компонентами, то это работает, пока ты не захочешь что-то сильно кастомное, выходящее за дефолт.

novus ★★
()
Последнее исправление: novus (всего исправлений: 2)

Впрочем, если дистр alt, то там lazarus научились готовить.

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

ALT Linux, p11.

$ rpm -q lazarus
lazarus-4.8-alt1.x86_64
$

давно перешли на 3.2.3?

* Sat Dec 14 2024 Artem Kurashov <saahriktu@altlinux.org> 3:3.2.3-alt1
- New version.
- Add patches for documentation.

Это я тогда в Сизиф отправил. Потом оно оттуда дошло до p11.

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

New version

хорошо, а кроме как «новая версия» - что можешь от себя добавить?
- сам по себе fpc - что добавлено из «запланированного», какие баги порубали?
- какие глюки Lazarus-IDE победили?
- лазарь, стыковка с компонентами (были проблемы с родным, по моему, что-то из web-xxx)
- в Lazarus-IDE не работал пункт "jump directly to method body". как с этим? (у меня не работает) судя по выкусам из инета - проблема в «старом/релизе» fpc-3.2.2. (может гонят?! :о)
- не правильно «подсвечивалась» строка break point (только красный цвет, настройки игнорировались)
- да и вообще, много чего, и по мелочи и так...(всего не упомнишь)
- ну и так, от себя лично?!

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

Я за всем этим не слежу. И GUI софт на Lazarus'е я не пишу.

Я писал простой консольный софт на Free Pascal.

ЗЫ. Из того, что заметил 2 года назад, - пофиксили приведение времени из UTC к локальному. Был такой баг, да.

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

там нет путаницы с версиями

тут тоже не особо напутали... есть некоторые «особенности», как и везде, где софт пилят!
я попросил тех кто в теме - прояснить/уточнить ситуацию.
если вы из оных, то, пожалуйста, велкам!
если нет - то совет мимо «корзины» :о)
спасибо конечно, но нет!

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

Тяжел понять автора, скажу так - берешь последнюю сборку с оф. сайта. Стабильней ничего не будет. К компилятору вопросов нет, с недавних пор нативно компилит под m1.

Вопросы возникают к графической части при разработке чего-то сложнее, чем калькулятор. Из виджетсетов наиболее стабилен gtk2. Но его уже выпиливают из дистров.

Qt, gtk3 и cocoa в глюках с ног до головы, что-то лечим сами, что-то подсматриваем у того же коммандера или куды, что-то переписываем , от чего-то отказываемся. Переход на gtk3 представляем себе с трудом. Вот так и живем.

man-from-36 ★
()
Ответ на: комментарий от greenman
TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    OpenPictureDialog1: TOpenPictureDialog;
    PrintDialog1: TPrintDialog;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormResize(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseWheelDown(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    procedure Image1MouseWheelUp(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private

Мощно!

man-from-36 ★
()
Последнее исправление: man-from-36 (всего исправлений: 2)

вопрос1: кто в теме, пояснить что к чему?

3.3 - в разработке

3.2.2 - последний релиз

3.2.3 - development версия перед релизом 3.2.4

У меня Alt, в нём 3.2.3, в принципе нормально работает, единственное что не работает TEventObject, это события из модуля SyncObjs. Возможно что в Windows работает, но не проверял.

вопрос2: кто-что использует, текущие/для разработки fpc/глюки-особенности

Под Windows я использовал Lazarus 4.8 скаченную сборку с сайта, там встроенный FPC 3.2.2, работает нормально.

Под Linux - на GTK 2 и Qt 5, обе сборки есть в ALT Linux, работают нормально. Надо иметь ввиду, что компоненты LCL используют native widgetset, поэтому в Windows GDI, Gtk 2, Qt может выглядеть по разному.

А вообще, ошибок в Lazarus море, но в целом всё более-менее работает. Единственное что не нравится - ломается совместимость в каждой новой версии, но это ж специфика продукта такая - RAD

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

Вы имеете ввиду ALT Linux? Это же удобно, Lazarus-GTK2 и Lazarus-Qt5 можно установить одновременно, и компилировать две версии своей программы - для GTK2 и Qt5. Элементарно можно скомпилировать самому Lazarus для GTK3 и Qt6

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

Они распыляют свои ресурсы. Всё таки, они не корпа, которая может давать своим сотрудникам бюджеты ради экспериментальных проектов на выброс. Было бы логичнее, если бы они вылизали один гуишный бэкенд, тем более, что, как я понял, даже в самом GTK происходит ломка обратной совместимости на уровне исходников, т.е. гуишная тема в Линукс - это априори бездонный колодец. И зачем же туда нырять со своим дырявым аквалангом?

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

И, скорее всего, именно из-за переусложненного вороха зависимостей, его приличные люди и не хотят собирать. Так, в убунте 24.04 версия Лазарус-ИДЕ 3.0, хотя уже два месяца до релиза убунты была доступна версия 3.2

seiken ★★★★★
()

На FreeBSD актуальные порты:

> pkg info -x fpc lazarus
fpc-3.2.3_2
fpc-source-3.2.3_2
lazarus-gtk2-4.8
iZEN ★★★★★
()
Ответ на: комментарий от seiken

Они распыляют свои ресурсы

В проекте Lazarus весь LCL (то есть GUI) тащит всего один человек - Желян Рикало. Колоссальная нагрузка на него, он делает бэкенд для всех widgetset’ов - и для Cocoa, Windows GDI, Qt 5 и 6, GTK 2 и 3.

Поэтому в GTK 3 и Qt 6 и Cocoa ещё попадаются ошибки, но остальное неплохо отлажено.

Но можно и не пользоваться LCL, а альтернативной GUI библиотекой https://github.com/ACTom/TyControls/blob/main/README.en.md

Она не использует native widgetset, а отрисовывает сама все управляющие элеиенты, поэтому во всех системах программы выглядят одинаково.

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

Интересно. Я сейчас как раз морду для кое какой проги хочу смастерить. Для винды и Линукса. Осталось выяснить, есть ли лазарусе кроссплатформенный TCP сокеты…

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

Конечно. Я в Lazarus’е не смотрел, там класс TSocket https://www.kansoftware.ru/?tid=8586

может ещё и другие компонеты есть, вижу пакет weblaz.

Во Free Pascal’е есть модуль Sockets, там функции

Accept
Bind
CloseSocket
fpaccept
fpbind
fpconnect
fpgetpeername
fpgetsockname
fpgetsockopt
fplisten
fprecv
fprecvfrom
...
Program Client;

{
  Program to test Sockets unit by Michael van Canneyt and Peter Vreman
  Client Version, First Run sock_svr to let it create a socket and then
  sock_cli to connect to that socket
}

uses Sockets;

procedure PError(const S : string);
begin
  writeln(S,SocketError);
  halt(100);
end;


Var
  SAddr    : TInetSockAddr;
  Buffer   : string [255];
  S        : Longint;
  Sin,Sout : Text;
  i        : integer;

begin
  S:=fpSocket (AF_INET,SOCK_STREAM,0);
  if s=-1 then
   Perror('Client : Socket : ');
  SAddr.sin_family:=AF_INET;
  { port 50000 in network order }
  SAddr.sin_port:=htons(5000);
  { localhost : 127.0.0.1 in network order }
  SAddr.sin_addr.s_addr:=HostToNet((127 shl 24) or 1);
  if not Connect (S,SAddr,Sin,Sout) then
   PError('Client : Connect : ');
  Reset(Sin);
  ReWrite(Sout);
  Buffer:='This is a textstring sent by the Client.';
  for i:=1 to 10 do
    Writeln(Sout,Buffer);
  Flush(Sout);
  Readln(SIn,Buffer);
  WriteLn(Buffer);
  Close(sout);
end.

Example

program pfinger;

uses sockets,errors;

Var
  Addr : TInetSockAddr;
  S : Longint;
  Sin,Sout : Text;
  Line : string;

begin
  Addr.sin_family:=AF_INET;
  { port 79 in network order }
  Addr.sin_port:=79 shl 8;
  { localhost : 127.0.0.1 in network order }
  Addr.sin_addr.s_addr:=((1 shl 24) or 127);
  S:=fpSocket(AF_INET,SOCK_STREAM,0);
  If Not Connect (S,ADDR,SIN,SOUT) Then
    begin
    Writeln ('Couldn''t connect to localhost');
    Writeln ('Socket error : ',strerror(SocketError));
    halt(1);
    end;
  rewrite (sout);
  reset(sin);
  writeln (sout,paramstr(1));
  flush(sout);
  while not eof(sin) do
    begin
    readln (Sin,line);
    writeln (line);
    end;
  fpShutdown(s,2);
  close (sin);
  close (sout);
end.
anonymous
()
Ответ на: комментарий от anonymous

TyControls

Интересно, спасибо, новое для меня. Правда, что-то не хочет устанавливаться через Online Package Manager. Глюк распаковки.
В .lazarus/onlinepackagemanager/packages такие странные файлы со слешем:
TyControls\themes\palettes\tokyonight.tycss
и т.п.
Попозже попробую установить просто с github.

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

Да, с github установился, изучаю.
Фон грузится (пример), отлично.
procedure TForm1.TyButton1Click(Sender: TObject);
begin
TyListView1.StyleOverride :=
'background-image: url("/home/user/1.jpg"); background-size: cover;';
end;

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

установил/попробовал
- очень «тяжело» запускается / из IDE - секунд, эдак, 5 («обычные» проекты в течении секунды стартуют)
- набросал основные кнопки, стринги, мемо -> вижуал разницы не заметил, только «шкварник» окна с кнопками макси/мини/офф другие (толстая верхняя строка и большие кнопки)
- копи-паста на форме глючит, помещает копии элементов «под обложку»

пока, видимо, рано, но проект интересный.

sunjob ★★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 4)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария