Сообщение Re[5]: Окончательное решение ада зависимостей? от 08.05.2025 8:50
Изменено 08.05.2025 8:58 ·
Re[5]: Окончательное решение ада зависимостей?
Здравствуйте, Manticore, Вы писали:
M>·>А компоненты всегда в исходниках что-ли распространяются?
M>Ну в таком случае, конечно, придется контролировать самому, т.к. C ABI не подразумевает каких-либо метаданных. Тем не менее, несколько версий все равно можно подключить.
Неясно тогда какой же конкретно сабж решается. Несколько версий — ну фигня же. Статическая линковка уж пол века существует. В java — несколько класслоадеров и вперёд, тому же OSGi уже четверть века. Вот только ад это не решает, а лишь добавляет ещё один круг и ошибки вида expected "X", but found "X".
M>Хотя в расте бинарные зависимости это очень нишевая вещь, встречаются редко.
Я имею в виду обычные зависимости — crates. Они же не компилируются все каждый раз, верно?
Да и хуже того, ну обнаружил компилятор проблему, нарисовал тебе ошибку. Теперь тебе придётся разбираться что с чем не совместимо и как же это теперь решать и как собственно убедиться, что решение будет работать. И так при каждом минорном обновлении каждой зависимости.
M>·>Бардак в зависимостях может быть в каких-то либах между собой, а не в твоём проекте. Например, какой-нибудь фреймворк для логгирования может использоваться всеми либами. И каждая из них может быть скомпилена с разной версией логгера.
M>И что это меняет? Если это сорцы, компилятор точно так же проконтролирует.
Проконтролирует что именно? Каждая либа компилируется отдельно, в разное время, разными командами, деплоится. Потом у себя в проекте ты подключаешь несколько либ — и упс.
M>Если это скомпилированная либа, то бардак на совести того кто ее компилировал.
Именно. Т.е. никакого сабжа нет.
M>·>А компоненты всегда в исходниках что-ли распространяются?
M>Ну в таком случае, конечно, придется контролировать самому, т.к. C ABI не подразумевает каких-либо метаданных. Тем не менее, несколько версий все равно можно подключить.
Неясно тогда какой же конкретно сабж решается. Несколько версий — ну фигня же. Статическая линковка уж пол века существует. В java — несколько класслоадеров и вперёд, тому же OSGi уже четверть века. Вот только ад это не решает, а лишь добавляет ещё один круг и ошибки вида expected "X", but found "X".
M>Хотя в расте бинарные зависимости это очень нишевая вещь, встречаются редко.
Я имею в виду обычные зависимости — crates. Они же не компилируются все каждый раз, верно?
Да и хуже того, ну обнаружил компилятор проблему, нарисовал тебе ошибку. Теперь тебе придётся разбираться что с чем не совместимо и как же это теперь решать и как собственно убедиться, что решение будет работать. И так при каждом минорном обновлении каждой зависимости.
M>·>Бардак в зависимостях может быть в каких-то либах между собой, а не в твоём проекте. Например, какой-нибудь фреймворк для логгирования может использоваться всеми либами. И каждая из них может быть скомпилена с разной версией логгера.
M>И что это меняет? Если это сорцы, компилятор точно так же проконтролирует.
Проконтролирует что именно? Каждая либа компилируется отдельно, в разное время, разными командами, деплоится. Потом у себя в проекте ты подключаешь несколько либ — и упс.
M>Если это скомпилированная либа, то бардак на совести того кто ее компилировал.
Именно. Т.е. никакого сабжа нет.
Re[5]: Окончательное решение ада зависимостей?
Здравствуйте, Manticore, Вы писали:
M>·>А компоненты всегда в исходниках что-ли распространяются?
M>Ну в таком случае, конечно, придется контролировать самому, т.к. C ABI не подразумевает каких-либо метаданных. Тем не менее, несколько версий все равно можно подключить.
Неясно тогда какой же конкретно сабж решается. Несколько версий — ну фигня же. Статическая линковка уж пол века существует. В java — несколько класслоадеров и вперёд, тому же OSGi уже четверть века. Вот только ад это не решает, а лишь добавляет ещё один круг с ошибками вида expected "X", but found "X".
M>Хотя в расте бинарные зависимости это очень нишевая вещь, встречаются редко.
Я имею в виду обычные зависимости — crates. Они же не компилируются все каждый раз, верно?
Да и хуже того, ну обнаружил компилятор проблему, нарисовал тебе ошибку. Теперь тебе придётся разбираться что с чем не совместимо и как же это теперь решать и как собственно убедиться, что решение будет работать. И так при каждом минорном обновлении каждой зависимости.
M>·>Бардак в зависимостях может быть в каких-то либах между собой, а не в твоём проекте. Например, какой-нибудь фреймворк для логгирования может использоваться всеми либами. И каждая из них может быть скомпилена с разной версией логгера.
M>И что это меняет? Если это сорцы, компилятор точно так же проконтролирует.
Проконтролирует что именно? Каждая либа компилируется отдельно, в разное время, разными командами, деплоится. Потом у себя в проекте ты подключаешь несколько либ — и упс.
M>Если это скомпилированная либа, то бардак на совести того кто ее компилировал.
Именно. Т.е. никакого сабжа нет.
M>·>А компоненты всегда в исходниках что-ли распространяются?
M>Ну в таком случае, конечно, придется контролировать самому, т.к. C ABI не подразумевает каких-либо метаданных. Тем не менее, несколько версий все равно можно подключить.
Неясно тогда какой же конкретно сабж решается. Несколько версий — ну фигня же. Статическая линковка уж пол века существует. В java — несколько класслоадеров и вперёд, тому же OSGi уже четверть века. Вот только ад это не решает, а лишь добавляет ещё один круг с ошибками вида expected "X", but found "X".
M>Хотя в расте бинарные зависимости это очень нишевая вещь, встречаются редко.
Я имею в виду обычные зависимости — crates. Они же не компилируются все каждый раз, верно?
Да и хуже того, ну обнаружил компилятор проблему, нарисовал тебе ошибку. Теперь тебе придётся разбираться что с чем не совместимо и как же это теперь решать и как собственно убедиться, что решение будет работать. И так при каждом минорном обновлении каждой зависимости.
M>·>Бардак в зависимостях может быть в каких-то либах между собой, а не в твоём проекте. Например, какой-нибудь фреймворк для логгирования может использоваться всеми либами. И каждая из них может быть скомпилена с разной версией логгера.
M>И что это меняет? Если это сорцы, компилятор точно так же проконтролирует.
Проконтролирует что именно? Каждая либа компилируется отдельно, в разное время, разными командами, деплоится. Потом у себя в проекте ты подключаешь несколько либ — и упс.
M>Если это скомпилированная либа, то бардак на совести того кто ее компилировал.
Именно. Т.е. никакого сабжа нет.