LINUX.ORG.RU
ФорумTalks

Линус против динамической линковки библитек

 


0

1

пруф

Shared libraries are not a good thing in general. They add a lot of overhead in this case, but more importantly they also add lots of unnecessary dependencies and complexity, and almost no shared libraries are actually version-safe, so it adds absolutely zero upside.

Yes, it can save on disk use, but unless it’s some very core library used by a lot of things (ie particularly things like GUI libraries like gnome or Qt or similar), the disk savings are often not all that big - and disk is cheap. And the memory savings are often actually negative (again, unless it’s some big library that is typically used by lots of different programs at the same time).

I think people have this incorrect picture that «shared libraries are inherently good». They really really aren’t. They cause a lot of problems, and the advantage really should always be weighed against those (big) disadvantages.

Pretty much the only case shared libraries really make sense is for truly standardized system libraries that are everywhere, and are part of the base distro.

★★★★★

Драйверы на Хаскельле ему ещё не предлагали?

ratvier ()

там по ссылке-то не об этом. там gcc vs clang.

The gcc config isn't super-fast either, but there's a big 3x difference, so the clang case really is doing something extra wrong.

Many many moons ago the promise for clang was faster build speeds. That didn't turn out to be true, but can we please at least try to make them not painfully much slower?

p.s.

А я как-то писал на лоре, что вместо контейнеров типа flatpack всякие gimp лучше бы статически линковали. Так в меня какашки полетели.

crypt ★★★★★ ()
Последнее исправление: crypt (всего исправлений: 1)

Линус говорит всё правильно. Вообще в коммерческой разработке динамическая линковка уже сто лет как не используется.

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

А я как-то писал на лоре, что вместо контейнеров типа flatpack всякие gimp лучше бы статически линковали. Так в меня какашки полетели.

Конечно полетели. И сейчас полетят. Flatpak ценен не из-за библиотек, в основном. Тебе никто не мешает запаковать все нужные .so в любом пакет с твоей программой.

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

ценен не из-за библиотек

да что ты! а я и не знал!

И сейчас полетят.

угу. так может скажешь, почему лично ты готов кинуть? чем ценен флетпак.

crypt ★★★★★ ()
Последнее исправление: crypt (всего исправлений: 1)

желтизна

«Not a good thing in general» != «bad thing in general».

intelfx ★★★★★ ()

Да давно уже ясно, что пластмассовый мир победил свидетели Program Files победили.

FixingGunsInAir ()

Луддизм зохавал моск нашего Линуса! Бида-пичаль!

Harald ★★★★★ ()

Сдается мне, что ты, как журналюги обычно поступают, выдрал фразу из контекста. Потому что нужно быть совсем невменяемым, чтобы хаять динамическую линковку!

Последнее предложение - тому доказательство.

Eddy_Em ☆☆☆☆☆ ()
Последнее исправление: Eddy_Em (всего исправлений: 2)
Ответ на: комментарий от crypt

так может скажешь, почему лично ты готов кинуть?

Аватарка у тебя дурацкая!

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

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

Уж почти решили. Терабайтных NVMe SSD практически нет в продаже.

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

Аватарка у тебя дурацкая!

это после нее ты себе свою поставил? а я думал, я на все сильно регирую...

нормальный сэндбоксинг для линуксового софта

нормальный для домохозяек что ли? ну ок, про chroot не буду ничего писать. hateyoufeel уже новое поколение. chroot - это сложно.

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

нормальный для домохозяек что ли? ну ок, про chroot не буду ничего писать. hateyoufeel уже новое поколение. chroot - это сложно.

О! Вот ты мне тогда может объяснишь одну штуку. Откуда у лялексоедов такое сильное неприятие новых вещей и инструментов? Chroot — это довольно убогий инструмент, который не покрывает всех возможностей flatpak. И при этом он, да, довольно сложен в использовании и добавляет кучу проблем.

Так вот, почему ты считаешь, что chroot как-то кому-то вообще поможет, а flatpak — нет?

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

лялексоедов

это ты сейчас о себе в т.ч.?

Вот ты мне тогда может объяснишь одну штуку.

видимо, оттуда же, откуда ты достал слово «нормальный». что я должен под этим словом понимать, если я сто лет уже как изолирую приложения в chroot?

И при этом он, да, довольно сложен в использовании

напомни, о каких новых технологиях мы тобой переписывались, когда ты такой гордый заявил «о, типа ты даже этого не знаешь!». Это было continuous intergration, кажется? и вот после этого я читаю, что человеку _сложно_ использовать довольно банальную вещь.

в общем это все относительно, так что будь конкретнее.

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

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

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

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

ya-betmen ★★★★★ ()

Деменция у стареющего тролля.

Пусть своё ядро размножит по сотне запускаемых программ и следит за его версиями. Будет нескушно от отсутствия одного разделяемого ядра.

iZEN ★★★★★ ()
Ответ на: комментарий от ya-betmen

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

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

Да они же такие жирные, что по сути слинкованы статически. Те оставшиеся зависимости - капля в море. А с приходом раст в огнелис - там теперь ещё и одни и те же библиотеки несколько раз но разных версий слинкованы статически. Раст учит новым «хорошим» безопасным практикам.

gag ★★★★★ ()
Ответ на: Деменция у стареющего тролля. от iZEN

Деменция у стареющего тролля.

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

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

Нет, по сути это не чрут. Чрут может только доступ к ФС изолировать, и то не полностью, т.к. остаются дыры.

Flatpak работает через неймспейсы и это совершено другой механизм.

По поводу гимпа: я вообще не уверен, что можно сделать универсальную портируемую сборку сишного кода под Линукс, просто из-за убогости инструментов. Флатпак или снап здесь могут помочь, но по факту нужно сделать нормальный пакетный менеджер/сборочный инструментарий для C и C++.

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

я вообще не уверен, что можно сделать универсальную портируемую сборку сишного кода под Линукс

на линуксе бинарный код для x86-64 отличается от версии к версии дистрибутива? ELF иначе выглядит? я что-то пропустил?

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

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

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

по факту нужно сделать нормальный пакетный менеджер/сборочный инструментарий для C и C++.

ты бы еще на «адекватный» перешел.:( отвыкай ты от этого слова:( знаешь же, что так размножаются стандарты:( одному это нормально, другом то... бардак!:)

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

Ты ещё научные пакеты не видел: su2, pyarma (python armadillo).

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

Ещё б ты был не согласен. У тебя в rust и выбора то нет. При исправлении cve в одной зависимости всё пересобирать приходится.

grem ★★★★★ ()

Если зависимости не собирает мейнтейнер, тогда их собирает разработчик!!111 А у него и без этого есть чем заняться.

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

пусть в Спортлото пишет

Не. У них говночанже.орг есть.

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

Чрут тут вообще не нужен. Нужна изоляция отдельных путей для приложения. Ну вот как unveil() в OpenBSD делает. Ты же хочешь, чтобы тот же гимп имел доступ к фотографиям, но не к файлам с сохранёнными паролями, так?

То, что X — дыра, это одна из причин почему Wayland вообще пилят. Ясен хрен, что одного флатпака мало. Нужно вообще весь лялексовый юзерспейс перепиливать.

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

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

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

Ясен хрен, что одного флатпака мало.

да флатпака с его капабилитиз, openbsd с unveil не просто мало. если любое приложение в нем имеет доступ ко всем событиям X11, то... ты видел эту картинку, где в чистом поле стоит закрытая бронированная дверь обходи с любой стороны? мой доисторический chroot создается простым копированием файлА и в нем точно также нет доступа к файлам с сохраненными паролями. никакой разницы.

про wayland согласен.

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

Она у него только начинается!

Он его поднял? Точно?

grem ★★★★★ ()

Довольно спорное утверждение, но частично соглашусь

Вот есть допустим libpng, и в ней нашли уязвимость, которая например позволяет при открытии специально сформированной картинки выполнять произвольный код (такое уже вроде было). Те, кто слинкован статически будут курить бамбук / ждать обновления приложения. Динамически собранные приложения получат патченую libpng, проблема решена.

Собственно Линус пишет про то, что основные и широкоиспользуемые либы в динамике - это хорошо. А вот всякое специфическое, что используется 3,5 приложениями можно и статически собрать.

leg0las ★★★★★ ()

Оправдание помойки и неосиляторства проектирования стабильного API и ABI. Статическая линковка не нужна кроме crt[i|n].S.

В Обероне вообще каждый исходник компилируется в динамически-загружаемый модуль и ничего. Можно налету менять модули.

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

А вот всякое специфическое, что используется 3,5 приложениями можно и статически собрать.

Проблема в пакетном менеджере, а не в динамических библиотеках. В нормальном пакетном менеджере можно давать программам разные версии библиотек с одним и тем же названием.

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

«Стабильное API/ABI» невозможно в нынешних реалиях, это миф (к сожалению)

Но определенная стандартизация все-таки нужна, для ключевых компонентов

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

«Стабильное API/ABI» невозможно в нынешних реалиях, это миф (к сожалению)

В Windows это уже более 30 лет назад осилили, так что всё возможно.

X512 ★★★ ()

Одно из значительных преимуществ динамических библиотек в том, что их можно подменить, например для исправления бага. Часто бывает затруднительно пересобрать всю программу (Chromium например).

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

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

В Windows это уже более 30 лет назад осилили

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

Линуксу нужен набор стандартизированных библиотек, причем такой, чтобы у сообщества / корпораций не было вопросов к ним. До сих пор ведутся на фронтах срачи alsa vs pulse, sysv / openrc vs systemd, kde vs gnome, etc, etc.

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

Линуксу нужен набор стандартизированных библиотек

Не Линуксу, а конкретному дистрибутиву. Линукс – это ядро и пусть оно таким и остаётся. В том же Андроиде или роутерах эта стандартизация не особо нужна, она там своя.

alsa vs pulse

Некорректное сравнение, надо OSS vs ALSA или PulseAudio vs JACK vs PipeWire.

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

Пойди почитай как весело запускать старый софт на новых десяточках.

В Линуксе это в принципе не работает, имена динамических библиотек другие. Попробуйте запустить бинарник Qt3/GTK2 с библиотеками Qt4+/GTK3+. А в Windows обратная совместимость в целом работает. Версии в именах библиотек не нужны, вместо этого есть ELF symbol versioning.

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

Не Линуксу, а конкретному дистрибутиву

Ну я имел ввиду линуксу, подразумевая дистрибутивы.

Некорректное сравнение, надо OSS vs ALSA или PulseAudio vs JACK vs PipeWire

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

Я вот например не использую systemd и пульсу, потому что считаю systemd все значительно усложняет, а пульса просто достаточно крива by design (жду, когда запилят пайпвайр, может он станет именно «тем» стандартом

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

что вместо контейнеров типа flatpack всякие gimp лучше бы статически линковали. Так в меня какашки полетели.

Flatpack вроде бы умеет зависимости и динамические библиотеки.

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

Потому что нужно быть совсем невменяемым, чтобы хаять динамическую линковку!

В ранних UNIX’ах её вообще не было, вот где идеал.

X512 ★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)