Rust 1.37 programspråk release

publiceras version av systemprogrammeringsspråk Rost 1.37, grundat av Mozilla-projektet. Språket fokuserar på minnessäkerhet, tillhandahåller automatisk minneshantering och tillhandahåller ett sätt att uppnå hög arbetsparallellism utan att använda en sophämtare eller körtid.

Rusts automatiska minneshantering frigör utvecklaren från pekarmanipulation och skyddar mot problem som uppstår från minnesmanipulation på låg nivå, såsom efterfri minnesåtkomst, nollpekaredereferenser, buffertöverskridningar och liknande. En pakethanterare utvecklas för att distribuera bibliotek, säkerställa montering och hantera beroenden av projektet. Laddning, vilket gör att du kan få de bibliotek du behöver för programmet med ett klick. Ett arkiv stöds för värdbibliotek lådor.io.

Den huvudsakliga innovationer:

  • I rustc-kompilatorn säkrad stöd för optimering baserat på kodprofileringsresultat (PGO, Profile-Guided Optimization),
    så att du kan generera mer optimal kod baserat på analys av statistik som samlats under programkörning. För att generera en profil tillhandahålls flaggan "-C profile-generate" och för att använda profilen under montering - "-C profile-use" (initialt sätts programmet ihop med den första flaggan, kör runt och efter att ha skapats profilen, den sätts ihop med den andra flaggan);

  • När du kör kommandot "cargo run", som är bekvämt att använda för att snabbt testa konsolapplikationer, har möjligheten att automatiskt välja en körbar fil att köra lagts till om det finns flera körbara filer i paketet. Standardfilen som ska köras bestäms genom standardkörningsdirektivet i avsnittet [paket] med paketparametrar, vilket låter dig undvika att explicit specificera filnamnet genom flaggan "-bin" varje gång du kör "lastkörning";
  • Kommandot "lastförsäljare", som tidigare levererats som separat paket. Kommandot låter dig organisera arbetet med en lokal kopia av beroenden - efter exekvering av "lastleverantör" laddas alla källkoder för projektets beroenden ner från crates.io till en lokal katalog, som sedan kan användas för arbete utan åtkomst till lådor. io (efter att ha kört kommandot visas ett tips för att ändra konfigurationen för att använda katalogen för builds). Denna funktion används redan för att organisera leveransen av rustc-kompilatorn med paketering av alla beroenden i ett arkiv med releasen;
  • Det är nu möjligt att skapa länkar till uppräkningsalternativ med hjälp av typalias (till exempel i brödtexten i funktionen "fn increment_or_zero(x: ByteOption) kan du ange "ByteOption::None => 0"), skriv beräkningskonstruktioner (‹ MyType‹.. ››::option => N) eller Självåtkomst (i block c &self kan du ange “Self::Quarter => 25”);
  • Lade till möjligheten att skapa namnlösa konstanter i makron. Istället för att definiera elementnamnet i "const", kan du nu använda tecknet "_" för att dynamiskt välja en icke-repeterande identifierare, och undvika namnkonflikter när makrot anropas igen;
  • Lade till möjligheten att använda "#[repr(align(N))"-attributet med enums med en syntax som liknar att definiera en AlignN‹T›-struktur med alignment och sedan använda AlignN‹MyEnum›;
  • En ny del av API:t har flyttats till den stabila kategorin, inklusive BufReader::buffer, BufWriter::buffer och
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Alternativ::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits och
    skiva::copy_within.

Dessutom kan det noteras start av testning projektet Async-std, som erbjuder en asynkron variant av Rust-standardbiblioteket (en port i std-biblioteket, där alla gränssnitt erbjuds i en asynkron version och är redo att användas med syntax för async/wait).

Källa: opennet.ru

Lägg en kommentar