Окончательное решение ада зависимостей?
От: Shmj Ниоткуда  
Дата: 06.05.25 08:53
Оценка: :))) :)
Вроде пишут что в Rust решили:

В Rust с помощью Cargo можно одновременно использовать несколько версий одной и той же зависимости — без проблем и без танцев с бубном.


Но это не точно.

А что на счет других платформ?
=сначала спроси у GPT=
Re: Окончательное решение ада зависимостей?
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.05.25 09:05
Оценка:
Здравствуйте, Shmj, Вы писали:

S>

S>В Rust с помощью Cargo можно одновременно использовать несколько версий одной и той же зависимости — без проблем и без танцев с бубном.


S>Но это не точно.


А что будет, если компонент А хочет одну версию некоторой библиотеки, а компонент Б — другую. И при этом мы получаем через компонент А из этой библиотеки какой-то еейный объект, а потом через компонент Б передаём этот объект другой версии той же библиотеки. А они не совместимы по своему внутреннему мироустройству...

S>А что на счет других платформ?


Я так понимаю, в Rust и Go это сделано плюс-минус одинаково (конкретный синтаксис конкретных команд может немного различаться, но суть плюс-минус одна). Не берусь судить, кто был первопроходцем, но подозреваю, что Go.
Re[2]: Окончательное решение ада зависимостей?
От: Shmj Ниоткуда  
Дата: 06.05.25 09:15
Оценка: +1
Здравствуйте, Pzz, Вы писали:

S>>Но это не точно.


Pzz>А что будет, если компонент А хочет одну версию некоторой библиотеки, а компонент Б — другую. И при этом мы получаем через компонент А из этой библиотеки какой-то еейный объект, а потом через компонент Б передаём этот объект другой версии той же библиотеки. А они не совместимы по своему внутреннему мироустройству...


Ну в идеале — должны быть разные имена или пространства имен и одно к другому не будет каститься. Т.е. ручной кастинг нужен, как будто это два разных класса, пусть и часть названия и все поля совпадают.
=сначала спроси у GPT=
Re[3]: Окончательное решение ада зависимостей?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.05.25 10:03
Оценка:
Здравствуйте, Shmj, Вы писали:

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


Ну, то есть, всё равно ручками разруливать?
Маньяк Робокряк колесит по городу
Re: Окончательное решение ада зависимостей?
От: kov_serg Россия  
Дата: 06.05.25 10:48
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вроде пишут что в Rust решили:

Как обычно преувеличивают.

S>А что на счет других платформ?

Там еще хуже, обычно выглядит так делайте как хотите, вас никто не ограничивает (но только матом)
Re: Окончательное решение ада зависимостей?
От: Vzhyk2  
Дата: 06.05.25 11:48
Оценка: 1 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Вроде пишут что в Rust решили:


S>

S>В Rust с помощью Cargo можно одновременно использовать несколько версий одной и той же зависимости — без проблем и без танцев с бубном.

Т.е. добавили еще котлов и жара под котлами?
Re: Окончательное решение ада зависимостей?
От: Privalov  
Дата: 06.05.25 12:47
Оценка: :))
Здравствуйте, Shmj, Вы писали:

S>А что на счет других платформ?


Чатгопота с коллегами придёт — порядок наведёт.
Re: Окончательное решение ада зависимостей?
От: dsorokin Россия  
Дата: 06.05.25 14:03
Оценка: -1
Здравствуйте, Shmj, Вы писали:

S>Вроде пишут что в Rust решили:


S>

S>В Rust с помощью Cargo можно одновременно использовать несколько версий одной и той же зависимости — без проблем и без танцев с бубном.


S>Но это не точно.


S>А что на счет других платформ?


Танцы начнутся, когда вам закроют доступ к репозиторию, как это стало модно, под каким-нибудь выдуманным предлогом. Например, скажут, что у тебя глаза не того цвета
Re: Окончательное решение ада зависимостей?
От: σ  
Дата: 06.05.25 15:19
Оценка:
S>А что на счет других платформ?

dlmopen?
Отредактировано 06.05.2025 15:24 σ . Предыдущая версия .
Re[3]: Окончательное решение ада зависимостей?
От: · Великобритания  
Дата: 06.05.25 16:25
Оценка:
Здравствуйте, Shmj, Вы писали:

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

Да какой же это ад?.. Это же рай самый настоящий с единорогами! Ад — это когда поля совпадают, но не совсем и не все.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Окончательное решение ада зависимостей?
От: koenig  
Дата: 06.05.25 19:20
Оценка:
S>

S>В Rust с помощью Cargo можно одновременно использовать несколько версий одной и той же зависимости — без проблем и без танцев с бубном.


S>Но это не точно.


вот именно. кроме зависимостей в сорцах есть еще сторонние бинарные зависимости. последний раз когда я интересовался (давно) там с ними было вообще никак
Re[4]: Окончательное решение ада зависимостей?
От: sergii.p  
Дата: 06.05.25 19:33
Оценка:
Здравствуйте, Marty, Вы писали:

M>Ну, то есть, всё равно ручками разруливать?


в смысле? То есть вы подложили в коде большую свинью, компилятор вместо того чтобы промолчать и потащить эту свинью в релиз, вам говорит, что типы несовместимы, а вы ещё и недовольны? В С++ не надо ручками разруливать, компилятор автоматом всё сделает, но потом кровавыми геморройными мозолями в известном месте это надо будет разруливать.
Re[5]: Окончательное решение ада зависимостей?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.05.25 19:53
Оценка:
Здравствуйте, sergii.p, Вы писали:

M>>Ну, то есть, всё равно ручками разруливать?


SP>в смысле? То есть вы подложили в коде большую свинью, компилятор вместо того чтобы промолчать и потащить эту свинью в релиз, вам говорит, что типы несовместимы, а вы ещё и недовольны? В С++ не надо ручками разруливать, компилятор автоматом всё сделает, но потом кровавыми геморройными мозолями в известном месте это надо будет разруливать.


Большая часть плюсовых либ — хидер-онли. Если не хидер-онли, то обычно это тяжкое сишное наследие, и в серьёзных проектах нужную версию обычно сами собирают.

Это в языках, где тяп ляп, накидал, подтянул, и что-то даже работает, там наверное надо
Маньяк Робокряк колесит по городу
Re[2]: Окончательное решение ада зависимостей?
От: Manticore США http://github.com/fjarri
Дата: 06.05.25 20:04
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А что будет, если компонент А хочет одну версию некоторой библиотеки, а компонент Б — другую. И при этом мы получаем через компонент А из этой библиотеки какой-то еейный объект, а потом через компонент Б передаём этот объект другой версии той же библиотеки. А они не совместимы по своему внутреннему мироустройству...


Компилятор ругнется. Примерно так:
error[E0308]: mismatched types
  --> ucat/src/interface.rs:28:5
   |
28 |     iface.ips.iter().find(|ipn| ipn.is_ipv4())
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `ipnetwork::IpNetwork`, found a different enum `ipnetwork::IpNetwork`
   |
   = note: expected enum `std::option::Option<&ipnetwork::IpNetwork>` (enum `ipnetwork::IpNetwork`)
              found enum `std::option::Option<&ipnetwork::IpNetwork>` (enum `ipnetwork::IpNetwork`)
   = note: perhaps two different versions of crate `ipnetwork` are being used?

error: aborting due to previous error
Re[3]: Окончательное решение ада зависимостей?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.05.25 20:10
Оценка:
Здравствуйте, Manticore, Вы писали:

M>Компилятор ругнется. Примерно так:


И чего делать?
Маньяк Робокряк колесит по городу
Re[4]: Окончательное решение ада зависимостей?
От: Manticore США http://github.com/fjarri
Дата: 06.05.25 20:16
Оценка:
Здравствуйте, Marty, Вы писали:

M>И чего делать?


Разобраться, ошибка это или нет, и если нет, написать функцию-мигратор из одной версии в другую. У меня в одном рабочем проекте сейчас так, вовне дается объект из стабильной версии, а внутри используется пре-релиз новой версии, т.к. там нужная мне функциональность добавлена.
Re[2]: Окончательное решение ада зависимостей?
От: kov_serg Россия  
Дата: 06.05.25 20:49
Оценка:
Здравствуйте, koenig, Вы писали:

K>вот именно. кроме зависимостей в сорцах есть еще сторонние бинарные зависимости. последний раз когда я интересовался (давно) там с ними было вообще никак


Пусть будет это тут вобщем в rust много интересного и дальше будет только интереснее:
https://www.youtube.com/watch?v=bKyxOaP-mDg&amp;t=3120
Re[2]: Окончательное решение ада зависимостей?
От: Doom100500 Израиль  
Дата: 07.05.25 05:39
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А что будет, если компонент А хочет одну версию некоторой библиотеки, а компонент Б — другую.


Так это-же один в один описание node_modules
Спасибо за внимание
Re: Окончательное решение ада зависимостей?
От: amironov79  
Дата: 07.05.25 06:51
Оценка:
Здравствуйте, Shmj, Вы писали:

S>А что на счет других платформ?


В dotnet есть extern alias. Подойдет?
Re[3]: Окончательное решение ада зависимостей?
От: · Великобритания  
Дата: 07.05.25 09:08
Оценка:
Здравствуйте, Manticore, Вы писали:

Pzz>>А что будет, если компонент А хочет одну версию некоторой библиотеки, а компонент Б — другую. И при этом мы получаем через компонент А из этой библиотеки какой-то еейный объект, а потом через компонент Б передаём этот объект другой версии той же библиотеки. А они не совместимы по своему внутреннему мироустройству...

M>Компилятор ругнется.
А компоненты всегда в исходниках что-ли распространяются?
Бардак в зависимостях может быть в каких-то либах между собой, а не в твоём проекте. Например, какой-нибудь фреймворк для логгирования может использоваться всеми либами. И каждая из них может быть скомпилена с разной версией логгера.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.