Rust 1.93

Se ha publicado la siguiente versión estable del compilador y estándar del lenguaje Rust.

Actualización de la biblioteca integrada musl a la versión 1.2.5

Las diversas plataformas objetivo *-linux-musl ahora se envían con musl 1.2.5. Esto aplica principalmente a las compilaciones estáticas de musl para x86_64, aarch64 y powerpc64le, que anteriormente utilizaban la versión 1.2.3. Esta actualización incluye varios arreglos y mejoras, así como un cambio 'rompedor' que afecta al ecosistema de Rust.

La principal motivación para esta actualización fueron las significativas mejoras en el resolvedor DNS de musl, presentadas en la versión 1.2.4 y perfeccionadas en 1.2.5. Cuando se utiliza musl para la vinculación estática, esto debería aumentar la fiabilidad de las funciones de red de los binarios portátiles de Linux, especialmente al trabajar con registros DNS grandes y servidores de nombres recursivos.

Sin embargo, la versión 1.2.4 también contiene un cambio crítico: la eliminación de varios símbolos obsoletos de compatibilidad utilizados por el crate libc en GitHub. La solución para esto fue lanzada en libc 0.2.146 ya en junio de 2023 (hace 2.5 años), y consideramos que se ha propagado lo suficiente como para que podamos realizar cambios en las plataformas objetivo de Rust.

Permitir que el asignador global use TLS

Rust 1.93 ajusta los mecanismos internos de la biblioteca estándar, permitiendo que los asignadores globales escritos en Rust utilicen std::thread_local! y std::thread::current sin riesgo de re-entrancia mediante el uso del asignador del sistema. Los detalles se pueden encontrar en la documentación de la biblioteca estándar de Rust.

Atributos cfg en las líneas asm!

Anteriormente, si partes individuales de la sección de ensamblado integrado requerían compilación condicional cfg, había que duplicar todo el bloque asm! en su totalidad. En la versión 1.93, el atributo cfg se puede aplicar a instrucciones individuales dentro del bloque:

asm!( \/\/ or global_asm! or naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", \/\/ … #[cfg(target_feature = "sse2")] a = const 123, \/\/ solo utilizado en sse2 );

Se ha trasladado a la categoría de API estable:

<[MaybeUninit]>::assume_init_drop <[MaybeUninit]>::assume_init_ref` <[MaybeUninit]>::assume_init_mut` <[MaybeUninit]>::write_copy_of_slice` <[MaybeUninit]>::write_clone_of_slice` String::into_raw_parts` Vec::into_raw_parts` ::unchecked_neg` ::unchecked_shl` ::unchecked_shr` ::unchecked_shl` ::unchecked_shr` ::as_array` ::as_array_mut` ::as_array` ::as_array_mut` VecDeque::pop_front_if` VecDeque::pop_back_if` Duration::from_nanos_u128` char::MAX_LEN_UTF8` char::MAX_LEN_UTF16` std::fmt::from_fn` std::fmt::FromFn`

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster