Linguaxe de programación Rust versión 1.62

Publicouse o lanzamento da linguaxe de programación de propósito xeral Rust 1.62, 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:

  • O xestor de paquetes "cargo" ofrece o comando "engadir", que lle permite engadir novas dependencias ao manifesto Cargo.toml ou cambiar as dependencias existentes desde a liña de comandos. O comando tamén permite especificar funcións e versións individuais, por exemplo: cargo add serde —características deriva carga add nom@5
  • Engadiuse a posibilidade de usar "#[derive(Default)]" con enumeracións nas que a opción predeterminada se define mediante o atributo "#[default]". #[derivar (predeterminado)] enumeración Quizais { #[predeterminado] Nada, Algo(T), }
  • Na plataforma Linux utilízase unha implementación máis compacta e rápida do mecanismo de sincronización Mutex, baseada no uso de futexes proporcionados polo núcleo de Linux. A diferenza da implementación usada anteriormente baseada na biblioteca pthreads, a nova versión usa só 5 bytes en lugar de 40 para almacenar o estado Mutex. Do mesmo xeito, os mecanismos de bloqueo Condvar e RwLock foron transferidos a futex.
  • Implementouse un segundo nivel de compatibilidade para a plataforma de destino x86_64-unknown-none, deseñado para xerar ficheiros executables que poden funcionar sen un sistema operativo. Por exemplo, a plataforma de destino especificada pódese usar ao escribir compoñentes do núcleo. O segundo nivel de apoio implica unha garantía de montaxe.
  • O terceiro nivel de soporte implementouse para as plataformas aarch64-pc-windows-gnullvm e x86_64-pc-windows-gnullvm. O terceiro nivel implica soporte básico, pero sen probas automatizadas, publicación de compilacións oficiais e verificación da compilabilidade do código.
  • Unha nova parte da API trasladouse á categoría de estable, incluíndo os métodos e implementacións de trazos estabilizados:
    • bool::entón_algúns
    • f32::cmp_total
    • f64::cmp_total
    • Stdin::liñas
    • windows::CommandExt::raw_arg
    • impl valor predeterminado para AssertUnwindSafe
    • Desde > para Rc
    • Desde > para Arc<[u8]>
    • FusedIterator para EncodeWide

    Fonte: opennet.ru

Engadir un comentario