Lanzamiento del lenguaje de programación Rust 1.55

Se ha publicado el lanzamiento del lenguaje de programación del sistema Rust 1.55, 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 centra en la seguridad de la memoria, proporciona administración automática de la memoria y proporciona los medios para lograr un alto paralelismo de tareas sin utilizar un recolector de basura o tiempo de ejecución (el tiempo de ejecución se reduce a la inicialización y el mantenimiento básicos de la biblioteca estándar).

La gestión automática de la memoria de Rust elimina errores al manipular punteros y protege contra problemas derivados de la manipulación de la memoria de bajo nivel, como el acceso a una región de memoria después de haber sido liberada, desreferencias de punteros nulos, desbordamientos de búfer, etc. Para distribuir bibliotecas, garantizar el ensamblaje y gestionar dependencias, el proyecto está desarrollando el administrador de paquetes Cargo. El repositorio crates.io es compatible con bibliotecas de alojamiento.

Principales novedades:

  • El administrador de paquetes Cargo tiene la capacidad de fusionar errores duplicados y advertencias que ocurren durante una compilación. Al ejecutar comandos como "cargo test" y "cargo check --all-targets" que dan como resultado múltiples compilaciones de un paquete con diferentes parámetros, ahora se muestra al usuario un resumen de la ocurrencia de un problema repetitivo, en lugar de mostrarlo. múltiples advertencias idénticas al compilar el mismo archivo repetidamente. $ cargo +1.55.0 check —all-targets Comprobando foo v0.1.0 advertencia: la función nunca se usa: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = nota: '#[warn(dead_code)]' activado de forma predeterminada advertencia: 'foo' (lib) generó 1 advertencia advertencia: 'foo' (prueba de lib) generó 1 advertencia (1 duplicado) Objetivo de desarrollo terminado [no optimizado + información de depuración] (s)en 0.84s
  • El código de análisis de punto flotante en la biblioteca estándar se ha movido para utilizar el algoritmo Eisel-Lemire, más rápido y preciso, que ha resuelto algunos problemas observados anteriormente con el redondeo y el análisis de números con un número muy grande de dígitos.
  • Se ha estabilizado la capacidad de especificar rangos no cerrados en plantillas (“X..” se interpreta como un rango que comienza con el valor X y termina con el valor máximo del tipo entero): coincide con x as u32 { 0 => println! (“¡cero!”), 1.. => println!(“¡número positivo!”), }
  • Variantes de error ampliadas cubiertas por std::io::ErrorKind (clasifica los errores en categorías como NotFound y WouldBlock). Anteriormente, los errores que no encajaban en las categorías existentes entraban en la categoría ErrorKind::Other, que también se utilizaba para errores en código de terceros. Ahora hay una categoría interna separada ErrorKind::Uncategorized para errores que no encajan en las categorías existentes, y la categoría ErrorKind::Other está limitada a errores que no ocurren en la biblioteca estándar (funciones de biblioteca estándar que devuelven io::Error ya no uso la categoría ErrorKind:: Otro).
  • 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:
    • Encuadernado::clonado
    • Drenaje::as_str
    • EnInnerError::into_error
    • EnInnerError::into_parts
    • QuizásUninit::assume_init_mut
    • QuizásUninit::assume_init_ref
    • QuizásUninit::escribir
    • matriz::mapa
    • operaciones::ControlFlow
    • x86::_prueba de bits
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • El atributo "const", que determina la posibilidad de usarlo en cualquier contexto en lugar de constantes, se utiliza en el método str::from_utf8_unchecked.
  • Se ha implementado el tercer nivel de soporte para la plataforma powerpc64le-unknown-freebsd. 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.

Fuente: opennet.ru

Añadir un comentario