Linguaxe de programación Rust versión 1.37

publicado versión da linguaxe de programación do sistema Ferruxe 1.37, fundada polo proxecto Mozilla. A linguaxe céntrase na seguridade da memoria, ofrece xestión automática da memoria e proporciona un medio para lograr un alto paralelismo de tarefas sen utilizar un colector de lixo ou tempo de execución.

A xestión automática da memoria de Rust libera ao programador da manipulación do punteiro e protexe contra os problemas derivados da manipulación de memoria de baixo nivel, como accesos á memoria despois libres, desreferencias de punteiros nulos, desbordamentos do búfer e similares. Estase a desenvolver un xestor de paquetes para distribuír bibliotecas, garantir a montaxe e xestionar as dependencias do proxecto. Carga, o que lle permite obter as bibliotecas necesarias para o programa cun só clic. Admítese un repositorio para aloxar bibliotecas caixóns.io.

O principal innovacións:

  • No compilador rustc asegurado soporte para a optimización baseada nos resultados do perfil de código (PGO, Optimización guiada por perfil),
    o que lle permite xerar un código máis óptimo baseado na análise das estatísticas acumuladas durante a execución do programa. Para xerar un perfil, ofrécese a marca "-C profile-generate" e para usar o perfil durante a montaxe - "-C profile-use" (inicialmente, o programa está montado coa primeira marca, execútase e despois de crear o perfil, remontase coa segunda bandeira);

  • Ao executar o comando "cargo run", que é cómodo de usar para probar rapidamente as aplicacións da consola, engadiuse a posibilidade de seleccionar automaticamente un ficheiro executable para executar se hai varios ficheiros executables no paquete. O ficheiro predeterminado que se vai executar determínase a través da directiva de execución predeterminada na sección [paquete] cos parámetros do paquete, o que permite evitar especificar explícitamente o nome do ficheiro a través da bandeira "-bin" cada vez que executa "execución de carga";
  • O comando "vendedor de carga", previamente proporcionado como paquete separado. O comando permítelle organizar o traballo cunha copia local das dependencias: despois de executar "vendedor de carga", todos os códigos fonte das dependencias do proxecto descárganse de crates.io a un directorio local, que se pode usar para traballar sen acceder ás caixas. io (despois de executar o comando, móstrase unha suxestión para cambiar a configuración para usar o directorio para as compilacións). Esta característica xa se usa para organizar a entrega do compilador rustc con empaquetado de todas as dependencias nun arquivo coa versión;
  • Agora é posible crear ligazóns a opcións de enumeración usando alias de tipo (por exemplo, no corpo da función "fn increment_or_zero(x: ByteOption) podes especificar "ByteOption::None => 0"), escriba construcións de cálculo (‹ MyType‹.. ››::option => N) ou Self accesses (nos bloques c &self podes especificar “Self::Quarter => 25”);
  • Engadida a posibilidade de crear constantes sen nome nas macros. En lugar de definir o nome do elemento en "const", agora pode usar o carácter "_" para seleccionar de forma dinámica un identificador que non se repita, evitando conflitos de nomes ao volver chamar á macro;
  • Engadiuse a posibilidade de usar o atributo "#[repr(align(N))" con enumeracións usando unha sintaxe semellante á de definir unha estrutura AlignN‹T› con aliñamento e despois usar AlignN‹MyEnum›;
  • Unha nova parte da API moveuse á categoría estable, incluíndo o BufReader::buffer, o BufWriter::buffer e
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opción::xor
    {i,u}{8,16,64,128,tamaño}::bits_inversos, Envolver::bits_inversos e
    slice::copiar_dentro.

Ademais, pódese sinalar inicio da proba o proxecto Async-std, que ofrece unha variante asíncrona da biblioteca estándar Rust (un porto da biblioteca estándar, na que todas as interfaces se ofrecen nunha versión asíncrona e están listas para usar coa sintaxe async/wait).

Fonte: opennet.ru

Engadir un comentario