Lanzamiento del lenguaje de programación Rust 1.68

Se ha lanzado el lenguaje de programación de propósito general Rust 1.68, 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 soporte para el protocolo Sparse se ha estabilizado en el administrador de paquetes Cargo y el repositorio crates.io, lo que define una nueva forma de trabajar con un índice que refleja las versiones disponibles de todos los paquetes existentes en el repositorio. El nuevo protocolo le permite aumentar significativamente la velocidad de trabajo con crates.io y resolver problemas de escalado con un aumento adicional en la cantidad de paquetes en el repositorio.

    Para reducir los retrasos que resultan de la descarga de un índice completo, Sparse, en lugar de acceder al índice mediante Git, descarga directamente a través de HTTPS solo los datos de índice necesarios, cubriendo las dependencias de un proyecto en particular. El nuevo servicio index.crates.io se utiliza para devolver datos de índice. De forma predeterminada, el nuevo protocolo está planificado para usarse en la rama Rust 1.70, y antes de eso, para habilitarlo, puede establecer la variable de entorno "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" o agregar el parámetro 'protocol = a "[registries.crates -io]" del archivo .cargo/config.toml "sparse"'.

  • Se agregó la macro "pin!", que permite crear una estructura Pin<&mut T> a partir de la expresión "T" con fijación local de su estado (a diferencia de Box::pin no asigna memoria en el montón, sino que se vincula a nivel de pila) .
  • Se propone un controlador de errores de asignación de memoria predeterminado, que se usa cuando se usa el paquete de asignación estándar. Las aplicaciones que solo habilitan alloc (sin std) ahora llamarán al controlador "panic!" en caso de fallas en la asignación de memoria, que opcionalmente se puede interceptar con "#[panic_handler]". Los programas que utilizan la biblioteca std seguirán imprimiendo información de error en stderr y fallarán.
  • 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:
    • {núcleo, estándar}::pin::pin!
    • desde para {f32,f64}
    • estándar::ruta::MAIN_SEPARATOR_STR
    • impl DerefMut para PathBuf
  • El atributo "const", que determina la posibilidad de usarlo en cualquier contexto en lugar de constantes, se usa en la función VecDeque::new.
  • La plataforma Android ahora requiere al menos NDK r25 (API 19), es decir, La versión mínima de Android admitida se elevó a 4.4 (KitKat).
  • Se ha implementado el tercer nivel de soporte para la plataforma Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). El tercer nivel implica soporte básico, pero sin pruebas automatizadas, publicación de compilaciones oficiales y verificación de la capacidad de compilar el código.

Fuente: opennet.ru

Añadir un comentario