Компания The Qt Company, курирующая разработку фреймворка Qt,
представила (http://blog.qt.io/blog/2016/08/18/introducing-the-qt-lite-pr.../) проект Qt Lite, в рамках которого будет предоставлена возможность построения продуктов на базе урезанного варианта Qt, включающего только необходимые для работы компоненты. Qt Lite булет масштабироваться для любых платформ и решений любого размера, от устройств интернета вещей (IoT) и умных часов до телевизоров и промышленных персональных компьютеров. При этом, Qt Lite не будет ответвлением от Qt или отдельным продуктом, а станет неотъемлемой частью основного фреймворка.
Для более эффективного использования доступных ресурсов, особенно при создании решений для встраиваемых систем, Qt Lite позволит отбрасывать лишние библиотеки и компоненты поддержки операционных систем. Из возможностей, развиваемых в рамках проекта Qt Lite отмечаются:
- Новая система настройки, которая будет добавлена в Qt 5.8. Система нацелена на упрощение формирования функциональности модулей и позволит гранулировано определять контент, который требуется разработчику от каждого модуля. На начальном этапе система детальной настройки будет доступна для модулей Qt Core, Qt Network, Qt GUI, Qt QML и Qt Quick, что даст возможность выборочно активировать различные функции данных модулей для применения в своем проекте. Отключенная функциональность не будет входить в сборку;- Инструменты, которые позвоят начать разработку с минимального набора компонентов, подключая дополнительные возможности по мере развития проекта. Например, рассматривается предоставление окружения для создания типовых прототипов, которые можно использовать в качестве отправной точки при начале разработки. Также планируется предоставить максимально урезанный вариант Qt, с которого можно начать разработку программ, от которых требуется максимально возможная производительность или которые необходимо выполнять на системах с ограниченными ресурсами. Наличие подобного набора даст возможность разработчикам не тратить дополнительное время на оптимизацию;
- Обеспечение возможности эффективной работы Qt Quick 2D без OpenGL, используя программные методы отрисовки, что позволит применять технологии Qt Quick и QML на любых классах устройств, в том числе не поддерживающих OpenGL;
- Ведётся разработка нового графического инструмента для настройки, выбора и изменения различных опций сборки Qt. Сформированные сборочные конфигурации могут быть сохранены и повторно использованы. Настройки будут в группы, охватывающие типовые применения, например, интернационализация, мультимедия и работа с web;
- Снижение требований к аппаратному обеспечению. В настоящее время Qt может использоваться на устройствах 32 Мб ОЗУ и 16 Мб Flash. В будущем за счёт отбрасывания лишнего планку требований к оборудованию планируется значительно снизить, например, обеспечить работу на устройствах на базе чипов ARM Cortex M7. Также планируется большая работа по оптимизации производительности и сокращению потребления памяти;
- Предоставление механизма обновлений по сети (Over-the-Air);
- Развитие Qt Wayland для упрощения создания самодостаточных окружений для любых устройств, улучшение EGLFS и развитие средства для работы на нескольких экранах;
- Развитие Qt Emulator как инструмента для быстрого тестирования в процессе разработки и работы над проектами без наличия реального оборудования;- Расширение возможностей разработки для встраиваемых устройств. Например, планируется усилить возможности Qt по разработке приложений для автомобильных информционных систем, устройств авионики, интернета вещей.
URL: http://blog.qt.io/blog/2016/08/18/introducing-the-qt-lite-pr.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=44991
Посмотрим, а то сейчас тривиальная программа на Qt для Android весит больше 8МиБ, что не критично, но неприятно.
это "hello world" то на 8 Мб не критично?
На лиспе вообще 40 метров один Hello World.
Удивили Вы меня. Вот специально покомпилял только что. На весьма прожорливой Racket Scheme у меня получилось 800кб, на Chicken Scheme - 23кб.
Подивился, покомпилял заодно на Ocaml (не лисп конечно, но чем чёрт не шутит) - 173кб.Ну и где обещанные 40 попугаев? :)
В смысле где? В сборке Clojure под Андроид естественно.
[trollmode] Racket - не Scheme [trollmode]
> [trollmode] Racket - не Scheme [trollmode]Раньше он вполне себе звался PLTScheme, и никто не сомневался, что это Scheme. А теперь он Racket, но уже не Scheme? Не верю. ))
Вот тут говорится, что отчасти я прав, отчасти правы Вы: http://racket-lang.org/new-name.html
Короче, хрен разберёшь родословную лисповую. :)
Не критично, потому что hello world проще написать без фреймворков.А вообще начиная с пятерки Qt раздулся совсем неприлично, да.
У четвёрки те же пропорции относительно тройки.
> А вообще начиная с пятерки Qt раздулся совсем неприлично, да.То, что относительно консистентно реализовано в STL,
всегда было не очень красиво реализовано в Qt.
Вот и основа "жирности".
Как раз пятёрка прибита гвоздями к STL. Только "тоньшее" она от этого не стала. Один только QtGui, прибитый к OpenGL ставит крест на всех попытках что-то уменьшить. Порядки не те.
Эх, а програмки на PyS60 (Питон для Симбиана) занимали пару килобайт... Кстати, вроде же есть Питон для Андроида, как он по сравнению с PyS60?
3D редактор на PyS60 - 55кб
http://profismart.org/f-180431.php
За это надо колотить гугель. Сделали как в винде и теперь все страдают.
> Предоставление механизма обновлений по сетиВот этого то дерьма в лайт версии и не хватало.
Эта фича очень критична при разработке IoT-софта для мелких встраиваемых девайсов, так что всё правильно сделали.
Приведи пример IoT с графическим интерфейсом? Ато одни басни только...
А как связан графический интерфейс с обновлением по сети?
Фитнесс-трекер с экраном?
В обоих Mi Band - Cortex M0, куда там Qt, хоть ExtraLight Mentol?
> В обоих Mi Band - Cortex M0, куда там Qt, хоть ExtraLight Mentol?А у некоторых вполне себе Cortex A, вплоть до того что некоторые часы с 512 метрами памяти и запускают весь ведроид оптом.
Извини конечно но из Cortex M0 хреновый IoT. Потому что Internet ты на нем делать замахаешься, а чтоб еще и по нормальным протоколам работало, без скидок на кастрированность...
Это не часы это тренировочные гири.
И для этого фитнес браслета необходим Qt с вяленым под капотом? Ну что ж, тогда снимаю шляпу...
> Эта фича очень критична при разработке IoT-софта для мелких встраиваемых девайсов, так
> что всё правильно сделали.И, конечно, за обновление по сети должен отвечать графический фреймворк.
QT давным давно нечто большее чем графический фреймворк или библиотека виджетов.
Да, это плеер.
> Эта фича очень критична при разработке IoT-софта для мелких встраиваемых девайсов...Да, очень нужно чтобы софт автоматом обновился и сдох из-за неучтённой особенности конкретной железки и среды выполнения в новой версии.
> Эта фича очень критична при разработке IoT-софта для мелких встраиваемых девайсов,Если это будет апдейтится апликушным фреймворком - умрет и UI с собой унесет. А рекавери не был предусмотрен. Патамучта кутя это не умела.
Один фиг, из за того что этот кастрированный Qt5 собирается в gcc, из за больных на голову создателей этого компилятора, на слабеньких встраеваемых процессорах x86 от via, vortex86 и конечно же интеловских кварках, оно никогда не заработает, будет падать при старте, из за того что олени прибили обязательное запихивание CMOV комманд в любой бинарник, с любыми флогами и ключами на выходе.
Создаётся такое ощущение что вы врёте.
с чего это? Попробуйте сами. А начинаяя с 4.8 релиза gcc сам даже запускаться на таких процессорах перестал. И всё что в нем собрано, тоже тем более.
Воу-воу-воу, полегче, википедист-пересказыватель.
Можно какое-нибудь документальное подтверждение, что вы говорите именно о gcc, а не блобе собранном из исходников gcc специалистами неопределённого уровня мастерства, работающими в RedHat или подобных? Ссылка на багзиллу, обсуждение в форумах, запись в NEWS? Хоть что-нибудь?
Так уж и с любыми? march отменить успели, а я и не заметил?
Вы все неимеете таких процессоров, поэтому и кукарекаете что это всё нетак. А на самом деле из за gcc ни один дистрибутив линукса на via c3 даже загружаться не будет, так как даже сам grub и тот CMOV коммандами нашпигован оказывается.
busybox (установленный в системе) собран -march=native -mfpmath=sse -O3:
i486 (6): 0
i586 (4): 0
i686 (54): 522
MMX (47): 0
SSE (81): 21
SSE2 (130): 361
SSE3 (15): 3
SSSE3 (16): 0
SSE4.1 (49): 0
SSE4.2 (7): 0
SSE4a (4): 0
CpuID (1): 1
3DNow (25): 0
Ext3DNow (24): 0
AMB (2): 3
AVX (386): 0
AVX2 256 (108): 0
AVX2 New (22): 0busybox собран -march=i386 -O2:
i486 (6): 0
i586 (4): 0
i686 (54): 0
MMX (47): 0
SSE (81): 0
SSE2 (130): 0
SSE3 (15): 0
SSSE3 (16): 0
SSE4.1 (49): 0
SSE4.2 (7): 0
SSE4a (4): 0
CpuID (1): 1
3DNow (25): 0
Ext3DNow (24): 0
AMB (2): 3
AVX (386): 0
AVX2 256 (108): 0
AVX2 New (22): 0CMOV комманд (i686) нет и в помине. Есть AMB+CpuID, но это скорее всего ассемблерная вставка исполняющаяся при наличии подходящего процессора.
gcc-4.9.3
Да, здорово. Весь код проанализирован был в Отладчике. Только почему то не запускается ничего. Скачиваю любой дистрибутив и он даже ни один не стартует.
> Да, здорово. Весь код проанализирован был в Отладчике. Только почему то не
> запускается ничего.Вы сами все зависимости собирали? Может что-то из системы (скомпилированное под i686) статически линковалось?
> Скачиваю любой дистрибутив и он даже ни один не
> стартует.Так уже много лет практически все собирают под i686.
Пробуйте: http://damnsmalllinux.org - i486 или http://tinycorelinux.net - i486DX (486 with a math processor)
Меньше слов, больше пруфов.
configure переписали?
да
А как у GTK с расходом ресурсов?
Вывод ps_mem.py:
Private + Shared = RAM used Program
20.0 MiB + 5.7 MiB = 25.7 MiB qtconfig (qt4 максимально облегченный при сборке)
23.9 MiB + 1.8 MiB = 25.7 MiB geany (gtk-2, открыто 49 файлов исходников)На одинаковом простом приложении приложении gtk будет потреблять памяти в несколько раз меньше, чем qt. Но с учетом, что gtk тоже не образец минимализма у Qt Lite есть все шансы обойти его, если еще не все современные программисты разучились экономить ресурсы.
>[оверквотинг удален]
> Private + Shared = RAM used
> Program
> 20.0 MiB + 5.7 MiB = 25.7 MiB
> qtconfig (qt4 максимально облегченный при сборке)
> 23.9 MiB + 1.8 MiB = 25.7 MiB
> geany (gtk-2, открыто 49 файлов исходников)
> На одинаковом простом приложении приложении gtk будет потреблять памяти в несколько раз
> меньше, чем qt. Но с учетом, что gtk тоже не образец
> минимализма у Qt Lite есть все шансы обойти его, если еще
> не все современные программисты разучились экономить ресурсы.А что ты два трупа сравниваешь?
> А что ты два трупа сравниваешь?Сравниваю то, что в системе стоит. GTK3 есть, но его потребление принципиально не изменилось. Qt5 до сих пор не установлен - программы, которые я использую, либо еще вообще не портированны на Qt5, либо порт менее стабилен, чем с Qt4. На GTK3 больше портировали, но тоже далеко не все.
При этом полный образ MirageOS - около трех мегабайт.
IncludeOS - "including bootloader, operating system components and a complete C++ standard library is currently 707K when optimized for size"
как будто os - это что-то сложное
> как будто os - это что-то сложноеМожно для сравнения взять Rockbox: специализированная OS для аудио плееров. Основной бинарник - 600-700K. Декодеры подгружаются при необходимости - (flac - 12.2K). Можно загружать простые приложения. Бинарник doom - 384.5K.
Для нормальной работы требует RAM >= 2MB, CPU >= 30 MHz (ARM). И да, GUI там тоже есть в виде очень гибкой системы скинов со своим скиповым языком.
> На одинаковом простом приложении приложении gtk будет потреблять памяти в несколько раз меньше, чем qt.Вот когда будет - тогда и приходи.
> Вот когда будет - тогда и приходи.Private + Shared = RAM used Program
9.4 MiB + 1.0 MiB = 10.4 MiB gtkperf
Было бы логично, если бы Qt Lite стал в том смысле легковесным, что по максимуму использовал то, что даёт стандартная С++ библиотека, включая C++17, а не городил свой удобный огород.
Думаю одна из опций конфигурации будет "Выкинуть все контейнеры, алгоритмы и другую фигню, которая есть в STL".
> Думаю одна из опций конфигурации будет "Выкинуть все контейнеры, алгоритмы и другую
> фигню, которая есть в STL".Не думаю. Если хоть один класс принимает QString то придется тянуть QString, если кто-то использует свою сортировку то алгоритмы придется включать, и.т.д
Соответственно для своего проекта ты сконфигурируешь сборку с нужными тебе компонентами.Я так понимаю тут идея в том, что у тебя есть проект, который использует Qt и тебе нужно собрать сам Qt, но удалив из него все не нужное твоему проекту. Т.е. по сути это configure, который позволить более детально настроить, что включать в сборку Qt, а что нет.
> Соответственно для своего проекта ты сконфигурируешь сборку с нужными тебе компонентами.
> Я так понимаю тут идея в том, что у тебя есть проект,
> который использует Qt и тебе нужно собрать сам Qt, но удалив
> из него все не нужное твоему проекту. Т.е. по сути это
> configure, который позволить более детально настроить, что включать в сборку Qt,
> а что нет.Уже давно бы сходил и посмотрел http://code.qt.io/cgit/qt/qtbase.git/tree/configure.json?h=5...Зачем догадки строить? По сабжу. Ничего не изменилось. Просто один из разрабов решил попиариться, прикрутив конфиг в JSON для configure.
> Ничего не изменилось.ну так еще ничего и не готово;)
> Просто один из разрабов решил попиариться, прикрутив конфиг в JSON для configure.
там много разрабов, о каком конкретно речь?
В рассылке почитай, лентяй.
маловероятно, пока будут поддерживать старые версии студии, и пока не добавят бинарную совместимостью в stdlib`ы.
Qt становится все лучше и лучше!
Обещает стать.
И они ещё тёрли тут мои комменты, когда я говорил, что Qt раздут.Выкусите теперь, даже сами разработчики поняли что нужно не тупо добавлять сомнительные фичи, но и оптимизацией заниматься.
Правильно терли. Qt Lite - продукт крайне специфический.
ИМХО - как раз наоборот - таким и должен быть любой нормальный фреймворк - если возможность не используется, то она не должна потреблять ресурсы. Наконец-то это дошло и до Qt. В нормальных проектах (kernel, ffmpeg, curl, busybox) изначально подобная маштабируемость предусматривается.
И что толку от твоей масштабируемости, если собирать в дистрах всё равно будут по максимуму.
Возможно, конкретно для вас и нет.Для меня лично есть, так как я собираю систему так, как считаю нужным.
А так ядро работает от *wrt/embedded до top-500. Да и легковесные дистрибутивы (и src based) никто не отменял.
> Для меня лично есть, так как я собираю систему так, как считаю нужным.А ещё ты под рутом сидишь и детей этому учишь.
> А ещё ты под рутом сидишьЕсть такое ;)
> и детей этому учишь.
Ну не то, что учу. Просто (ИМХО) дети не понимают, что нужно выбирать степень защищенности соответственно задаче, а не разводить секретность на локалхосте, как на режимном объекте.
> И что толку от твоей масштабируемости, если собирать в дистрах всё равно
> будут по максимуму.Ну так это опенсорс, детка. Я под эмбедовку билдую ядро сам. А все-равно придется, чтобы прописать ему правильные автопилотные дефолты и проч. Есть и другие варианты но они менее надежны. Да и переть цать драйвров для всех девайсов вообще - портит время загрузки. Где-то это пофигу а где-то не очень. Пример: пользователи очень бесятся если их зомбоящик грузится 20 секунд, как виндус экспи или бабушкин ламповый.
> Пример: пользователи очень бесятся если их
> зомбоящик грузится 20 секунд, как виндус экспи или бабушкин ламповый.Так производителям то всё равно пофигу :)
Забавно ведь фотоаппарат от nikon ( древний D90 ) за 0.5 сек ( условно, на самом деле и быстрее ) успевает проснуться, сфокусироваться, сфотографировать первично обработать и отобразить фотографию на экране, а какой-нибудь LG 9xx серии даже подсветку включить не успевает :)
> ИМХО - как раз наоборот - таким и должен быть любой нормальный фреймворкКутеводы вообще зря затеяли все эти quick, script и qml. Тормозной вебни и жабы и без них хватало и теперь лично я избегаю кутевые программы потому что они жирные и тормозят почти как ява.
>> ИМХО - как раз наоборот - таким и должен быть любой нормальный фреймворк
> Кутеводы вообще зря затеяли все эти quick, script и qml. Тормозной вебни
> и жабы и без них хватало и теперь лично я избегаю
> кутевые программы потому что они жирные и тормозят почти как ява.Тулкитофобы должны страдать!
> тормозят почти как явапрувы-то будут, трепло?
Часы с кутями - прям мечта.
Они занимаются тем, чем должен заниматься компилятор (ну там dead code elimination, link-time optimization), или мне показалось?
Для того, что бы работал dead code elimination, нужно что бы исходники изначально не вызывали "тяжелые" функции без крайней необходимости, либо они подменялись "заглушками". Да и #ifdef, как средство отключения дополнительного функционала, ничто не заменит.
Недавно связался с Qt4, посматриваю на 5. Объясните почему нет обновления версии Вебкита(версия 2). И будет ли оно(т.е он вебкит версии 5..), и с чем это связано(необновление вебкита)?
> Недавно связался с Qt4, посматриваю на 5. Объясните почему нет обновления версии
> Вебкита(версия 2). И будет ли оно(т.е он вебкит версии 5..), и
> с чем это связано(необновление вебкита)?Он есть, называется QtWebEngine.
>> Недавно связался с Qt4, посматриваю на 5. Объясните почему нет обновления версии
>> Вебкита(версия 2). И будет ли оно(т.е он вебкит версии 5..), и
>> с чем это связано(необновление вебкита)?
> Он есть, называется QtWebEngine.QtWebEngine базируется на chromium, а не на вебките
Обновления Qt WebKit не будет, так как от него отказались (https://blog.qt.io/blog/2013/09/12/introducing-the-qt-webengine/) в пользу Qt WebEngine.
Когда разработчики GTK решили поменять нумерацию, на них смотрели как на не нормальных. Когда разработчики Qt делают 100500 велосипед для автомобилей, сенсорных экранов, урезанный, их хвалят. Где логика?
> Когда разработчики GTK решили поменять нумерацию, на них смотрели как на не
> нормальных. Когда разработчики Qt делают 100500 велосипед для автомобилей, сенсорных экранов,
> урезанный, их хвалят. Где логика?У Qt отродясь было много версий под различные платформы.
GTK не хвалят, потому что те постоянно ломают обратную совместимость, в отличие от Qt.
Новости не читал?
Я так понимаю, список свойств Qt Lite надо читать как список недостатков Qt? И я что-то не вижу особых откровений - всё перечисленное известно любому проектировщику библиотек. Значит всё это время Qt был раздутой фуфлыжкой? Появление Qt Lite это только подтверждает.
Следующий проект Qt None, еще урезаннее!