Linguaxe de programación Rust versión 1.55

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

  • O xestor de paquetes Cargo ten a capacidade de combinar erros e avisos duplicados que se producen durante unha compilación. Cando se executan comandos como "proba de carga" e "comprobación de carga --all-targets" que dan lugar a varias compilacións dun paquete con diferentes parámetros, agora móstrase ao usuario un resumo da aparición dun problema que se repite, en lugar de ser mostrado. varios avisos idénticos ao construír o mesmo de forma repetida. $ cargo +1.55.0 check —all-targets Comprobando foo v0.1.0 aviso: a función nunca se usa: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = nota: '#[warn(dead_code)]' activado por defecto aviso: 'foo' (lib) xerou 1 aviso aviso: 'foo' (proba de lib) xerou 1 aviso (1 duplicado) Desenvolvemento finalizado [non optimizado + debuginfo] destino (s) en 0.84 s
  • O código de análise de coma flotante na biblioteca estándar moveuse para utilizar o algoritmo de Eisel-Lemire máis rápido e preciso, que resolveu algúns problemas observados anteriormente co redondeo e análise de números con números moi grandes de díxitos.
  • Estabilizouse a capacidade de especificar intervalos non pechados en modelos ("X..." interprétase como un intervalo que comeza co valor X e remata co valor máximo do tipo enteiro): match x as u32 { 0 => println! ("cero!"), 1.. => println!("número positivo!"), }
  • Variantes de erro ampliadas cubertas por std::io::ErrorKind (clasifica os erros en categorías como NotFound e WouldBlock). Anteriormente, os erros que non encaixaban nas categorías existentes caían na categoría ErrorKind::Other, que tamén se utilizaba para os erros en código de terceiros. Agora hai unha categoría interna separada ErrorKind::Uncategorized para os erros que non encaixan nas categorías existentes, e a categoría ErrorKind::Other está limitada a erros que non se producen na biblioteca estándar (funcións da biblioteca estándar que devolven io::Error). xa non use a categoría ErrorKind:: Outro).
  • Unha nova parte da API trasladouse á categoría de estable, incluíndo os métodos e implementacións de trazos estabilizados:
    • Encadernado::clonado
    • Drenaxe::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • QuizaisUninit::assume_init_ref
    • QuizaisUninit::write
    • array::mapa
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase no método str::from_utf8_unchecked.
  • Implementouse o terceiro nivel de soporte para a plataforma powerpc64le-unknown-freebsd. 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