llançament del llenguatge de programació del sistema , 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 , que us permet obtenir les biblioteques que necessiteu per al programa amb un sol clic. S'admet un dipòsit per allotjar biblioteques .
El principal :
- Al compilador rustc 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 . 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 projecte , 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
