LINUX.ORG.RU

Lazarus 2.2

 ,


0

1

Команда разработчиков Lazarus рада сообщить о выпуске Lazarus 2.2 — интегрированной среды разработки для Free Pascal. Этот релиз был собран компилятором FPC 3.2.2.

Список изменений:
http://wiki.lazarus.freepascal.org/Lazarus_2.2.0_release_notes
http://wiki.lazarus.freepascal.org/User_Changes_3.2.2

Эту версию можно скачать на SourceForge:
http://sourceforge.net/projects/lazarus/files/
ftp://ftp.freepascal.org/pub/lazarus/releases/ (для тех, у кого заблокирован sourceforge)

Контрольные суммы: https://www.lazarus-ide.org/index.php?page=checksums#2_2_0

Минимальные требования:

  • FreeBSD/Linux: gtk 2.8 для gtk2, qt4.5 для qt, qt5.6 для qt5, 32 или 64bit;
  • Windows: 2k, XP, Vista, 7, 8, 8.1 и 10, 32 или 64bit;
  • macOS/OS X: Cocoa (64bit) 10.12 - 11.4, Carbon (32bit) 10.5 - 10.14, qt и qt5 (32 или 64bit).

Страница на gitlab: https://gitlab.com/freepascal.org/lazarus/lazarus/-/tree/lazarus_2_2_0.

Если будете самостоятельно собирать x86_64 версию Lazarus из исходников, то рекомендуется собирать IDE с флагами оптимизации:

-O1 или -O2 -OoNoPeepHole, – и не собирать просто с -O2 или -O3, так как найден баг в компиляторе FPC 3.2.2, планируется, что он будет устранён в версии FPC 3.2.4.

Коммит с исправлением: https://gitlab.com/freepascal.org/fpc/source/-/commit/e9d318e7e2f772bf455a92461cd5c229e69858d8

>>> Оригинальная новость

★★★★★

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

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

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

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

Чего стоит лишь только прибитое гвоздями место объявление переменных.

Дурачёк! ЭТО дорого стоит!

Закопать вместе со Столяровым!

Опять дурачёк. Все претензии к Вирту :)

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

По поводу Питона, не соглашусь. Язык в общем-то не плохой и уж точно получше какого нибудь Перла

Чем лучше?

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

но профит-то в чем?

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

Во-вторых предсказуемость. Собственно конкретно тебе кидаю эту ссылку третий раз, но я не против — лишний раз вспомнить не помешает.

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

Попробуйте, к примеру, установить и настроить среду компиляции в статическом режиме для Qt, это займёт не менее 4х часов.

Ну вот тут вступлюсь за Qt. Последний раз, когда я собирал Qt в статике (5.10 без WebEngine), на относительно свежем железе, сборка с нуля у меня прошла за 25 минут. Понятно, железо у всех разное. Но сборка под статику, имхо — это вообще не для начинающего. Это для программиста, который чётко знает, чего он хочет получить на выходе. И делается не каждый день.

А если не для начинающего, а для того, кому нужна предсказуемость и воспроизводимость, уже начинаются другие вопросы. Если мне надо просто собрать кутешную программу из исходников (не статикой), мне Qt Creator не нужен. Мне достаточно поставить несколько пакетов из репы моего дистрибутива. Лазарь такое позволяет? Последний раз я спрашивал это в теме про CudaText, и автор оного мне ничего утешительного не сказал. Но может, он просто не в курсе?

Ещё мне не понравилось, что тот же CudaText надо собирать каким-то левым скриптом с левого ресурса. Это при том, что у fpc/Delphi, вообще-то, файл проекта совмещён с главным модулем программы, и для многих случаев сборочная система вообще, по идее, не нужна. Но понятно, что это особенность конкретного проекта (CudaText). Может, другие проекты на Лазаре (DoubleCommander, что-то ещё) свободны от этого недостатка? Если я пишу какой-то свободный проект, мне мало написать код. Мне надо дать вменяемую инструкцию мейнтейнерам дистрибутивов, как это собрать без головной боли. Они точно не будут ставить IDE на каждый чих.

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

Чего стоит лишь только прибитое гвоздями место объявление переменных.

Пишешь функции на два экрана и длиннее? Страдай.

На самом деле я согласен, что это недостаток. Меня плюсы приучили, что неинициализированных переменных в коде вообще не должно быть. Но вот прямо таким критическим неудобством это является только для тех, кто пишет функции-портянки. Для остальных это не более чем повод лишний раз продумать организацию данных, ну и кода заодно.

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

Я имею в виду то, что в си-подобных нет слов function, func, fn и др., там сразу идёт тип, потом имя… и только после этого открывающая скобка даёт нам знать, что это функция.

Правда, конкретно по Java (и C#) это действительно не очень заметно, там ещё в начале каждого метода обычно идёт спецификатор доступа (например, public), а уже потом имя возвращаемого типа. Но отдельное ключевое слово всё равно, имхо, было бы надёжнее. :)

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

Для D есть ide с формошлёпством

Если что, тут на лоре один из разрабов D сидит и говорит, что с формошлепствоам пока все плохо. О каком IDE идет речь?

Oberstserj ★★
()
Ответ на: удаленный комментарий

Чего стоит лишь только прибитое гвоздями место объявление переменных.

Очень дорогого это стоит.

Чем ближе инициализация переменной к её использованию, тем проще читать и сопровождать такой код. Поэтому в данном случае это недостаток языка, а не его достоинство.

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

Я любитель, поэтому мое мнение может отличаться от фактического положения дел))

Позволяет. В составе лазаря есть утилитка lazbuild, оно компиляет на основе файла проекта. Сам лазарь разбит на пакеты позволяющие поставить только нужные прекомпиленые части для сборки, например lcl-qt5 - лцл скомпиленая для qt… Проблемы как везде - в репах старье, сторонние пакеты (писаные на паскале, не deb\rpm) могут быть на это не расчитаны.

Конкретно в моем случае: я активно использую новые фичи lcl\fpc поэтому не всегда можно собрать на стабильных версиях (стараюсь, но не получается). Сейчас 2.2 меня собирает, не факт что это это будет также через полгода, когда 2.2 попадет в репы дистрибутивов

Конкретно в моем случае: чехарда с сторонними паскалевскими пакетами, например virtualtreeview - его есть много версий, я в свое время начал юзать laz.virtualtreeview, вроде как поддерживаемый командой lazarus, сейчас с ним какие то проблемы, лень разбираться

Конкретно в моем случае: просто скомпилить исходники мало, надо их настроить, выпарсить из них какуюнить инфу, нужную в рантайме… поэтому приходится писать всякие дополнительные скриптики, а руки кривые.

Да, позволяет, но в простых случаях. В сложных на данном этапе развития все быстро меняется, ответы и советы сразу устаревают

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

В Delphi можно везде создавать переменные: https://docwiki.embarcadero.com/RADStudio/Sydney/en/Inline_Variable_Declaration

procedure Test99;
begin

  // some code

  if (something) then
  begin
    var Intf: IInterface = GetInterface; // Intf.AddRef
    var MRec: TManagedRecord = GetMRecValue; // MRec.Create + MRec.Assign
    UseIntf(Intf);
    UseMRec(MRec);
  end; // Intf.Release and MRec.Destroy are implicitly called at end of scope
  
  // more code

end; // no additional cleanup

Может и в fpc сделают когда-нибудь…

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

Поэтому в данном случае это недостаток языка, а не его достоинство.

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

Удобство разработки вещь сугубо субъективная. Но тем, кто освоил «питончик за месяц» такое объяснять бесполезно.

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

Спасибо!

чехарда с сторонними паскалевскими пакетами

Вот это тоже интересует.

Разрешение зависимостей на сторонние devel-библиотеки — проблема для любого ЯП. И в этом случае либо интегрируют такие библиотеки в пакетный менеджер ОС (deb, rpm, etc.), либо делают для ЯП свой пакетный менеджер. Первый подход характерен для Си и C++, второй — для Rust, JS и др. Python, как я понимаю, пользуется обоими — есть pip, но есть и большое количество py-devel-пакетов непосредственно в дистрибутивах.

В fpc, как я понимаю, ни одна из этих инфраструктур толком не проработана? Или не всё так плохо?

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

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

В общем все очень не плохо, рано или поздно все станет хорошо)) Комюнити у паскаля не большое, развитие очень небыстрое((

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

Однажды мне понадобилось сделать приложеньку для виндовс. Под винду не кодил лет 15, даже не знаю на чем сейчас клепают формочки, на .NET? И тут я вспомнил про лазарус и успешно склепал окошко с парой кнопок.

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

в лазарусе есть свой онлайн пакетный менеджер

Это?

про возможность работы менеджера без IDE и про как добавить туда свои пакеты ничего сказать не могу((

Судя по тому, что на той страничке отсутствуют какие-либо упоминания про cli — всё как-то не очень хорошо. Но всё равно, спасибо, будем надеяться, что авторы смогут выпрыгнуть за рамки, в которых их держит репутация «аналога Delphi».

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

Спрашиваю об этом потому что как ide - Lazarus великолепный. А вот именно редактор кода у него ужасный.

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

Использую редактор кода. формашлепатель не использую. нравится

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

Они ухудшают читаемость кода. Хорошо написанная функция должна быть обозрима, и поэтому обычно вмещается в один экран +/-. Практика использования вложенных функций превращает функцию в бесконечную портянку. Причём правило обозримости здесь плохо работает и для вложенных функций, поскольку они имеют доступ к локальным переменных родительской функции.

Вложенные функции очень полезны, позволяют не засорять глобальное пространство имён. Хоть в паскале это можно и на уровне модулей делать, спрятав «лишнее» в implementation.

Например возмьмем сортировку quick sort. Логично внутри функции определить сложенную для сортировки подмассива.

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

Lazarus необычайно крут.

Там уже есть свой интернет-каталог компонентов, в визуальном интерфейсе выбираешь, кликаешь, оно само загрузится и установится. 18 лет назад это было только в eclipse. Теперь вот и Lazarus дорос.

Попробуйте, к примеру, установить и настроить среду компиляции в статическом режиме для Qt, это займёт не менее 4х часов. И нужен мощный процессор чтобы кьют компилять или из инета тащить готовый статический комплект, а он очень жирный. А в лазаре статическая сборка из коробки.

Ну то что реябята из Lazarus не осилили создать формат динамических модулей это не то чтобы прямо преимущество… Для добавления любого, даже самомого маленького компонента нужно перекомпилировать всю IDE это такое себе… И плохо ложится на юниксовую FSH, когда пользователь не имеет прав на изменение в /usr/bin. Да и если у нас пять пользователей и каждому нужны свои компоненты в IDE то нужно будет пять ее скомпилированных копий и ещё одна которая с пакетами по умолчанию ставится пакетным менеджером…

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

Для добавления любого, даже самомого маленького компонента нужно перекомпилировать всю IDE это такое себе…

Некоторые Lazarus никогда не ставили, и не знают что перекомпилируется она вся меньше 5 секунд, важная информация.

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

А где их нету? Fortran, Cobol, Pascal, вроде все перечислил? В GNU C есть:

#define lambda(return_type, function_body) \
({ \
      return_type __fn__ function_body \
          __fn__; \
})
Использовать как:
lambda(int, (int x, int y) { return x > y ? x : y; })

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

Снес вчера Lazarus

И лучше выдумать не мог ...

PK: Пока не нужна /а в кладовке и так хламу много/.

anonymous
()

Руб за тысячу, что в этом треде 0.514 пользователя Lazarus …

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

Ребята из Lazarus тут не причем. ребята из fpc давно пилят, в свне ветка была, даже чтото работало. после переезда на гит хз где.

Странно слышать на линуксовом форуме такое. опенсорс - добавляем функционал исходниками - по феншую

Ну и с текущим зоопарком версий, если еще бинарники версифицированные появятся - потушим свет

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

Снес вчера Lazarus

Хотя конечно разработчикам этого проекта

РЕСПЕКТ! ...
anonymous
()
Ответ на: комментарий от anonymous

Сложнее хэллоуворда ничего писать не приходилось?

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

По поводу Питона, не соглашусь. Язык в общем-то не плохой и уж точно получше какого нибудь Перла

Чем лучше?

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

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

В Delphi можно везде создавать переменные
Может и в fpc сделают когда-нибудь…

Насколько помню, позиция разработчиков FPC по этой фиче резко отрицательная. В том числе и по объявлению счетчика цикла без/с выводом типа:

for var i: Integer := 0 to n-1 do ...;
for var i:=0 to n-1 do ...;

bormant ★★★★★
()

FreeBSD/Linux: gtk 2.8 для gtk2

ver. 2.2.0 sl12.2

(9015) Linking ../lazarus
lazarus-2.2.0/lazarus/lcl/units/i386-linux/gtk2/gtk2int.o: In function `GTK2INT_$$_finalize$':
lazarus-2.2.0/lazarus/lcl/interfaces/gtk2/gtk2int.pas:1142: undefined reference to `gtk_message_dialog_get_message_area'
lazarus-2.2.0/lazarus/ide/lazarus.pp(167,1) Error: (9013) Error while linking
lazarus-2.2.0/lazarus/ide/lazarus.pp(167,1) Fatal: (10026) There were 1 errors compiling module, stopping
Fatal: (1018) Compilation aborted

gtk+2-2.20.1

может что-то не то с заявленной версией?

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

найден баг в компиляторе FPC 3.2.2, планируется, что он будет устранён в версии FPC 3.2.4.

Коммит с исправлением: https://gitlab.com/freepascal.org/fpc/source/-/commit/e9d318e7e2f772bf455a924...

ну и патчи на fpc-3.2.2 тоже не прокатили

с шутками-прибаутками встречает нас новый год... короче, приплыли :о)

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

большой такой, огромный... огромный такой ... секрет

->

sl12.2

ака slackware-12.2

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

Меня плюсы приучили, что неинициализированных переменных в коде вообще не должно быть.

Как я помню, если объявить переменную, но не использовать её, компилятор ругнётся. Должен ругаться и на код вида:

var a,b,c:integer;
begin
 b:=5;
 c:=b+a;
end.
mister_VA ★★
()
Ответ на: комментарий от anonymous

Чем ближе инициализация переменной к её использованию, тем проще читать и сопровождать такой код.

Особенно если пишут несколько программистов и один такой: int a=5; c=b+a; а другой через 350 строк допишет float a=5.5; e=a^6;

mister_VA ★★
()

сборка на старой оси/slackware-12.2

gtk2-версия не проканал (нужна более свежая вер. библиотеки)

....

лазарь нормально собрался c qt4

1. установил бинарно-собранную вер 2.5

2. сделал линки
/usr/lib/lib* -->
/usr/lib/qt4pas-2.5

3. сборка пошла

библиотеку скачал отседова fpcqt4

sunjob ★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.