Меня если честно напрягает то насколько сложно скомпилировать старую библиотеку новым растом...
Ситуация: одно из ломающих изменений которые мы (я?) хотим добавить в раст ломают старые версии библиотеки
Пофиксить оригинальную проблему было очень просто -- всего в паре мест добавить
А дальше началось...
CI падает потому что
CI падает потому что новая версия
CI опять падает, потому что варнинги в тестах/бенчах/за feature gate/...; окей, это тоже не сложно пофиксить, надо только использовать более длинное заклинание --
Только даже этого недостаточно, потому что часть варнингов в доктестах которые сгенерированны макросами, что делает спаны диагностик неправильными и
CI всё ещё падает.... но только с rust 1.59.0?.... и из-за того что
Проблема такая:
-
-
-
-
Попробовала сгенерировать lock файл новой версией cargo, а потом даунгрейнднуть зависимости (
Окей мейнтейнер согласился, давайте обновим до 1.85 которая исполозуется для main, т.к. она работает.
аааааааааааааааааааааааааааааааа
Скопировала
А теперь CI падает потому что clippy warning'и тоже надо пофиксить.
Один из варнингов это то что msrv ниже, чем версия стабилизации
... поднятие msrv добавило новые clippy warning'и..........
------- ВЫ НАХОДИТЕСЬ ЗДЕСЬ -------
Ситуация: одно из ломающих изменений которые мы (я?) хотим добавить в раст ломают старые версии библиотеки
redis (новые версии уже пропатчены). Так как много крейтов в crater'е зависят от старых версий redis, T-lang попросили сделать бэкпорты. У автора redis на это нет времени, так что занялась я.Пофиксить оригинальную проблему было очень просто -- всего в паре мест добавить
() =.А дальше началось...
CI падает потому что
cache github action слишком старый. Обновила.CI падает потому что новая версия
nightly имеет кучу варнингов которых небыло когда эта версия redis разрабатывалась. Потратила тучу времени пытаясь пофиксить руками (на всех 5-ти ветках для бэкпортов...), пока не догадалась что можно просто cargo fix использовать (упс).CI опять падает, потому что варнинги в тестах/бенчах/за feature gate/...; окей, это тоже не сложно пофиксить, надо только использовать более длинное заклинание --
cargo fix --tests --doc --benches --examples --all-features --allow-dirty.Только даже этого недостаточно, потому что часть варнингов в доктестах которые сгенерированны макросами, что делает спаны диагностик неправильными и
cargo fix не работает. Поправила руками (опять на всех 5-ти ветках).CI всё ещё падает.... но только с rust 1.59.0?.... и из-за того что
cargo не может найти версию ahash ^0.7.6?.........???Проблема такая:
-
redis зависит от ahash версии ^0.7.6-
ahash версии 0.7.0..=0.7.6 yanked-
ahash 0.7.7 имеет msrv 1.60.0 -
redis не закомитил lock файл, так что ничего не работает...Попробовала сгенерировать lock файл новой версией cargo, а потом даунгрейнднуть зависимости (
cargo update --precise ver crate) пока они не начнут работать с 1.59.0... проблема в том что даунгрейдить приходиться слишком много. особенные проблемы вызвали serde и js-sys т.к. они используют =ver зависимости, из-за которых даунгрейдить ещё сложнее. крейтов от BurntSushi нет на lib.rs из-за чего сложнее найти какие версии имеют какой msrv.... в итоге после нескольких часов сдалась и спросила у мейнтейнера redis можно ли просто бампнуть CI версию раста...Окей мейнтейнер согласился, давайте обновим до 1.85 которая исполозуется для main, т.к. она работает.
error: rustc 1.85.0 is not supported by the following packages:
icu_collections@2.2.0 requires rustc 1.86
icu_locale_core@2.2.0 requires rustc 1.86
icu_normalizer@2.2.0 requires rustc 1.86
icu_normalizer_data@2.2.0 requires rustc 1.86
icu_normalizer_data@2.2.0 requires rustc 1.86
icu_normalizer_data@2.2.0 requires rustc 1.86
icu_properties@2.2.0 requires rustc 1.86
icu_properties_data@2.2.0 requires rustc 1.86
icu_properties_data@2.2.0 requires rustc 1.86
icu_properties_data@2.2.0 requires rustc 1.86
icu_provider@2.2.0 requires rustc 1.86
idna_adapter@1.2.2 requires rustc 1.86
Either upgrade rustc or select compatible dependency versions with
`cargo update <name>@<current-ver> --precise <compatible-ver>`
where `<compatible-ver>` is the latest version supporting rustc 1.85.0
аааааааааааааааааааааааааааааааа
Скопировала
Cargo.lock с main'а, благо для новых версий redis он закомичен. Тесты проходят на 1.85, ура.А теперь CI падает потому что clippy warning'и тоже надо пофиксить.
Один из варнингов это то что msrv ниже, чем версия стабилизации
NulError, который используется где-то. Окей подняла msrv до 1.64.... поднятие msrv добавило новые clippy warning'и..........
------- ВЫ НАХОДИТЕСЬ ЗДЕСЬ -------
мне не нравится реальность
Меня если честно напрягает то насколько сложно скомпилировать старую библиотеку новым растом... Ситуация: одно из ломающих изменений которые мы (я?) хотим добавить в раст ломают старые версии библиотеки redis (новые версии уже пропатчены). Так как много крейтов…
в community discord подсказали что мб можно cargo с
resolver = "3" и resolver.incompatible-rust-version = "fallback" уговорить сделать правильный (или почти правильный) Cargo.lock, но я уже подняла версию msrv и скопировала Cargo.lock с мейна....
мне не нравится реальность
в community discord подсказали что мб можно cargo с resolver = "3" и resolver.incompatible-rust-version = "fallback" уговорить сделать правильный (или почти правильный) Cargo.lock, но я уже подняла версию msrv и скопировала Cargo.lock с мейна....
это реально работает, ваов.
1. добавляем
2. убираем существующий
3.
4. profit!
1. добавляем
resolver = "3" в Cargo.toml2. убираем существующий
Cargo.lock (если есть)3.
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS="fallback" cargo +nightly check4. profit!
one of the tests is only enabled with a certain combinations of features enabled and it breaks with never type stuff and I didn't see it because I only checked all/none features........
nvm, I had a typo in the workflow file 😭
redis never stops to поражать. сегодня проблема в том, что benchmark в CI компилирует
base чтобы сравнить в PR'ом... а base не компилируется из-за deny-by-default линта.американская подруга увидела этот мем у меня из-за плеча и спросила что это за слово (и почему там три в начале слова...)
мозг тормозил и я решила загуглить "засос", ожидая увидеть словарное определение...
мозг тормозил и я решила загуглить "засос", ожидая увидеть словарное определение...
мне не нравится реальность
waffle.pet
(конечно же я не могу без извращений, так что весь сайт это один написанный вручную html файл; включая картинки, шрифт, стили и вообще всё)