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.

★★★★★
Ответ на: комментарий от Zyy

А как надо правильно писать? Только консоль, только хардкор? Всё равно нативно Линукс больше ничего не поддерживает, вся графика – это опциональные надстройки с множеством несовместимых вариантов компонентов. А в Windows есть системная user32.dll.

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

А как нужно писать, чтобы у выше отписавшегося регистранта заработала игра? Будет забавно, если она работает в вайне под линуксом.

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

А как нужно писать, чтобы у выше отписавшегося регистранта заработала игра?

Читать документацию и делать в соответствии с ней, а не «раз, два и в продакшен». Никакие слои совместимости не помогут заставить работать весь когда либо написанный говнокод.

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

А что если документация неверна или неполна? https://github.com/doitsujin/dxvk/commit/fb3dbd8bcd4e7acdfe8c956633ec1b703a323afc

В дискорде dxvk можешь много интересного почитать.

Никакие слои совместимости не помогут

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

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

https://github.com/doitsujin/dxvk/commit/fb3dbd8bcd4e7acdfe8c956633ec1b703a323afc

Как твоя ссылка вообще относится к теме? Они не программируют на Windows API. Они реверс инженерят Windows API. В том числе недокументированные функции, которые прикладной программист вообще не должен вызывать, так как их нет. А если вызывал и потом они поменялись, то виноват только такой программист.

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

Красноглазые линуксоиды, несомненно. А так, нет конечно.

А что если документация неверна или неполна?

Если ты уверен, что ты прав, а документация нет, то отправляешь пул реквест. Я отправлял несколько раз, приняли без проблем.

У любой страницы, например, https://docs.microsoft.com/en-us/windows/win32/api/d3d11/nn-d3d11-id3d11device

вверху есть кнопка «edit». Тебя перекидывает на гитхаб, там редактируешь, потом приходит мейнтейнер, если ты прав, то принимает твой коммит. Всё.

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

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

нет конечно

Ах, если бы

(ссылка на код под BSD Zero Clause License)

(wine licence: LGPL 2.1 or any later version)

Они нарушают GPL чтоли? Пожалуйтесь тогда на них, может их репы удалят на гитхабе….

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

А это к чему?

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

Все dll, которые они пишут есть в последней версии Windows 10:

C:\Windows\SysWOW64\d3d9.dll
C:\Windows\SysWOW64\d3d8.dll
C:\Windows\SysWOW64\ddraw.dll

(возможно нужно доустановить DirectPlay, который нужен некоторым старым играм и не установлен по умолчанию: https://imgur.com/a/nZHgbqV)

Зачем они там, как не для совместимости со старыми программами?

Какие-то программы/игры не работают в Windows 10, но это на 99% ошибки в тех программах. Если нет, то писать в Microsoft, чтобы исправили соответствующую dll.

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

Обращайтесь в поддержку тех программ

Тех поддержка давно закрыта, это же старый софт.

вверху есть кнопка «edit»

Для старого бинарного софта это бесполезно.

Если нет, то писать в Microsoft

А они ретроактивно скажут что это ошибки в программе. Даже если на момент написания всё соответствовало документации, или документация не была полноценна. Зачем им париться.

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

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

ELF symbol versioning.

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

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

В libicu уже более 60 версий наклепали и всё несовместимы хотя бы из-за другого названия бинарника. И это официальная библиотека организации Unicode.

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

я думал такое только в старых версиях dx осталось

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

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

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