Lazarus – это среда быстрой разработки кроссплатформенных приложений с помощью Object Pascal из единого исходного кода проекта. Это свободно распространяемая среда программирования на Object Pascal, некий бесплатный аналог Delphi.
На данный момент последняя версия — это Lazarus 1.6, которой мы посвятили отдельный пост.
GetLazarus – это сборка из более свежих исходников Lazarus и FreePascal, а также из предустановленных дополнительных компонентов и настроек самой IDE. Эта сборка позволяет быстро и комфортно приступить к работе в Lazarus, имея навыки работы с последними версиями Delphi.
Причем GetLazarus реализован для привычных нам платформ Windows, Linux, macOS.
Кстати, последнюю версию Delphi 10.1 Berlin, как известно, можно установить только на Windows 7 и выше, а вот в Lazarus таких ограничений нет.
Основные особенности GetLazarus
— интерфейс IDE в виде единого окна, к чему уже многие привыкли, работая с последними версиями Delphi. Кстати, в последней версии Delphi появилась настройка превращения среды к многооконному виду, как это было в Delphi 7;
— шрифт кода, оформление и размещение панелей максимально похожи на Delphi;
— интеграция с документацией docs.getlazarus.org;
— сборка Lazarus собрана на более свежей версии своих исходников;
— FreePascal тоже использует обновленную версию своих исходников и это может являться решающим фактором для получения новых возможностей до официального выхода следующего релиза Lazarus.
Думаю, что для кого-то GetLazarus станет хорошим выбором.
Несколько полезных ссылок по теме:
Скачать сборку GetLazarus для Windows, Linux, macOS:
http://www.getlazarus.org/setup/
Документация от команды GetLazarus:
http://docs.getlazarus.org/
Для более любознательных существует скрипт, который позволяет самостоятельно собрать свою сборку, но потребуется некоторый опыт.
https://github.com/sysrpl/Codebot.Setup
http://www.getlazarus.org/setup/making/
Lazarus bugtracker:
http://bugs.freepascal.org/my_view_page.php
Выбрать GetLazarus с новыми возможностями или более стабильный релиз Lazarus — решать вам.
Честно скажу, GetLazarus мне понравился. Обязательно попробуйте и вы!
Всем удачи!
Комментарии (89)
MrMerak
08.08.2016 10:18-4пустое окно с 1-ой кнопкой = 15.4 мб
Tujh
08.08.2016 10:43+1Если выбросить отладочную информацию и сделать strip — обычно выходило не более 1.5 МБ (можно ещё меньше с применением upx, но тут нужно понимать зачем и надо ли), но да, большой размер исполняемых файлов — это старинная проблема этой IDE постепенно перешедшая в разряд «фич», особенно после того, как набор библиотек от Qt перевалил за 100 МБ, разработчики перестали заморачиваться с вопросами размеров.
j_wayne
08.08.2016 10:56У меня выходило пустое окно с 1-ой кнопкой в Release = 2.9М, но лазарус немного постарше был.
malakhv
08.08.2016 12:04-1Были времена, в Delphi 5 окошко весило около 750 kb.
j_wayne
08.08.2016 12:16+3Дык и VS 6.0 минимальный проект 3кб собирал. Одна беда — не кроссплатформенный)
Сравнивать надо с современными альтернативами.
Java FX 8.0 апп + JRE > 100 Мб (60 в архиве) (есть возможность порезать но там есть свои подводные — лицензии и софт для этого в большинстве своем коммерческий)
Qt minimal release ~ 20MбLisandreL
08.08.2016 21:07+2Ну строго говоря эти 3кб на чистой системе тоже не работали, а вместе с Visual C++ Redistributable тоже прилично Мб выходит.
j_wayne
09.08.2016 20:54За давностью лет я могу ошибаться, но вроде бы работало оно без Redistributable, дергая голый WinAPI32. Естественно, кросплатформенная платформа должна иметь некую прослойку и эти цифры недостижимы при данных условиях.
megahertz
10.08.2016 08:28При использовании только winapi выходило в несколько килобайт. Для работы с формочками можно было отказаться от VCL в пользу Kol/Mck, тогда полноценное приложение с 3-8 формами и иконками укладывалось в 30-80Кб. И оставалась еще возможность значительно уменьшить размер тем-же UPX.
DenisVasilyev
08.08.2016 11:00+4Если в настройках проекта Lazarus снять одну галочку «Генерировать отладочную информацию», то пустое приложение будет таким:
2 535 936 байт — в Lazarus 1.6;
2 201 600 байт — для сравнения в Delphi 10.1 Berlin в Release-конфигурации.
А размер пустого приложения в GetLazarus вас приятно удивит :)
qwertEHOK
08.08.2016 11:21+3Чтобы уменьшить размер исполняемого файла необходимо в свойствах проекта (Проект — Параметры проекта) включить 4 ключа компиляции:
1) Вкладка Генерация кода: установить флажок «Умная компоновка» (-СХ);
2) Вкладка Компоновка: установить флажок «Умная компоновка» (-ХХ);
3) Вкладка Компоновка: установить флажок «Использовать внешний файл отладочных символов GDB»(-Xg);
4) Вкладка Компоновка: установить флажок «Вырезать символы из исполняемого файла»(-Xs).
Эта настройка позволяет сократить размер исполняемого файла в несколько раз. (Пустой проект с 12 МБ сокращается до 1 МБ).mtivkov
08.08.2016 13:06+1Получилось!
Только настройки теперь в других местах:
1) Вкладка Компиляция и компоновка: установить флажок «Умная компоновка» (-СХ);
2) Вкладка Компиляция и компоновка: установить флажок «Умная компоновка» (-ХХ);
3) Вкладка Отладка: установить флажок «Использовать внешний файл отладочных символов GDB»(-Xg);
4) Вкладка Отладка: установить флажок «Вырезать символы из исполняемого файла»(-Xs).
Пустой проект с 15 МБ сокращается до 1,6 МБ
serbod
08.08.2016 13:59+1Про отладочную информацию в EXE предупреждают прямо при установке.
Включите опцию «Use external GDB debug symbols file (-Xg).
// Да, странно, что она до сих пор не включена по дефолту…
Еще есть библиотека Light LCL (LLCL), с ней экзешники от 10 кб.
MrMerak
08.08.2016 14:56-2заминусовали за правду лол))
MacIn
08.08.2016 15:55За передергивание и подмену понятия.
MrMerak
08.08.2016 16:03-2сам ты передёргиваешь )))
какая «подмена»? факт.iandarken
08.08.2016 17:01+2Ну если не читать мануал, то да, вы абсолютно правы. Однако это черным по белому написано даже в их wiki.
Но да, 15 мегабайт для стендэлон-бинаря это ужас. Надо как в С++ с гуями на дотнете — еще и полсотни мегов либ тянуть.
timka05
08.08.2016 10:24-2Viber для десктопа — сам ехе-шник порядка 60 метров + еще куча толстых либ. Собственно размер уже никого особо и не волнует. По крайнем пере в дектоп-приложениях.
mihmig
08.08.2016 12:55+2Хех, поколение «тач», мода на стикеры, о времена, о нравы.
Но верь товарищ — мода на «стройные» приложения вернётся!
:)timka05
08.08.2016 13:11Увы, уже далеко не тач. К несчастью :(
Да сам обычно, если и пишу на Дельфи, то пишу на Дельфи 5. Из-за размера в том числе.
PS. Кстати на Fedora 24 x64 GetLazarus так и не установился правильно. Исполняемого файла среды по пути ../Development/FreePascal/lazarus не найдено. Странно. Хотя установка прошла вроде без ошибок. *.desktop файлы создались, но увы.mihmig
08.08.2016 13:29Да зачем мучиться, пишите на Delphi5+
Вот на днях запустил учётную систему на Ubuntu + Wine 1.6 — интерфейс пользователя, работа с БД Oracle, печать документов (с предпросмотром rtf), в том числе и на принтеры Samsung и HP(wifi).
За исключением мелких косячков (если интересно — пишите в личку) всё прекрасно работает, бонусом имеем:
1. Отсуствие антивируса и связанных с ним проблем (1000+ рублей в год * количество рабочих мест)
2. Отсуствие лицензионного риска для фирмы (Нет microsoft — нет проблем)
loz
08.08.2016 21:06Вернется. Уже возвращается. Не все согласны, что таскать браузер / jvm / 100M либ в зависимостях каждого приложения это нормально.
saege5b
08.08.2016 15:13Вайбер и для Андроида весит дай боже. и память кушает как не в себя.
Пришлось разбираться у знакомой, почему место закончилось, в точных цифрах не помню, но под вайбером места чуть меньше, чем у связки хенгоутс+майл.агент+скайп.
derwin
08.08.2016 10:32поделитесь информацией! как сейчас indy поживает у Lazarus?
Помнится, он любил крашиться и с кириллицей были проблемы такие, что пришлось в своё время переехать именно на delphieugene_brad
08.08.2016 11:51У меня пара программ с http (Lazarus 1.6, fpc 3.0, indy 10.2) — таких проблем не заметил.
serbod
08.08.2016 14:05+2Indy ощутимо проигрывает библиотеке Synapse в целом и современных специализированным HTTP/HTTPS библиотекам в частности. Несмотря на компонентность, оно очень сложное и неудобное в использовании. Для поддержки legacy годится, а для новых проектов не рекомендуется.
MacIn
08.08.2016 15:56Можно где-то почитать сравнение?
serbod
08.08.2016 17:15Увы, я не находил объективных сравнений. Мое суждение основано на личном опыте, когда я делал сервисы на TCP/UDP каналах.
Synapse это кроссплатформенная обертка над голыми системными сокетами, очень простая в использовании. Открываешь сокет по адресу или по хендлу и просто кидаешь в него данные или читаешь из него.
В Indy громоздкий базовый уровень UDP/TCP транспорта, заточенный под обработку команд в режиме запрос-ответ, со своей философией построения прикладных решений. Нужно писать свой экземпляр сервера и клиента, обработчики сообщений, ошибок, состояний. Но при этом удобные компоненты для прикладных протоколов (почта, телнет, итд..). Вот если бы Indy сделали как обертку к Synapse — было бы супер.
Есть еще библиотека http://wiki.freepascal.org/lNet — там оптимизирован опрос сокетов (Epoll, WSAPoll, KQueue..), для большого количества подключений.MacIn
08.08.2016 17:38Нужно писать свой экземпляр сервера и клиента, обработчики сообщений, ошибок, состояний
Что вы имеете в виду? Для простого TCP соединения все написание сервера сводится к добавлению 3 обработчиков: на соединение, разъединение и тело рабочего потока. Причем первые два совершенно необязательны, достаточно тела потока с pull методикой работы с сокетом.
Мне просто интересно — у нас используется Indy, есть неприятные моменты в работе с ним, но другие.serbod
08.08.2016 17:57Вот это самое тело потока, оно же должно в контексте прикладного решения работать? В идеале, как метод класса сервера или клиента. Либо сигналить/синхронизироваться с внешними объектами. Это в принципе правильное решение, но далеко не универсальное и не интуитивно понятное. В старых версиях Indy было проще.
А в Synapse работа с сетью не сложнее работы с файлами. Для многих вещей линейный алгоритм с ожиданием ответа намного проще и надежнее, чем асинхронный с телом потока и poll методикой работы. Его проще вписать в существующую логику приложения, и не проблема сделать асинхронным при необходимости.MacIn
08.08.2016 20:46Вот это самое тело потока, оно же должно в контексте прикладного решения работать? В идеале, как метод класса сервера или клиента. Либо сигналить/синхронизироваться с внешними объектами. Это в принципе правильное решение, но далеко не универсальное и не интуитивно понятное. В старых версиях Indy было проще.
Для сервера это как раз удобно: у нас сразу worker thread появляется (при желании с пулом), который обрабатывает запрос. А с клиентом все еще проще: просто методы «читать» и «писать».
За упоминание Synapse спасибо, посмотрю информацию.
derwin
09.08.2016 09:37synapse — опишу одной фразой «без бутылки не разберёшься». ПРимеров в интернетах на момент работы с лазарем было крайне мало. Переехали на делфи — проблем не стало.
serbod
09.08.2016 13:22Если совсем не хочется напрягаться — то есть https://github.com/serbod/dataport
yalex1442
08.08.2016 11:21Ранее были проблемы с не работающими комбинациями клавиш при включенной кириллице на убунте 14.
Сейчас как обстоят дела?Superl3n1n
08.08.2016 14:54Не знаю как именно в Lazarus, но мне кажется это глобальная проблема в Ubuntu 14. И лечится она установкой вместо штатного русского языка ibus-m17n.
snnrman
08.08.2016 11:51Постеснялись бы заявлять о поддержке macOS. Проще развернуть Windows в виртуале.
serbod
08.08.2016 14:10+1Видимо, не так много пользователей на маках, мало отзывов и багрепортов. Основная стихия Lazarus — это Linux и Windows. Если у вас возникли проблемы и пожелания — поделитесь ими на форуме или в багтрекере.
xcod
08.08.2016 11:51
CodeTyphon — еще одна сборка из более свежих исходников Lazarus и FreePascal, а также из предустановленных дополнительных компонентов и настроек самой IDE
qwertEHOK
08.08.2016 12:29подскажите — как Lazarus дружит с БД? MSSQL, MySQL, sqLite и тд?
в Delphi есть Firedac и это убирает все проблемы с подключением. Для лазаруса только платный UniDAC и все? Остальные ваши компоненты требуют dll или ODBC?DenisVasilyev
08.08.2016 13:09Дружит и достаточно компонентов.
Например, такие компоненты как:
— Zeos Access
— SQLdb
— ZMSql
Для работы с такими БД:
— firebird, interbase, mssql, oracle, postgresql, sqlite, MariaDB, sybase и тп
serbod
08.08.2016 14:18В целом с БД все чуть хуже, чем в Дельфях, поскольку все держится на энтузиазме. С этого года открылся фонд поддержки разработчиков FreePascal/Lasarus, и ситуация может значительно улучшиться.
Для 98% задач вполне подойдет Zeos или встроенные компоненты. А если нужно что-то особенное, то можно и платные компоненты поставить.
Eugeny1987
08.08.2016 12:55А много ли компонентов есть для этого Лазаруса?
DenisVasilyev
08.08.2016 13:09+1Мне известно более 1800 компонентов, работающих на последней версии Lazarus.
serbod
08.08.2016 14:34+2Современный FreePascal обладает высокой совместимостью с Delphi, поэтому любые компоненты от Delphi без особых проблем портируются под Lazarus. Но множество компонентов для Delphi сильно заточены под WinAPI, и работать будут только на Windows. К счастью, многие популярные библиотеки компонетов уже делают кроссплатформенными и с поддержкой Lazarus.
ZoRgSoft
08.08.2016 13:44+1У меня вопрос, я когда-то тоже программировал на Delphi и Lazarus, есть современные известные и популярные приложения написанные на них?
Что на них сейчас пишут?serbod
08.08.2016 14:24В основном «долгоиграющий» ответственный софт (финансы, промышленность, медицина, безопасность), где на одного разработчика приходится 3-4 тестера.
mihmig
08.08.2016 14:57+3Поддержу предыдущего оратора:
Мелко-средний десктопный софт (медицина, производство (да-да ещё не всё в стране убили)).
Там где люди работают — именно работают, эффективно используя чуть ли не всю клавиатуру хоткеями, а не swipe-ают эти ваши вебдванольные бутстрапы. (Ирония)
Там где надо к программе подключить преобразователь RS485-CAN, рентгеновский аппарат по USB и прочее технологическое оборудование.
Там где запустить ярлычок и работать, а не «ой, Вася, посмотри — у меня тут Хром говорит что больше не будет на Windowx XP работать — сделай чтоб это окошко не выскакивало...»
Error1024
09.08.2016 02:16Например Altium Designer, DipTrace, некоторые модули Касперского(!), Aimp, Dev C++…
Достаточно много всего, другое дело что из-за имхо неграмотной политики привлечения пользователей, мало молодёжи берутся за освоение дельфи.
Хотя сейчас вроде ситуация стала улучшаться, C++Builder бесплатно раздают, FreeCompiller C++ бесплатно.
Am0ralist
09.08.2016 09:22Ну, известные и популярные где?
В узком кругу мебельщиков, например? Достаточно популярное современное коммерческое решение, например Базис Мебельщик. Насколько помню именно на делфях написано.
DezzK
09.08.2016 15:42Skype (до недавнего времени), The Bat!, про Total Commander писали, большинство продуктов Auslogics. Inno Setup, Light Alloy, Nero, DreamWeaver, WinRAR, Partition Magic, Panda Antivirus, TuneUp Utilities, Aida64, CloneDVD, Ultra ISO, Help and Manual, KMplayer, TeamSpeak, Hamachi, Altium, PhpED, RapidPHP…
Список неполный, это только известные мне продукты. Где-то в подобной статье давали ссылку на огромный список.
Mantikor_WRX_STi
08.08.2016 14:42+2При попытке установки lazarus-1.6.0-fpc-3.0.0-win64.exe в каталог C:\Program files\Lazarus — видим disclamer: Имя выбранного каталога содержит пробелы. Выберите другой каталог. Это нормально в 2016 году? А так прорекламировали, даже захотелось посмотреть…
serbod
08.08.2016 14:50-1Не надо его в Program Files ставить — эта папка защищена от изменений и при сборке программ (и особенно самой IDE) будут проблемы.
Mantikor_WRX_STi
08.08.2016 15:05У меня Win7 Pro x64, разве в ней PF защищена? VS, Delphi, Python и т.д. ставятся туда без проблем.
serbod
08.08.2016 15:13Lazarus не использует подключаемые готовые библиотеки, а пересобирает себя со всеми компонентами из исходников.
Windows 6 и выше делают «теневую копию» папки Program Files где-то в User Data. Само установленное приложение этого не замечает, но если посмотреть содержимое папки из другого приложения, то оно остается неизменным. То же касается других «системных» папок.
Am0ralist
09.08.2016 10:08— еще не стоит ставить в русскоязычную папку, после этого компилятор может «не найтись».
— и программа, в которой через UNO дергается OpenOffice — если скомпилена под 32, а запустить под 64, то в половине случаев не срабатывала.
Пришлось ставить две версии и компилировать под каждый тип отдельно. В Делфи (на котором не мной была реализована предыдущая версия программы) такой проблемы не было.
но с другой стороны, работает и не требует таких денег, как делфи, что для прикладной программки достаточно важное условие (если не качать с трекеров, а делать все честно)
MCoder
08.08.2016 18:03Подскажите, а high dpi мониторы поддерживает или все как у лазаруса? На 4К мониторах работать невозможно просто.
serbod
08.08.2016 19:03MCoder
09.08.2016 11:44Я имею в виду поддержка в самом IDE.
serbod
09.08.2016 12:52Есть проблемы с масштабированием некоторых стандартных визуальных компонентов, в основном, связанных с иконками и точечными картинками (битмапами) или с привязкой размеров к пикселям, но их находят и исправляют. Вполне возможно, что уже исправили и в следующем релизе все стандартные компоненты будут масштабироваться как надо.
MCoder
09.08.2016 13:38Пока что-то все тихо на этом фронте. Мне просто надо кое-что править в проекте на лазарусе, а после приобретения 4К монитора это стало просто невозможно. Иконки размером с горошинку, все разъезжается… Короче, караул :)
stDistarik
08.08.2016 19:18Ubuntu 14.04, после запуска вот такая картинка:
/>
Наблюдаю эту картину уже 20 минут…stDistarik
08.08.2016 21:45Вот такую.
https://habrastorage.org/files/6ca/907/13e/6ca90713e1ef41cf818a86ae0028fd4e.png
cdmlex
09.08.2016 09:22> интерфейс IDE в виде единого окна, к чему уже многие привыкли, работая с последними версиями Delphi.
> Кстати, в последней версии Delphi появилась настройка превращения среды к многооконному виду,
> как это было в Delphi 7;
а в GetLazarus есть функция перехода к многооконному виду?serbod
09.08.2016 12:57Lazarus изначально многооконный, а единое окно реализовано в пакетах дополнений, таких как AnchorDocking и FreeSparta. Если их отключить, то будет многооконный вид.
MrShoor
10.08.2016 01:44Все здорово, но… только 32 битная среда и 32 битный компилятор в сборке? Это шутка юмора такая в 2016 году?
serbod
10.08.2016 09:41+1Опросы показали, что подавляющее большинство разработчиков на Delphi/FreePascal ориентируются на 32-битные системы, поэтому 32-битная IDE и компилятор используются по умолчанию. Можно скачать дополнение для кросс-компиляции 32-64 и пересобрать IDE, указав архитектуру x86_64 или скачать сразу 64-битный дистрибутив.
Некоторые виджеты и визуальные компоненты не работают в x64, например, виджеты для MacOS работают только в x86. Невизуальные библиотеки и компоненты работают без проблем.MrShoor
11.08.2016 03:02Не знаю, что это были за опросы, но по независимым данным 64 битная сборка лидирует:
И отрыв этот будет с каждым днем увеличиваться.serbod
11.08.2016 10:07Это был опрос на форуме Lazarus. К сожалению, я не смог его найти, а ваша информация более убедительна.
Замечу, что есть утилита fpcup для автоматической установки и сборки FPC/Lazarus из репозиториев, и она автоматом собирает под архитектуру системы. Жаль, что автор GetLazarus не использовал ее как основу.
AndrewTishkin
10.08.2016 23:45Кстати, в последней версии Delphi появилась настройка превращения среды к многооконному виду
Эээ… А в каких версиях эта возможность исчезала?
Мне казалось, что работать с просвечивающим рабочим столом можно было даже до первых XEDenisVasilyev
11.08.2016 07:44+1Этой фразой я хотел сказать, что только в последней версии Delphi 10.1 Berlin появилась специальная настройка «Floating Form Designer», которая разделяет область кода и область дизайнера формы по двум разным формам. Эта настройка дополняет режим «Classic Undocked».
Подробней об этом на официальном сайте:
http://docwiki.embarcadero.com/RADStudio/Berlin/en/What's_New#Floating_Form_Designer
dm9
Мне сейчас надо сделать маленькое приложение. Скачал последнюю версию Delphi. Но ради кроссплатформенности можно попробовать и Lazarus. Вопрос: мне необходимо делать внешние вызовы ffmpeg/convert, а также скачивать кое-что по http. Возможно ли это будет сделать на Lazarus?
+ Ссылка docs.getlazarus.org у меня не работает.
DenisVasilyev
Хм, у меня работает, вот, например, парочку ссылок:
http://docs.getlazarus.org/#rtl+sysutils+strtoint#
http://docs.getlazarus.org/#rtl+sysutils+deletefile#
Diaskhan
Ну это больше зависит от библиотек а не от Лазаруса!!! C http можно попробовать тот же инди. А с ffmpeg это либо исполнение через cmd, или искать готовые биндинги на библиотеку !
serbod
Конечно, возможно. Готовые компоненты: http://www.delphiffmpeg.com/downloads/
Низкоуровневые биндинги и исходники можно найти здесь: https://github.com/skerit/ultrastardx/
Информация по работе с сетью есть в вики: http://wiki.freepascal.org/Networking
Есть разные решения, от готовых компонентов до низкоуровневых оберток над сокетами.
Обращайтесь на форум lazarus, там всегда помогут: http://forum.lazarus.freepascal.org