Moho 1.96.0

El comunicado ha sido publicado Moho 1.96.0 — la última versión estable del lenguaje de programación Rust. La actualización ya está disponible. 28 mayo del año 2026Se puede instalar mediante el comando estándar rustup update stable. Los principales cambios incluyen nuevos tipos de rango en core::range, estabilización de las macros de coincidencia de patrones, optimización del comportamiento de compilación de WebAssembly y correcciones para dos vulnerabilidades en Cargo.

Cambios principales

  • Nuevos tipos de rango core::range::Range*.
    Se han estabilizado nuevos tipos de rango en la biblioteca estándar: core::range::Range, RangeFrom, RangeInclusive y sus iteradores asociados. A diferencia de los tipos antiguos de core::ops, los nuevos rangos no implementan Iterator directamente, sino que se convierten a iterador mediante IntoIterator. Esto permite que estos rangos sean copiables, lo cual resulta conveniente, por ejemplo, al almacenar un rango como campo de una estructura. Actualmente, la sintaxis como 0..1 crea los tipos de rango antiguos, pero está previsto migrarlos a los nuevos tipos en una futura versión del lenguaje.

  • Se añadieron assert_matches! y debug_assert_matches!.
    Las nuevas macros permiten comprobar que un valor coincide con un patrón determinado. El concepto es similar a `assert!(matches!(…))`, pero en caso de error, se imprime una representación de depuración del valor, lo que simplifica el diagnóstico. Estas macros no se añadieron a Prelude para evitar conflictos con bibliotecas de terceros populares, por lo que deben importarse explícitamente desde `core` o `std`.

  • Se ha modificado el comportamiento de los destinos de WebAssembly.
    Rust ya no pasa --allow-undefined al enlazador para las compilaciones de WebAssembly. Los símbolos indefinidos ahora se tratan como errores durante el enlace, en lugar de convertirse automáticamente en importaciones del módulo "env". Esto debería detectar antes los errores de compilación y los nombres de símbolos no válidos. El comportamiento anterior se puede revertir, si es necesario, usando RUSTFLAGS=-Clink-arg=--allow-undefined o especificando explícitamente el módulo wasm importado usando #[link(wasm_import_module = "env")].

  • Cargo ha recibido correcciones de seguridad.
    Rust 1.96.0 corrige dos vulnerabilidades que afectaban a los usuarios de registros de terceros. CVE-2026-5223 En relación con el manejo de enlaces simbólicos dentro de los archivos tar de crates: un paquete malicioso de un registro de terceros podría sobrescribir la caché de otro paquete del mismo registro. A partir de Rust 1.96.0, Cargo rechaza los archivos de crates que contienen enlaces simbólicos. CVE-2026-5222 Este problema está relacionado con la normalización de URL en el registro disperso y, en raras ocasiones, podría provocar que un token de Cargo se envíe a un registro malicioso. Según el equipo de Rust, los usuarios de crates.io no se ven afectados por estos problemas.

  • Cambios en el idioma.
    El lanzamiento incluye: Varias correcciones y mejoras menores: se permitió pasar metavariables expr de macros a cfg, se corrigió la conversión de tipos nunca en expresiones de tuplas, se corrigieron casos raros de sugerencias de inferencia de tipos incorrectas para argumentos de funciones, se agregó soporte para registros vectoriales s390x en ensamblador en línea y se volvió a permitir el uso de constantes ManuallyDrop como plantillas; esto corrige una regresión introducida en Rust 1.94.0.

  • Cambios en el compilador y las plataformas.
    para LinuxSe ha habilitado la función de relajación de enlaces para los destinos LoongArch, una optimización de enlaces que simplifica algunas transiciones y llamadas después de la implementación del código. Para riscv64gc-unknown-fuchsia, la configuración base se ha actualizado al perfil RVA22 con soporte para extensiones vectoriales.

  • Actualizaciones estándar de la biblioteca.
    Se ha añadido compatibilidad para iterar sobre rangos de enteros distintos de cero. También se ha corregido el manejo diferido de direcciones de host en SGX a través de ToSocketAddr, y se ha aclarado la definición de memoria "legible/escribible" en la documentación y los contratos internos: se ha eliminado el puntero nulo de la definición general y ahora las excepciones se especifican por separado para métodos específicos.

  • API estabilizadas.
    Entre las interfaces estabilizadas se encuentran assert_matches!, debug_assert_matches!, implementaciones de From para AssertUnwindSafe , LazyCell y LazyLock , así como nuevos tipos de rango e iteradores de core::range, incluidos Range, RangeFrom, RangeToInclusive y sus iteradores.

  • Cargo: Cambios en las dependencias y la documentación.
    Ahora, una dependencia puede especificar tanto un repositorio Git como un registro alternativo: la versión de Git se utilizará localmente y la versión del registro se utilizará durante la publicación, de forma similar al comportamiento de crates.io. También se ha añadido compatibilidad con target.'cfg(..)'.rustdocflags en la configuración de Cargo.

  • Rustdoc ahora gestiona la documentación con mayor precisión.
    Las notas de API obsoletas ahora se muestran como documentación normal, sin el procesamiento especial anterior mediante white-space: pre-wrap. Además, rustdoc ya no analiza missing_doc_code_examples para los elementos dentro de impl, y los métodos y las funciones asociadas ahora se muestran separados en la barra lateral de la documentación.

  • Posibles incompatibilidades.
    Esta versión contiene varios cambios que pueden aparecer en código no estándar: se ha corregido la disposición de algunos enumerados #[repr(Int)] en casos extremos y se han deshabilitado algunas conversiones de tamaño no útiles en Pin. Las compilaciones de WebAssembly ahora fallan debido a símbolos indefinidos, el atributo #![reexport_test_harness_main], estabilizado accidentalmente, ha sido nuevamente restringido, se ha eliminado la opción -Csoft-float y la versión mínima externa de LLVM se ha aumentado a 21. Para AVR, el tipo c_double se ha cambiado a f32, ya que los doubles de C son de 32 bits por defecto en estos destinos.

Fuente: linux.org.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster