En lugar de alentar a los desarrolladores de Rust a comprometerse con Cargo.lock para paquetes que contienen binarios pero no bibliotecas, el equipo de Rust Cargo ahora recomienda que los desarrolladores hagan lo mejor para su proyecto. Este cambio de dirección por parte del equipo detrás del administrador de paquetes Rust puede explicarse por el hecho de que el lenguaje se está generalizando cada vez más. Un archivo Cargo.lock está destinado a describir el estado de un proyecto una vez que se construye la compilación. Al recomendar que las personas hagan lo mejor para el proyecto, el equipo siempre sugiere comenzar desde el compromiso de Cargo.lock para tomar su decisión. El nuevo comando cargo ya no ignorará Cargo.lock para las bibliotecas.

El equipo de Cargo fomenta las pruebas periódicas con las dependencias más recientes. En un boletín publicado el 29 de agosto, el equipo de Rust dijo que las antiguas pautas garantizaban que las bibliotecas probaran sus últimas dependencias, lo que ayudó a mantener un alto nivel de calidad en el ecosistema de paquetes de Rust al garantizar que los problemas, especialmente la compatibilidad con versiones anteriores, se resolvieran rápidamente. . El equipo cree que estas prácticas han ayudado a promover una “cultura de calidad” en el ecosistema naciente.

Algunas desventajas persisten

Pero también existen algunas desventajas. Por ejemplo, eliminar el historial del código base hace que sea más difícil para quienes mantienen el código encontrar la causa raíz de un error. Además, los contribuyentes corren el riesgo de verse confundidos por una integración continua (CI) poco confiable cuando se elimina una dependencia o una nueva versión tiene un error.

Desde la redacción de esta guía, Rust ya no es un lenguaje reservado para los primeros usuarios, sino que se ha convertido en un lenguaje convencional. Se debe tener en cuenta la experiencia de incorporación de los nuevos desarrolladores de Rust. Una adopción más amplia también significa que no siempre es práctico asumir que todos están usando la última versión de Rust. Además, debido al ecosistema más amplio, la integración continua de CI es más fácil de configurar y mantener. Productos como Dependabot y Renovate han proporcionado otras opciones más allá del control de versiones ignorando Cargo.lock para probar otras dependencias. El equipo de Cargo ahora cree que es mejor darles a los desarrolladores la opción y al mismo tiempo brindarles la información que necesitan para tomar una decisión. Pueden dar su opinión sobre esta política en GitHub o contactar al equipo de Cargo en Zulip.