Re[5]: [Хабр] День смерти стандартной библиотеки
От: B0FEE664  
Дата: 06.03.20 12:22
Оценка:
Здравствуйте, netch80, Вы писали:

N>Да, риск есть. Например, вдруг какая-то функция Windows перестанет работать. Ядро ведь для юзерленда оно, по сути, динамическая библиотека, с линковкой через сисколлы, или через библиотеки типа user32.dll.

N>И мы всё равно миримся с этим, потому что альтернативы нет, не тащить ведь полную ОС за своим приложением.
N>Где-то тащат (аплайансы типа банкоматов), но ты у себя ведь так не делаеш?

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

Таскают с собой все файлы не только для банкоматов. Есть целый набор инструментов, для решения этой задачи.

VMware ThinApp например:

Application Isolation
Eliminate application conflicts by isolating applications from each other and the underlying OS into a single executable file that can be easily deployed to many endpoints, independently or with App Volumes.

И каждый день — без права на ошибку...
Re[5]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.03.20 12:39
Оценка:
Здравствуйте, Skorodum, Вы писали:

Pzz>>Основной недостаток динамических библиотек — это то, что либо у тебя программа распостраняется вместе со всеми своими библиотеками, и тогда нет смысла делать их динамическими

S>Почему? Среди возможных причин: плагины и лицензии.

Я говорю про технические причины, конечно.

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

S>А где в реальности кроме линуха есть такое?

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

Специальное исключение — системные библиотеки и .Net runtime. Про системные библиотеки предполагается, что они в состоянии быть сами с собой совместимыми, .Net пытается заполнить твой диск под завязку многочисленными версиями рантайма, потому что полагаться на совместимость версий никто особо не рискует.

В принципе, это бардак.

Как устроена жизнь в макакосе, я особо не знаю, но подозреваю, что ближе к венде.
Re[6]: [Хабр] День смерти стандартной библиотеки
От: Skorodum Россия  
Дата: 06.03.20 13:05
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В венде сдались

Вроде никогда и не пытались.

Pzz>В принципе, это бардак.

И все уже привыкли (смайлик по вкусу)

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

Именно.
Re[6]: [Хабр] День смерти стандартной библиотеки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 06.03.20 13:26
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В венде сдались, и теперь программы сами приносят с собой все свои запчасти. Поэтому сколько у тебя в венде есть програм, столько у тебя есть копий sqlite, потому что все используют sqlite, и все приносят ее с собой. И половина програм приносит копию Qt. А у меня в линихе один экземпляр sqlite и один экземпляр Qt.


На самом деле у тебя до чёрта экземпляров Sqlite, потому что её очень много кто влинковал к себе цельным сишником. Но это исключение, её не просто легко так влинковать, её явно рекомендуют. А вот других таких очень мало.

Pzz>Специальное исключение — системные библиотеки и .Net runtime. Про системные библиотеки предполагается, что они в состоянии быть сами с собой совместимыми,


"Предполагается" — это мощно сказано вот и имеем, что оно якобы обеспечивается, потому что просто нет иного выхода, как верить MS.
The God is real, unless declared integer.
Re[5]: [Хабр] День смерти стандартной библиотеки
От: Ops Россия  
Дата: 06.03.20 13:53
Оценка:
Здравствуйте, netch80, Вы писали:

N>Насколько без предупреждения? Если речь о замене мажорной версии системы со всеми библиотеками — то при этой замене, когда идёт проблема, всегда предупреждают: надо пересобрать, у нас отменена libvasya, применяйте libpetya или тащите libvasya с собой.


И много пользователей твоего софта знают, что такое "пересобрать" и вообще хоть слово в этой белиберде понимают?

N>Если о минорах — то не должно несовместимо меняться.


А если софт пишут без всякого семвера?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.03.20 14:21
Оценка:
Здравствуйте, netch80, Вы писали:

Pzz>>Специальное исключение — системные библиотеки и .Net runtime. Про системные библиотеки предполагается, что они в состоянии быть сами с собой совместимыми,


N>"Предполагается" — это мощно сказано вот и имеем, что оно якобы обеспечивается, потому что просто нет иного выхода, как верить MS.


Как известно, "согласие есть продукт при полном непротивлении сторон". Легко, конечно, валить все на MS. Но мне кажется, граждане, которые сами нарушают контракт по имени "документированный API системы", путем использование недокоментированных особенностей этого API (а таких в вендовом мире чуть менее, чем все), им грех жаловаться, что очередной апдейт системы чего-нибудь им сломал.
Re[7]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.03.20 14:24
Оценка:
Здравствуйте, Skorodum, Вы писали:

Pzz>>В венде сдались

S>Вроде никогда и не пытались.

Я помню те дивные времена, когда каждая программа, которая чего-нибудь там делала с CD-писалкой, считала своим долгом принести соответствующую DLL-ку с собой, и плюхнуть ее на системное место. А поскольку все версии этой DLL-ки были слегка несовместимыми, то попутно она ломала все прочие программы, которые рассчитывали на определенную версию этой DLL-ки. Ну и плюс Windows Update добавлял свою долю неопределенности в этот процесс.

Pzz>>В принципе, это бардак.

S>И все уже привыкли (смайлик по вкусу)

Если вас трамвай задавит,
вы конечно вскрикнете,
раз задавит, два задавит,
а потом привыкнете.
Re[5]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.03.20 14:26
Оценка:
Здравствуйте, netch80, Вы писали:

Pzz>> Причем без предупреждения.


N>Насколько без предупреждения? Если речь о замене мажорной версии системы со всеми библиотеками — то при этой замене, когда идёт проблема, всегда предупреждают: надо пересобрать, у нас отменена libvasya, применяйте libpetya или тащите libvasya с собой.

N>Если о минорах — то не должно несовместимо меняться.
N>Но польза от закрытия дыр и багов в стандартных библиотеках до сих пор заметно превышала недостатки такой возможной несовместимости.

Я помню времена, когда программы, написанные на Qt, вдруг неожиданно начинали глючить при незначительной смене версии этой самой Qt. Причем именно глючить. Лучше бы они запускаться отказывались, желательно указав пальцем на причину.
Re[3]: [Хабр] День смерти стандартной библиотеки
От: 3V Россия  
Дата: 06.03.20 19:30
Оценка: +1
Здравствуйте, Zhendos, Вы писали:

Z>Но всякие трюки типа pimpl, который использует Qt для STL явно не подойдут.

Это не трюк он везде
Re[5]: [Хабр] День смерти стандартной библиотеки
От: Cyberax Марс  
Дата: 06.03.20 19:55
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Плагины, например, могут быть только в динамических.

Нынче модны плугины, работающие через какой-либо RPC.

N>Для динамики можно сделать отложенную загрузку.

Можно.

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

И в статике можно (fat binaries есть везде, кроме Линукса).
Sapienti sat!
Re[6]: [Хабр] День смерти стандартной библиотеки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.03.20 07:59
Оценка:
Здравствуйте, B0FEE664, Вы писали:

N>>Да, риск есть. Например, вдруг какая-то функция Windows перестанет работать. Ядро ведь для юзерленда оно, по сути, динамическая библиотека, с линковкой через сисколлы, или через библиотеки типа user32.dll.

N>>И мы всё равно миримся с этим, потому что альтернативы нет, не тащить ведь полную ОС за своим приложением.
N>>Где-то тащат (аплайансы типа банкоматов), но ты у себя ведь так не делаеш?

BFE>Вообще говоря, я одно время таскал с собой Virtual Box со слепками систем для работы. Т.е. под каждый Toolchain, для каждого отдельного target-девайса, есть свой слепок конкретной системы с инсталированными специфичными для таргета инструментами.


Это ты про разработку. Конечному юзеру ведь ты не предложишь так делать, пошлёт нафиг?
Ну разве что корпоратов заставить, слегка похрустев их косточками, им деваться некуда.

BFE>Таскают с собой все файлы не только для банкоматов. Есть целый набор инструментов, для решения этой задачи.


BFE>VMware ThinApp например:


Есть, да. Те же контейнеры, вид сбоку. ОС всё равно не заменяют. Ты не сможешь внутрь такого зверя впихнуть те же user32.dll, ntdll.dll и прочие — в каждой новой Windows даже сисколлы все перенумерованы заново по алфавиту — в отличие от Linux, где как Торвальдс стукнул кулаком по столу "We don't break userland!", так и сохраняются вызовы типа setuid16, которые уже 20 лет никому не нужны.

Просто граница в другом месте проведена.

По конструктиву: я хотел сказать ровно то, что качество сохранения зависимостей зависит только от желания авторов этих зависимостей (в случае дистрибутива в соавторы тут попадают и сборщики пакетов). Да, можно это лечить тасканием всего с собой, но только до определённой степени, и с известными проблемами (всё обновление берёшь на себя).
The God is real, unless declared integer.
Re[6]: [Хабр] День смерти стандартной библиотеки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.03.20 08:04
Оценка:
Здравствуйте, Ops, Вы писали:

N>>Насколько без предупреждения? Если речь о замене мажорной версии системы со всеми библиотеками — то при этой замене, когда идёт проблема, всегда предупреждают: надо пересобрать, у нас отменена libvasya, применяйте libpetya или тащите libvasya с собой.


Ops>И много пользователей твоего софта знают, что такое "пересобрать" и вообще хоть слово в этой белиберде понимают?


А при чём тут пользователи, когда это проблема поставщика целевой софтины? Не подменяй.

N>>Если о минорах — то не должно несовместимо меняться.


Ops>А если софт пишут без всякого семвера?


То таких бьют по наглой рыжей морде за первый случай и изгоняют из клуба за второй (ну или хотя бы забирают на себя упаковку). Но с приходом ELF symbol versioning необходимость жёсткой нумерации заметно упала.
Да, я читал рядом про Qt. Но и они достаточно осторожны, чуть дадут слабину — GNU стек их вытеснит.
The God is real, unless declared integer.
Re[8]: [Хабр] День смерти стандартной библиотеки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.03.20 08:08
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Специальное исключение — системные библиотеки и .Net runtime. Про системные библиотеки предполагается, что они в состоянии быть сами с собой совместимыми,


N>>"Предполагается" — это мощно сказано вот и имеем, что оно якобы обеспечивается, потому что просто нет иного выхода, как верить MS.


Pzz>Как известно, "согласие есть продукт при полном непротивлении сторон". Легко, конечно, валить все на MS. Но мне кажется, граждане, которые сами нарушают контракт по имени "документированный API системы", путем использование недокоментированных особенностей этого API (а таких в вендовом мире чуть менее, чем все), им грех жаловаться, что очередной апдейт системы чего-нибудь им сломал.


Ну вот как можно сочетать "грех жаловаться" и "чуть менее, чем все"?
The God is real, unless declared integer.
Re[6]: [Хабр] День смерти стандартной библиотеки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.03.20 08:11
Оценка: +1
Здравствуйте, Pzz, Вы писали:

N>>Насколько без предупреждения? Если речь о замене мажорной версии системы со всеми библиотеками — то при этой замене, когда идёт проблема, всегда предупреждают: надо пересобрать, у нас отменена libvasya, применяйте libpetya или тащите libvasya с собой.

N>>Если о минорах — то не должно несовместимо меняться.
N>>Но польза от закрытия дыр и багов в стандартных библиотеках до сих пор заметно превышала недостатки такой возможной несовместимости.

Pzz>Я помню времена, когда программы, написанные на Qt, вдруг неожиданно начинали глючить при незначительной смене версии этой самой Qt. Причем именно глючить. Лучше бы они запускаться отказывались, желательно указав пальцем на причину.


Давно это было? По-моему, я уже лет 10 не слышал таких чудес.
The God is real, unless declared integer.
Re[7]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 07.03.20 08:38
Оценка:
Здравствуйте, netch80, Вы писали:

Pzz>>Я помню времена, когда программы, написанные на Qt, вдруг неожиданно начинали глючить при незначительной смене версии этой самой Qt. Причем именно глючить. Лучше бы они запускаться отказывались, желательно указав пальцем на причину.


N>Давно это было? По-моему, я уже лет 10 не слышал таких чудес.


Ну давно, да. Но осадочек остался.
Re[9]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 07.03.20 08:39
Оценка:
Здравствуйте, netch80, Вы писали:

Pzz>>Как известно, "согласие есть продукт при полном непротивлении сторон". Легко, конечно, валить все на MS. Но мне кажется, граждане, которые сами нарушают контракт по имени "документированный API системы", путем использование недокоментированных особенностей этого API (а таких в вендовом мире чуть менее, чем все), им грех жаловаться, что очередной апдейт системы чего-нибудь им сломал.


N>Ну вот как можно сочетать "грех жаловаться" и "чуть менее, чем все"?


А что, по-твоему, если все воруют, то воровство уже и не преступление вовсе?
Re[7]: [Хабр] День смерти стандартной библиотеки
От: Pzz Россия https://github.com/alexpevzner
Дата: 07.03.20 08:42
Оценка:
Здравствуйте, netch80, Вы писали:

BFE>>Вообще говоря, я одно время таскал с собой Virtual Box со слепками систем для работы. Т.е. под каждый Toolchain, для каждого отдельного target-девайса, есть свой слепок конкретной системы с инсталированными специфичными для таргета инструментами.


N>Это ты про разработку. Конечному юзеру ведь ты не предложишь так делать, пошлёт нафиг?

N>Ну разве что корпоратов заставить, слегка похрустев их косточками, им деваться некуда.

Ну в принципе, эти новомодные snap'ы, в которые теперь предполагается упаковывать линуксные программы, это примерно оно и есть. Только в красивом фантике и с модным словом на этикетке.
Re[5]: [Хабр] День смерти стандартной библиотеки
От: smeeld  
Дата: 07.03.20 10:05
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>А где в реальности кроме линуха есть такое?


Это есть везде, но только не в линуксах и OСях, в которых запилили такие же пакетные менеджеры, как в линуксах. Только в линуксах ты можешь паковать свою прогу в пакет, указывая какую именно версию какой либы менеджер должен подтянуть в систему при установке пакета. В виндах такого и билзко нет, именно там проблема неработающих прог с разными версиями либ.
Re[6]: [Хабр] День смерти стандартной библиотеки
От: Skorodum Россия  
Дата: 09.03.20 08:25
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Это есть везде, но только не в линуксах и OСях, в которых запилили такие же пакетные менеджеры, как в линуксах. Только в линуксах ты можешь паковать свою прогу в пакет, указывая какую именно версию какой либы менеджер должен подтянуть в систему при установке пакета.

Где есть полноценные пакетные менеджеры с зависимостями и где пользователи устанавливают большую часть софта через эти менеджеры?

S>В виндах такого и билзко нет, именно там проблема неработающих прог с разными версиями либ.

В виндах такой проблемы вообще нет, потому что там всегда "все свое ношу с собой".
Re[7]: [Хабр] День смерти стандартной библиотеки
От: smeeld  
Дата: 09.03.20 11:23
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Где есть полноценные пакетные менеджеры с зависимостями


Во всех промышленных дистрах линукса, а также во всех БЗДях (pkgsrc).

>и где пользователи устанавливают большую часть софта через эти менеджеры?


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

>В виндах такой проблемы вообще нет, потому что там всегда "все свое ношу с собой".


Ясно. Самый тупой способ из всех существующих. Специально для дебилов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.