Se ha publicado la próxima versión estable del compilador y estándar del lenguaje Rust.
Actualización de la biblioteca musl incorporada a la versión 1.2.5
Varias plataformas de destino *-linux-musl ahora incluyen musl 1.2.5. Esto afecta principalmente a las compilaciones estáticas de musl para x86_64, aarch64 y powerpc64le, que anteriormente usaban la versión 1.2.3. Esta actualización incluye Varias correcciones y mejoras, así como un cambio “irrumpiente” que afecta al ecosistema Rust.
El principal motivo de esta actualización fueron las mejoras significativas en el solucionador DNS musl, introducidas en la versión 1.2.4 y perfeccionadas en la 1.2.5. Al usar musl para enlaces estáticos, esto debería mejorar la fiabilidad de las funciones de red en binarios portátiles de Linux, especialmente al trabajar con registros DNS de gran tamaño y servidores de nombres recursivos.
Sin embargo, la versión 1.2.4 también contiene cambio crítico: Eliminación de varios símbolos de compatibilidad obsoletos utilizados por el paquete libc en GitHub. Solución para este problema. Se lanzó en libc 0.2.146 en junio de 2023 (hace 2,5 años).y creemos que se ha extendido lo suficiente como para que podamos realizar cambios en las plataformas de destino de Rust.
Permitir que el asignador global utilice TLS
Rust 1.93 ajusta el funcionamiento interno de la biblioteca estándar, permitiendo que los asignadores globales escritos en Rust utilicen std::thread_local! y std::thread::current sin el riesgo de reentrada al usar el asignador del sistema. Puede encontrar más información en la documentación de la biblioteca estándar de Rust.
¡Atributos cfg en líneas asm!
Anteriormente, si partes individuales de una sección de ensamblaje en línea requerían compilación cfg condicional, era necesario duplicar todo el bloque asm!. En la versión 1.93, el atributo cfg se puede aplicar a instrucciones individuales dentro del bloque:
asm!( // o global_asm! o naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // ... #[cfg(target_feature = "sse2")] a = const 123, // solo se usa en sse2 );
Las siguientes API se han movido a la categoría estable:
<[QuizásUninit ]>::assume_init_drop <[QuizásUninit ]>::assume_init_ref` <[QuizásUninit ]>::assume_init_mut` <[QuizásUninit ]>::escribir_copia_de_la_rebanada` <[MaybeUninit ]>::escribir_clon_de_rebanada` String::en_partes_sin_proceder` Vec::en_partes_sin_proceder` ::neg_sin_marcar` ::shl_sin marcar` ::shr_sin marcar` ::shl_sin marcar` ::unchecked_shr` <[T]>::como_matriz` <[T]>::como_matriz_mut` <*const [T]>::como_matriz` <*mut [T]>::como_matriz_mut` VecDeque::pop_front_if` VecDeque::pop_back_if` Duración::desde_nanos_u128` char::MAX_LEN_UTF8` char::MAX_LEN_UTF16` std::fmt::desde_fn` std::fmt::DesdeFn`
Fuente: linux.org.ru

