Lanzamiento del lenguaje de programación Rust 1.62

Se ha lanzado el lenguaje de programación de propósito general Rust 1.62, fundado por el proyecto Mozilla pero ahora desarrollado bajo los auspicios de la organización independiente sin fines de lucro Rust Foundation. El lenguaje se enfoca en la seguridad de la memoria y proporciona los medios para lograr un alto paralelismo de trabajos mientras evita el uso de un recolector de basura y tiempo de ejecución (el tiempo de ejecución se reduce a la inicialización básica y el mantenimiento de la biblioteca estándar).

Los métodos de manejo de memoria de Rust salvan al desarrollador de errores al manipular punteros y protegen contra los problemas que surgen debido al manejo de memoria de bajo nivel, como acceder a un área de memoria después de haberla liberado, desreferenciar punteros nulos, desbordamientos de búfer, etc. Para distribuir bibliotecas, proporcionar compilaciones y administrar dependencias, el proyecto desarrolla el administrador de paquetes Cargo. El repositorio crates.io es compatible con el alojamiento de bibliotecas.

La seguridad de la memoria se proporciona en Rust en tiempo de compilación a través de la verificación de referencias, el seguimiento de la propiedad de los objetos, el seguimiento de la vida útil de los objetos (alcances) y la evaluación de la corrección del acceso a la memoria durante la ejecución del código. Rust también brinda protección contra desbordamientos de enteros, requiere la inicialización obligatoria de los valores de las variables antes de su uso, maneja mejor los errores en la biblioteca estándar, aplica el concepto de referencias y variables inmutables de forma predeterminada, ofrece tipado estático fuerte para minimizar los errores lógicos.

Principales novedades:

  • El administrador de paquetes "cargo" ofrece el comando "agregar", que le permite agregar nuevas dependencias al manifiesto Cargo.toml o cambiar las dependencias existentes desde la línea de comando. El comando también le permite especificar características y versiones individuales, por ejemplo: cargo add serde —características derivan cargo add nom@5
  • Se agregó la capacidad de usar "#[derive(Default)]" con enumeraciones en las que la opción predeterminada se define usando el atributo "#[default]". #[derive(Predeterminado)] enumeración Quizás { #[predeterminado] Nada, Algo(T), }
  • En la plataforma Linux se utiliza una implementación más compacta y rápida del mecanismo de sincronización Mutex, basada en el uso de futex proporcionados por el kernel de Linux. A diferencia de la implementación utilizada anteriormente basada en la biblioteca pthreads, la nueva versión usa solo 5 bytes para almacenar el estado de Mutex en lugar de 40. De manera similar, los mecanismos de bloqueo Condvar y RwLock se han transferido a futex.
  • Se ha implementado un segundo nivel de soporte para la plataforma de destino x86_64-unknown-none, diseñado para generar archivos ejecutables que pueden funcionar sin un sistema operativo. Por ejemplo, la plataforma de destino especificada se puede utilizar al escribir componentes del kernel. El segundo nivel de soporte implica una garantía de montaje.
  • Se implementó el tercer nivel de soporte para las plataformas aarch64-pc-windows-gnullvm y x86_64-pc-windows-gnullvm. El tercer nivel implica soporte básico, pero sin pruebas automatizadas, publicación de compilaciones oficiales ni verificación de si el código se puede compilar.
  • Una nueva parte de la API se ha movido a la categoría de estable, incluidos los métodos y las implementaciones de rasgos que se han estabilizado:
    • bool::entonces_algunos
    • f32::total_cmp
    • f64::total_cmp
    • Entrada estándar::líneas
    • ventanas::CommandExt::raw_arg
    • implicar valor predeterminado para AssertUnwindSafe
    • De > para RC
    • De > para Arco<[u8]>
    • FusedIterator para EncodeWide

    Fuente: opennet.ru

Añadir un comentario