Iteración 1.78 de Óxido quien viene De reciente publicación incluye su cuota de novedades. Entre ellas, destacaremos la incorporación de compatibilidad con espacios de nombres para los atributos #diagnostic para influir en los mensajes del compilador. Estos se tratan como sugerencias que el compilador no está obligado a utilizar, explica el equipo de Rust. Además, proporcionar un diagnóstico que el compilador no reconoce no es un error. Esta característica está diseñada para permitir que el código fuente proporcione diagnósticos incluso si no son compatibles con todos los compiladores.

Otra característica de Rust 1.78 es la validación de condiciones previas no seguras. La biblioteca estándar de Rust tiene varias de ellas, pero históricamente solo estaban habilitadas en las versiones #[cfg(debug_assertions)] de la biblioteca para evitar afectar el rendimiento de la compilación. Dado que la biblioteca generalmente se compila y distribuye en modo de lanzamiento, la mayoría de los desarrolladores de Rust no ejecutaron estas comprobaciones. Con Rust 1.78, la condición para estas validaciones se retrasa hasta la generación del código, por lo que se verificarán según la configuración del usuario para las afirmaciones de depuración, que están habilitadas de forma predeterminada en las compilaciones de depuración y prueba. Este cambio ayudará a identificar comportamiento indefinido en el código. Sin embargo, los detalles sobre la cantidad de afirmaciones verificadas no son estables.

Una alineación de punteros y sectores

La realineación determinista también está presente en Rust 1.78. La biblioteca tiene funciones que cambian la alineación de punteros y sectores, pero anteriormente tenían advertencias que dificultaban su uso en la práctica. Estas advertencias existían principalmente como una protección contra la evaluación constante, pero solo eran estables para el uso no constante. Ahora, se promete que tendrán un comportamiento consistente en tiempo de ejecución en función de las entradas reales.

Rust 1.78 también estabiliza una serie de API, aumenta su requisito mínimo para Windows 10 para objetivos como x_86-pc-windows-msvc y actualiza su LLVM integrado a LLVM 18. La última iteración del lenguaje sigue al lanzamiento del 21 de marzo de 1.77, que introdujo soporte para cadenas en C. También se lanzaron dos versiones puntuales, Rust 1.77.1, que deshabilitó el nuevo comportamiento de Cargo en Windows para objetivos que usan MSVC (Microsoft C y C++), y Rust 1.77.2, que corrigió una vulnerabilidad.