Linguaxe de programación Rust versión 1.52

Publicouse a versión da linguaxe de programación do sistema Rust 1.52, 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, proporciona unha xestión automática da memoria e proporciona os medios para conseguir un alto paralelismo de tarefas sen utilizar un colector de lixo ou tempo de execución (o tempo de execución redúcese á inicialización básica e ao mantemento da biblioteca estándar).

A xestión automática da memoria de Rust salva ao programador de erros ao manipular os punteiros e protexe contra problemas que xurdan debido á manipulación de memoria de baixo nivel, como acceder a unha área de memoria despois de que se liberase, 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.

Principais novidades:

  • Eliminouse a vinculación á orde de execución dos comandos "comprobación de carga" e "cargo clippy". Anteriormente, chamar "cargo clippy" despois de "cargo check" non iniciaba a utilidade clippy (linter) debido á falta de separación da caché para estes modos de verificación. Agora este problema está resolto e a orde na que se chaman "cargo clippy" e "cargo check" xa non importa.
  • Unha nova parte da API foi transferida á categoría estable, incluíndo os seguintes métodos:
    • Argumentos::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::punto_partición
    • str::rsplit_once
    • str::split_once
  • O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase nos métodos:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_minúsculas
    • char::eq_ignore_ascii_case
    • u8::a_ascii_maiúsculas
    • u8::a_ascii_minúsculas
    • u8::eq_ignore_ascii_case
  • Engadiuse a comprobación de pelusa unsafe_op_in_unsafe_fn para determinar se o código inseguro usado en funcións inseguras está enmarcado por bloques inseguros.
  • Permítese lanzar punteiros mutables a matrices en forma de punteiros ao tipo de elemento da matriz. let mut x: [usar; 2] = [0, 0]; deixe p = &mut x como *mut use; deixe p = &mut x as *const use;
  • Engadíronse 9 novos cheques a clippy (linter).
  • O xestor de paquetes de carga agora admite o campo "manifest_path" en JSON para paquetes. Engadiuse compatibilidade para especificar información de licenza en formato SPDX 3.11 ao repositorio crates.io.
  • Permítese especificar varios filtros cando se executan probas, por exemplo, executando "proba de carga - foo bar" executará todas as probas que coincidan coas máscaras "foo" e "bar".
  • O kit de ferramentas LLVM predeterminado actualizouse a LLVM 12.
  • Implementouse o terceiro nivel de soporte para as plataformas s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl e powerpc-unknown-openbsd. 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.

Fonte: opennet.ru

Engadir un comentario