LINUX.ORG.RU

Lazarus 1.0

 , , ,


3

1

Вышла новая версия свободной среды разработки для компилятора FreePascal — Lazarus 1.0. В связи с этим важным событием нынешняя команда разработчиков Lazarus хотела бы поблагодарить всех людей, которые когда-либо были вовлечены в его разработку. Особая благодарность основателям проекта, которые начали работу над ним более десяти лет назад, в 1999 году: Клиффу Бэйсеману, Шейну Миллеру и Майклу А. Гессу.

История разработки.

Скачать.

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

  • Windows: 98, 2k, XP, Vista, 7, 32 или 64 бит.
  • FreeBSD/Linux: gtk 2.8 или Qt4.5, 32 или 64 бит.
  • Mac OS X: 10.4, с LCL только для 32 бит, без LCL можно использовать и для 64 бит.

>>> Подробности

★★★★★

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

Ответ на: комментарий от A-234

111

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

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

222

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

кстати код на Си++, решающий

void some_func(size_t n) {
    std::vector<some_object> a(n);
    std::vector<some_object> b(n);
    fill_def(&a[0], n);
    some_call(&a[0], &b[0], n);
}
anonymous
()
Ответ на: комментарий от unsigned

111

В паскале это невозможно, по определению.

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

Но в си проблема тоже есть - если рассинхронизировались *.h и *.c, то не всегда об этом узнаешь.

Вне всякого сомнения это так. Проблема синхронизации *.h и *.c (вернее *.so, мы ведь исходники не поставляем) оставлена на откуп программисту, что он там себе понаставил и с чем линковать все это добро собрался. Разработчик библиотеки может облегчить решение этой проблемы но не обязан и язык не предлагает никакого решения в явном виде.

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

Так это и в плюсах реализовано в виде манглинга. Но как программист, желающий использовать в своем проекте некий foo.dcu, поймет что именно в нем объявлено не имея интерфейса этого dcu? Или среда (сабж например) позволяет восстановить интерфейсную часть не имея исходников?

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

111

В принципе надо тоже самое написать, но поместить это в блок try finally, где реализована процедура удаления содержимого контейнера.

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

111

Документация нужна вообще-то. Не видел утилит для извлечения такой информации, но она в dcu имеется.

anonymous
()

Проигнорировав аргументы, многие судорожно пытались найти в сети что же такое нельзя сделать в паскале, но что возможно в C++.

Кто-то в отчаянии прокричал что ему не нравятся begin/end, но обожает скобочки. Брэйнфак вспомнили.

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

Между прочим, одна из киллер-фич C++ - возможность легко прокидывать интерфейсы в другие языки; вот только паскалистам не понять, до идеи писать гибридные программы они ещё не дошли - в лучшем случае на метапрограммировании и domain-specific языках остановились.

Я так понял что в данном случае психологический комплекс. Не важно уже что там в паскале, главное самого себя убедить что C++ лучше.

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

upx — зло, даж на сайте фпц так написано -)

В линуксе работает, в винде у кого-то подглючивает. Большого смысла в постоянном его использовании нет, но если вдруг понадобится держать_на_винте/предъявить_кому-то заархивированный бинарник, то ничего лучше я не знаю.

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

Если в dcu визуальные компоненты (наследники TComponent), то можно установить штатными стредствами и published свойства будут видны в инспекторе. Если нет - нужно кинуть dcu туда где компилятор сможет ее найти. Автокомплит по Ctrl+Space работает, но, к сожалению, посмотреть весь интерфейс штатными средствами нельзя, очевидно недоработка IDE. Переносимости между версиями делфи нет - если dcu скомпилирована с использованием юнитов интерфейс которых отличается от интерфейса доступных юнитов, то компилятор выдаст ошибку (может можно вкомпилировать все статически, но я не знаю как).

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

А какие у тебя параметры компилятора?

Парамеры стандартные. Но я похоже неправильно посмотрел размер - оказалось не 200К, а 20М. Мне кажется, это многовато, но думаю, fpc по умолчанию пихает кучу библиотек в файл (перестраховывается для разных систем), которые можно безболезненно отключить/выкинуть.

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

оказалось не 200К, а 20М.

херасе ошибочка )))

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

111

Два порядка не ошибка. :))

Отключи добавление отладочной информации в файл и включи «умное» связывание.

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

В том то и дело что у меня в 1.1 оно через гуй не работает. Если только через strip. И то уменьшается оно с 21.1M до 3.9M. Многовато для пустой формы. С помощью upx до 959kb. С этим конечно лучше в MSE.

И тем более QT в оптимизации выигрывает значительно. И назовите мне линукс, в котором сейчас нет QT.

Отключи добавление отладочной информации в файл и включи «умное» связывание.

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

Никакие галки, хоть снимай, хоть ставь, в настройках компилятора, ничего не помогает.

Не понял, что значит через гуй не работает?

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

Ключи компилятора -XX -Xg -Xs. Или выставить тоже самое галочками в настройках проекта. Потом можно еще strip-ом. Хотя это мало повлияет на размер, если вообще повлияет.

Попробуй еще пересобрать всю среду с ключем -XX

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

Та да, но не в том случаи когда отлаженный код работает везде, и работал до недавнего с самим Lazarus'ом, а потом обновился до 1.0 и везапно всё отвалилось :)

Достаточно вспомнить библиотеки винды, где после исправления багов, программы переставали нормально работать. И Маикрософту приходилось возвращать баги, чтоб исправить проблему :)

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

Всё-таки последовательное использование разных окон оказалось надёжнее параллельного. В принципе можно посмотреть как справляется с новой «фичей» GLScene.

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

с BEGIN/END и синтаксисом неудобным человеку, но удобным для LL(1)

Это просто праздник какой-то.

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

7z бинарники на ура жмет

Их потом без распаковки запустить можно?

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

Я же сказал, в настройках проекта ничего не влияет.

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

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

Между прочим, одна из киллер-фич C++ - возможность легко прокидывать интерфейсы в другие языки

Эта фича характерна не для С++, а для С. «ООП» в этих ваших ++ ни с чем не совместимо.

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

У меня помогает, возможно ты делаешь Compile, а надо Build

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

GLScene использует TOpenGLContext насколько помню, а оно помимо прочего идёт отдельным контролом. А инициализация в TPanel или ещё куда и у меня работает, контролы то суть один фиг XWindow на самом нижнем уровне, а именно он и выдёргивается для инициализаци GL.

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

А теперь выполни комманду strip file и посмотри на размер.

Гениально!!! Размер с 20М уменьшился до 5М, в 4 раза!

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

А что собирали, минимальный проект?

Попробуйте пересобрать среду с параметром -XX

PS Для 64 разрядных не пробовал, там размер должен больше получаться, по идее. Но не думаю что на столько. Нормальный размер должен быть в около 2 Мб.

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

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

fpc project1.lpr -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux/* -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux  -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux/ -CR -O3 -Mfpc -XX -CX
4.8Мб

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

Постоянно слежу, не знаю когда оно было неплохим, нормальное, с натяжкой. Глядя на постоянно растущую цену делфи с радостью бы перешел, но слишком уж много всего переделывать нужно. Как IDE ему не хватает элементарного докинга окон, ну или другого способа компоновки и рефакторинга. А компилятору не хватает поддержки последних фич делфи для переноса моего проекта.

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

А что собирали, минимальный проект?

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

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

Ну чё - версия 1 полное гуано, поздравляю.. А было неплохое IDE.

Напишите, что поломали, пожалуйста! Мне в компрьютерный класс на следующей неделе ставить, нужно знать, использовать ли 0.9.30.4 или 1.0. Раньше всегда ставил последнюю версию, потому что там было много исправлений.

Vudod ★★★★★
()
Ответ на: комментарий от A-234

Дядюшка Вирт вообще молодец, его Оберон должен был выкинуть борландовское поделие на помойку.

Кроме, того, он лауреат премии Тюринга. Не прислушиваться к мненю человека, получившего компьютерную «нобелевку» можно, но глупо. (Это я для quiet_readonly, которому стоило бы соотвествовать нику.)

Такое впечатление что синтаксис объектного паскаля лепили находу, прикручивая костыли по мере необходимости.

Так и было. К Паскалу прикручивали фичи, чтоб было «не хуже чем в C++». Как всегда, маркетологи победили технарей.

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

111

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

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

О, кстати, а куда Kylix подевался? Что-то о нём последнее время ничего не слышно.

С разморозкой!

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

Вот, жадинка. Разочаровал в очередной раз. Чтоб его переплюнул какой-нибудь линуковый Гислер и чтоб Гислера задавила жаба из-за этого.

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

Разве fpcmake не достаточно?

Я говорил про старый паскаль, не про fpc.

А так да, исходники паскаля уже дают материал для сборки.

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

Очень похоже, что модульность идеально реализована в Component Pascal

Ничего удивительно, Component Pascal - это же название, под которым скрывается развитие Oberon 2.

Но говоря о модульности в яве, я имел в виду прежде всего то, что там не просто пакеты, а ещё и иерархически сгруппированные по именам пакеты, что полезно для ОЧЕНЬ больших проектов.

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

в С для этого есть static.

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

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

Боюсь, что Вы тогда не поняли, чем модульность отличается от просто раздельной компиляции (которая является необходимым, но недостаточным условием модульности).

Но потом пошли всяческие сущности типа class которые отличались от object, что только добавило бардака.

Это да, маркетологи надобавляли в Delphi явно лишних сущностей.

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

Ну так у вас все что в implementation понаобъявлено попадает в static, разве нет?

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