Linguaxe de programación Rust versión 1.68

Publicouse o lanzamento da linguaxe de programación de propósito xeral Rust 1.68, 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 e o repositorio crates.io estabilizaron o soporte para o protocolo Sparse, que define unha nova forma de traballar cun índice que reflicte as versións dispoñibles de todos os paquetes existentes no repositorio. O novo protocolo permítelle aumentar significativamente a velocidade de traballo con crates.io e resolver problemas de escalado cun maior crecemento no número de paquetes no repositorio.

    Para reducir os atrasos causados ​​pola descarga dun índice completo, Sparse en lugar de acceder ao índice usando Git implica a descarga directa a través de HTTPS só os datos de índice necesarios, cubrindo as dependencias dun proxecto en particular. Utilízase un novo servizo, index.crates.io, para proporcionar datos de índice. Por defecto, está previsto que o novo protocolo se use na rama Rust 1.70, e antes, para habilitalo, pode establecer a variable de ambiente "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=esparse" ou engadir o parámetro "protocolo =" ao "[rexistros. crates-io]" do ficheiro .cargo/config.toml 'esparso'.

  • Engadiuse a macro “pin!”, que permite crear unha estrutura Pin<&mut T> a partir da expresión “T” con fixación local do seu estado (a diferenza de Box::pin, non asigna memoria no montón, senón que se une. a nivel de pila).
  • Propúxose un manejador de erros de asignación de memoria predeterminado, usado cando se usa o paquete estándar alloc. As aplicacións que só activan alloc (sen std) agora chamarán ao manejador "panic!" cando falla a asignación de memoria, que se pode interceptar opcionalmente usando "#[panic_handler]". Os programas que usan a biblioteca std continuarán imprimindo información de erro en stderr e fallarán.
  • Unha nova parte da API trasladouse á categoría de estable, incluíndo os métodos e implementacións de trazos estabilizados:
    • {core,std}::pin::pin!
    • impl De para {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut para PathBuf
  • O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase na función VecDeque::new.
  • Para traballar na plataforma Android, agora é necesario polo menos NDK r25 (API 19), é dicir. A versión mínima compatible de Android elevouse a 4.4 (KitKat).
  • O terceiro nivel de soporte implementouse para a plataforma Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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