Izdanje Rust programskog jezika 1.37

Objavljeno izdanje sistemskog programskog jezika Rđa 1.37, osnovan projektom Mozilla. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža sredstva za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća ili vremena izvođenja.

Rustovo automatsko upravljanje memorijom oslobađa programera od manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što su pristupi memoriji nakon oslobađanja, dereferencije nultog pokazivača, prekoračenja međuspremnika i slično. Upravitelj paketa se razvija za distribuciju biblioteka, osiguranje sklapanja i upravljanje ovisnostima projekta. Naboj, što vam omogućuje da jednim klikom dobijete biblioteke potrebne za program. Repozitorij je podržan za host knjižnica sanduci.io.

Glavni inovacije:

  • U rustc kompajleru osiguran podrška za optimizaciju na temelju rezultata profiliranja koda (PGO, Profile-Guided Optimization),
    što vam omogućuje generiranje optimalnijeg koda na temelju analize statistike prikupljene tijekom izvođenja programa. Za generiranje profila dostupna je zastavica “-C profile-generate”, a za korištenje profila tijekom sastavljanja - “-C profile-use” (u početku se program sastavlja s prvom zastavom, radi okolo i nakon stvaranja profil, ponovno se sastavlja s drugom zastavicom);

  • Prilikom izvršavanja naredbe “cargo run”, koja je praktična za brzo testiranje konzolnih aplikacija, dodana je mogućnost automatskog odabira izvršne datoteke za pokretanje ako u paketu postoji nekoliko izvršnih datoteka. Zadana datoteka koja će se izvršiti određena je direktivom default-run u odjeljku [package] s parametrima paketa, što vam omogućuje da izbjegnete eksplicitno navođenje naziva datoteke kroz zastavu "-bin" svaki put kada pokrenete "cargo run";
  • Naredba "dobavljač tereta", prethodno isporučena kao zasebno pakiranje. Naredba vam omogućuje organiziranje rada s lokalnom kopijom ovisnosti - nakon izvršavanja "dobavljača tereta", svi izvorni kodovi ovisnosti projekta preuzimaju se s crates.io u lokalni direktorij, koji se zatim može koristiti za rad bez pristupa sanducima. io (nakon izvršavanja naredbe, prikazuje se savjet za promjenu konfiguracije za korištenje direktorija za gradnje). Ova se značajka već koristi za organiziranje isporuke rustc prevoditelja s pakiranjem svih ovisnosti u jednu arhivu s izdanjem;
  • Sada je moguće stvoriti poveznice na enum opcije pomoću aliasa tipa (na primjer, u tijelu funkcije “fn increment_or_zero(x: ByteOption) možete navesti “ByteOption::None => 0”), konstrukcije izračuna tipa (‹ MyType‹.. ››::option => N) ili Self pristupi (u blokovima c &self možete odrediti “Self::Quarter => 25”);
  • Dodana je mogućnost stvaranja neimenovanih konstanti u makronaredbama. Umjesto definiranja naziva elementa u "const", sada možete koristiti znak "_" za dinamički odabir identifikatora koji se ne ponavlja, izbjegavajući sukobe imena prilikom ponovnog pozivanja makronaredbe;
  • Dodana je mogućnost korištenja atributa "#[repr(align(N))" s enumima koristeći sintaksu sličnu definiranju strukture AlignN‹T› s poravnavanjem i zatim korištenjem AlignN‹MyEnum›;
  • Novi dio API-ja premješten je u stabilnu kategoriju, uključujući BufReader::buffer, BufWriter::buffer i
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opcija::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits i
    slice::copy_within.

Dodatno, možete napomenuti početak testiranja projekt Asinkroni-std, koji nudi asinkronu varijantu standardne biblioteke Rust (priključak biblioteke std, u kojoj su sva sučelja ponuđena u asinkronoj verziji i spremna su za korištenje sa sintaksom async/await).

Izvor: opennet.ru

Dodajte komentar