Linguaxe de programación Rust versión 1.67

Publicouse o lanzamento da linguaxe de programación de propósito xeral Rust 1.67, fundada polo proxecto Mozilla, pero agora desenvolvida baixo os auspicios da organización independente sen ánimo de lucro Rust Foundation. A linguaxe céntrase na seguridade da memoria e proporciona os medios para conseguir un alto paralelismo de traballos evitando o uso dun colector de lixo e o tempo de execución (o tempo de execución redúcese á inicialización básica e ao mantemento da biblioteca estándar).

Os métodos de manexo da memoria de Rust salvan ao desenvolvedor de erros ao manipular os punteiros e protexen contra os problemas que xurdan debido ao manexo de memoria de baixo nivel, como acceder a unha área de memoria despois de liberarse, desreferenciar punteiros nulos, exceder o búfer, etc. Para distribuír bibliotecas, proporcionar compilacións e xestionar dependencias, o proxecto desenvolve o xestor de paquetes Cargo. O repositorio crates.io é compatible para hospedar bibliotecas.

A seguridade da memoria ofrécese en Rust no momento da compilación mediante a comprobación de referencias, o seguimento da propiedade do obxecto, o seguimento da vida útil dos obxectos (ámbitos) e a avaliación da corrección do acceso á memoria durante a execución do código. Rust tamén ofrece protección contra desbordamentos de enteiros, require a inicialización obrigatoria dos valores variables antes do seu uso, manexa mellor os erros na biblioteca estándar, aplica o concepto de referencias e variables inmutables por defecto, ofrece unha forte escritura estática para minimizar os erros lóxicos.

Principais novidades:

  • Para funcións asíncronas con Future::Output, agora é posible especificar anotacións "#[must_use]" que inclúen un aviso se se ignora o valor de retorno, o que axuda a identificar os erros causados ​​pola suposición de que a función cambiará os valores. en lugar de devolver un novo valor. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().wait; } aviso: saída non utilizada do futuro devolto por `bar` que debe usarse —> src/lib.rs:5:5 | 5 | barra().agardar; | ^^^^^^^^^^^^ | = nota: `#[warn(unused_must_use)]` activado por defecto
  • Actualizouse a implementación das colas FIFO std::sync::mpsc (multiprodutor single-consumer), que pasou a usar o módulo crossbeam-channel mantendo a API anterior. A nova implementación distínguese por resolver unha serie de problemas, un maior rendemento e un mantemento simplificado do código.
  • Unha nova parte da API trasladouse á categoría de estable, incluíndo os métodos e implementacións de trazos estabilizados:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {enteiro}::ilog
    • {enteiro}::ilog2
    • {enteiro}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • Non Zero*::BITS
  • O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase nas funcións:
    • char::from_u32
    • char::from_digit
    • char::a_díxito
    • core::char::from_u32
    • core::char::from_digit
  • Implementouse un terceiro nivel de soporte para usar Rust no núcleo Linux (linuxkernel), así como para Sony PlayStation 1 (mipsel-sony-psx), PowerPC con AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) plataformas qnx710, x86_64-pc-nto-qnx710). O terceiro nivel implica soporte básico, pero sen probas automatizadas, publicación de compilacións oficiais ou comprobar se o código se pode construír.

Ademais, podemos sinalar a publicación por parte de ARM de parches que permiten o uso da linguaxe Rust para desenvolver controladores e módulos do núcleo de Linux ensamblados para sistemas baseados na arquitectura AArch64.

Fonte: opennet.ru

Engadir un comentario