Linguaxe de programación Rust versión 1.54

Publicouse a versión da linguaxe de programación do sistema Rust 1.54, 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:

  • Engadida a posibilidade de usar macros similares a funcións dentro dos atributos (macros de procedemento e macros creadas mediante a macro "macro_rules!"). Tales macros distínguense das funcións polo símbolo "!" despois do nome (macro!(...)) e substituíndo o texto fonte da macro en lugar de xerar unha chamada de función. Chamar macros dentro de atributos pode ser útil para incluír contido doutros ficheiros nos comentarios de documentación. Por exemplo, para inserir o contido do ficheiro README e o resultado da execución do script, pode especificar: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR") "), "/generated.rs" )] mod xerado;
  • Estabilizáronse as funcións integradas do compilador (intrínsecos) para a plataforma wasm32, permitindo o uso de instrucións SIMD en WebAssembly. A maioría das funcións, como v128_bitselect, están dispoñibles en modo "seguro", pero algunhas funcións que funcionan con punteiros (por exemplo, v128_load) seguen sendo "inseguras".
  • Volveu o uso predeterminado da compilación incremental, o que lle permite reconstruír só as partes modificadas do código, o que pode reducir significativamente o tempo que leva construír un proxecto ao recompilar despois de facer cambios menores. A compilación incremental desactivouse na versión 1.52.1 debido a erros ocultos que apareceron despois de engadir unha comprobación adicional para cargar datos da caché do disco.
  • Unha nova parte das API foi transferida á categoría estable, incluíndo a seguinte estabilizada:
      BTreeMap::into_keys
    • BTreeMap::en_valores
    • HashMap::into_keys
    • HashMap::into_values
    • arco::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::busca_binaria_por_clave
    • VecDeque::partition_point
  • Opcións engadidas a cargo-tree: “—prune " para eliminar un paquete da gráfica de dependencias, "-depth" para mostrar só elementos dun determinado nivel de aniñamento na árbore de dependencias, "-edges no-proc-macro" para ocultar as dependencias de macro procedimentais.

Fonte: opennet.ru

Engadir un comentario