Possuo uma biblioteca em Rust com testes diários em execução no pipeline do github. Esses testes incluem a compilação MSRV (atualmente 1.69.0). Esses testes MSRV falham de vez em quando quando Cargo decide resolver algum pacote para uma versão não compatível com a versão ferrugem especificada.
Aqui está um exemplo mais recente em dois dias consecutivos (sem alterações de código entre eles):
- Dia X ( log de compilação ):
tokio v1.38.1
. Compila bem com 1.69.0 - Dia X+1 ( log de compilação ):
tokio v1.39.1
. Falha ao construir apesar detokio
especificar corretamenterust-version = 1.70.0
(obtido aqui , antes do lançamento aqui )
Mais uma vez, tokio v1.39.1
diz que requer rust-version = 1.70.0
. A minha Cargo.toml
especifica uma versão muito relaxada:
#...
[dev-dependencies]
tokio = { version = "1", features = ["full"] }
#...
Porque é uma dependência de desenvolvimento e não quero lidar com isso regularmente, basta usar a versão compatível mais recente em qualquer lugar.
Por enquanto eu fixei tokio
mais estritamente, mas o mesmo problema aconteceu no passado com dependencies
, que foi um problema maior com o qual não consegui lidar adequadamente (apenas esbarrei no MSRV devido a uma falha na resolução de profundidade).
Esta é uma biblioteca, então Cargo.lock
não posso aproveitar ( ref ) para lidar com isso. o que estou perdendo? Por que o resolvedor está cargo
trazendo versões de pacotes ignorando suas rust-version
restrições?
O resolvedor de dependência de carga não reconhece o MSRV, mas estão sendo tomadas medidas para oferecer suporte a isso .