Versió del llenguatge de programació Rust 1.37

publicat llançament del llenguatge de programació del sistema Rovell 1.37, fundada pel projecte Mozilla. El llenguatge se centra en la seguretat de la memòria, proporciona una gestió automàtica de la memòria i proporciona un mitjà per aconseguir un paral·lelisme de tasques elevat sense utilitzar un col·lector d'escombraries o temps d'execució.

La gestió automàtica de la memòria de Rust estalvia al desenvolupador de manipular punters i protegeix dels problemes derivats de la manipulació de la memòria de baix nivell, com ara accedir a una àrea de memòria després d'haver-se alliberat, desreferenciar punters nuls, desbordaments de memòria intermèdia, etc. Per distribuir biblioteques, assegurar el muntatge i gestionar les dependències, el projecte desenvolupa un gestor de paquets Càrrega, que us permet obtenir les biblioteques que necessiteu per al programa amb un sol clic. S'admet un dipòsit per allotjar biblioteques caixes.io.

El principal innovacions:

  • Al compilador rustc assegurat suport per a l'optimització basada en els resultats del perfil de codi (PGO, Optimització guiada per perfils),
    permetent generar un codi més òptim a partir de l'anàlisi de les estadístiques acumulades durant l'execució del programa. Per generar un perfil, es proporciona el senyalador "-C profile-generate" i per utilitzar el perfil durant el muntatge: "-C profile-use" (inicialment, el programa s'assembla amb el primer indicador, s'executa i després de crear-lo). el perfil, es torna a muntar amb la segona bandera);

  • Quan s'executa l'ordre "cargo run", que és convenient utilitzar-lo per provar ràpidament les aplicacions de la consola, s'ha afegit la possibilitat de seleccionar automàticament un fitxer executable per executar-se si hi ha diversos fitxers executables al paquet. El fitxer per defecte que s'ha d'executar es determina mitjançant la directiva d'execució predeterminada a la secció [paquet] amb els paràmetres del paquet, la qual cosa us permet evitar especificar explícitament el nom del fitxer mitjançant el senyalador "-bin" cada vegada que executeu "execució de càrrega";
  • L'ordre "venedor de càrrega", prèviament subministrat com a paquet separat. L'ordre us permet organitzar el treball amb una còpia local de dependències: després d'executar "venedor de càrrega", tots els codis font de les dependències del projecte es descarreguen de crates.io a un directori local, que es pot utilitzar per treballar sense accedir a les caixes. io (després d'executar l'ordre, es mostra una pista per canviar la configuració per utilitzar el directori per a les compilacions). Aquesta característica ja s'utilitza per organitzar el lliurament del compilador rustc amb l'empaquetament de totes les dependències en un arxiu amb el llançament;
  • Ara és possible crear enllaços a opcions d'enumeració mitjançant àlies de tipus (per exemple, al cos de la funció "fn increment_or_zero(x: ByteOption) podeu especificar "ByteOption::None => 0"), escriviu construccions de càlcul (‹ MyType‹.. ››::option => N) o accessos automàtics (en els blocs c &self podeu especificar “Self::Quarter => 25”);
  • S'ha afegit la possibilitat de crear constants sense nom a les macros. En lloc de definir el nom de l'element a "const", ara podeu utilitzar el caràcter "_" per seleccionar dinàmicament un identificador que no es repeteixi, evitant conflictes de nom quan torneu a cridar la macro;
  • S'ha afegit la possibilitat d'utilitzar l'atribut "#[repr(align(N))" amb enumeracions utilitzant una sintaxi similar a la definició d'una estructura AlignN‹T› amb alineació i després utilitzant AlignN‹MyEnum›;
  • Una nova part de l'API s'ha mogut a la categoria estable, incloent BufReader::buffer, BufWriter::buffer i
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opció::xor
    {i,u}{8,16,64,128,mida}::bits_invertits, Embolcall::bits_invertits i
    slice::copiar_dins.

A més, es pot assenyalar inici de la prova projecte Async-std, que ofereix una variant asíncrona de la biblioteca estàndard Rust (un port de la biblioteca std, en què totes les interfícies s'ofereixen en una versió asíncrona i estan llestes per utilitzar-se amb la sintaxi async/wait).

Font: opennet.ru

Afegeix comentari