Lanzamiento del lenguaje de programación Rust 1.69

Se ha lanzado el lenguaje de programación de propósito general Rust 1.69, 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 implementa la detección de advertencias que se pueden resolver automáticamente y la salida de recomendaciones apropiadas para ejecutar "cargo fix" o "cargo clippy -fix". advertencia: importación no utilizada: 'std::hash::Hash' —> src/main.rs:1:5 | 1 | utilizar std::hash::Hash; | ^^^^^^^^^^^^^^^ | = nota: '#[warn(unused_imports)]' activado de forma predeterminada: 'foo' (bin "foo") generó 1 advertencia (ejecute 'cargo fix —bin "foo"' para aplicar 1 sugerencia)
  • Cargo ha agregado un resultado de recomendación para usar el comando "cargo add" al intentar instalar una biblioteca con el comando "cargo install".
  • Para reducir el tiempo de compilación, la inclusión de información de depuración en los scripts de compilación se ha detenido de forma predeterminada. Si los scripts de compilación se ejecutan correctamente, el cambio no generará diferencias visibles, pero si se producen fallas, el volcado de rastreo contendrá menos información. Para devolver el comportamiento anterior a Cargo.toml, debe agregar: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • 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:
    • CStr::desde_bytes_hasta_nul
    • núcleo::ffi::FromBytesUntilNulError
  • El atributo “const”, que determina la posibilidad de utilizarlo en cualquier contexto en lugar de constantes, se utiliza en las funciones:
    • DirecciónSocket::nuevo
    • DirecciónSocket::ip
    • DirecciónSocket::puerto
    • DirecciónSocket::is_ipv4
    • DirecciónSocket::is_ipv6
    • SocketAddrV4::nuevo
    • SocketAddrV4::ip
    • SocketAddrV4::puerto
    • SocketAddrV6::nuevo
    • SocketAddrV6::ip
    • SocketAddrV6::puerto
    • SocketAddrV6::información de flujo
    • SocketAddrV6::alcance_id
  • Se agregó la capacidad de usar indicadores de verdadero y falso en los argumentos del compilador.

Fuente: opennet.ru

Añadir un comentario