Iniciar crates dependientes antes de que sus dependencias terminen la verificación de tipos. Cada crate espera a que los crates de los que depende sean completamente verificados, incluidos los cuerpos de funciones, antes de comenzar. No necesita esos cuerpos para verificar sus propios tipos. Compila contra la interfaz de la dependencia, los metadatos en su archivo .rmeta. Headstart hace que rustc escriba un archivo de metadatos temprano tan pronto como se verifica la interfaz, y hace que cargo inicie los dependientes basándose en él. Luego, los cuerpos de cada crate se verifican mientras los crates aguas abajo ya están compilando.
cargo check: los dependientes se ejecutan hasta completarse con metadatos tempranos. cargo build: los dependientes realizan todo su análisis con metadatos tempranos, luego esperan los metadatos completos de la dependencia antes de generar código. Mientras esperan, devuelven su ranura de trabajo. Si un cuerpo tiene un error, la compilación aún falla con ese error, con los mismos diagnósticos y estado de salida que hoy; solo las líneas de progreso y el orden entre crates de los mensajes JSON pueden diferir.
Los costos son trabajo aguas abajo que se descarta, errores reportados un poco más tarde y más memoria en uso a la vez (ver docs/design.md). En el frontend predeterminado de rustc, headstart hace que las compilaciones limpias de 13 proyectos reales (rust-analyzer, zed, bevy, lemmy, polars y otros) sean hasta un 54% más rápidas para cargo check, y hasta un 42% para cargo build. Ninguno es más lento. Con el frontend paralelo (-Zthreads=8), que cubre parte del mismo terreno, suma hasta un 25%. Esos son números de 16 núcleos.
Fuente: Hacker News · Resumido por HeadlinesBriefing