Programski jezik Rust 1.37 izdanje

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

Rust-ovo automatsko upravljanje memorijom oslobađa programera od manipulacije pokazivačem i štiti od problema koji proizlaze iz manipulacije memorijom na niskom nivou, kao što su pristupi memoriji nakon slobodne upotrebe, dereferenciranje nulte pokazivača, prekoračenje bafera i slično. Razvija se menadžer paketa za distribuciju biblioteka, osiguravanje sklapanja i upravljanje ovisnostima od strane projekta. teret, što vam omogućava da jednim klikom dobijete biblioteke potrebne za program. Podržano je spremište za hostiranje biblioteka crates.io.

Glavni inovacije:

  • U rustc kompajleru osiguran podrška za optimizaciju na osnovu rezultata profiliranja koda (PGO, Profile-Guided Optimization),
    omogućavajući vam da generišete optimalniji kod na osnovu analize statistike prikupljene tokom izvršavanja programa. Da biste generisali profil, obezbeđena je zastavica “-C profile-generate”, a za korišćenje profila tokom sastavljanja - “-C profile-use” (u početku se program sastavlja sa prvom zastavicom, pokreće se, a nakon kreiranja profil, ponovo se sastavlja sa drugom zastavicom);

  • Prilikom izvršavanja naredbe “cargo run”, koja je zgodna za korištenje za brzo testiranje konzolnih aplikacija, dodana je mogućnost automatskog odabira izvršne datoteke za pokretanje ako postoji nekoliko izvršnih datoteka u paketu. Podrazumevani fajl koji će se izvršiti određuje se putem default-run direktive u odjeljku [package] sa parametrima paketa, što vam omogućava da izbjegnete eksplicitno navođenje imena datoteke kroz “-bin” zastavicu svaki put kada pokrenete “cargo run”;
  • Komanda “cargo vendor”, prethodno isporučena kao poseban paket. Naredba vam omogućava da organizirate rad s lokalnom kopijom zavisnosti - nakon izvršavanja “cargo vendor”, svi izvorni kodovi zavisnosti projekta se preuzimaju sa 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 karakteristika se već koristi za organizaciju isporuke rustc kompajlera sa pakovanjem svih zavisnosti u jednu arhivu sa izdanjem;
  • Sada je moguće kreirati veze do opcija nabrajanja koristeći pseudonime tipa (na primjer, u tijelu funkcije „fn increment_or_zero(x: ByteOption) možete odrediti „ByteOption::None => 0”), konstrukcije proračuna tipa (‹ MyType‹.. ››::option => N) ili Self pristupi (u blokovima c &self možete odrediti “Self::Quarter => 25”);
  • Dodata mogućnost kreiranja neimenovanih konstanti u makroima. Umjesto definiranja imena elementa u "const", sada možete koristiti znak "_" da dinamički odaberete identifikator koji se ne ponavlja, izbjegavajući sukobe imena prilikom ponovnog pozivanja makroa;
  • Dodata je mogućnost korištenja atributa "#[repr(align(N))" sa enumima koristeći sintaksu sličnu definiranju strukture AlignN‹T› sa poravnanjem, a zatim korištenjem AlignN‹MyEnum›;
  • Novi dio API-ja je premješten 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.

Osim toga, može se primijetiti početak testiranja projekat Async-std, koji nudi asinhronu varijantu Rust standardne biblioteke (port std biblioteke, u kojoj su svi interfejsi ponuđeni u asinhronizovanoj verziji i spremni za upotrebu sa sintaksom async/await).

izvor: opennet.ru

Dodajte komentar