Rust 1.46 programspråk release

publiceras version 1.46 av systemets programmeringsspråk Rustgrundades av Mozilla-projektet. Språket fokuserar på säker minneshantering, ger automatisk minneshantering och ger möjlighet att uppnå hög jobbparallellism samtidigt som man undviker användningen av en sophämtare och runtime.

Rusts automatiska minneshantering räddar utvecklaren från fel vid manipulering av pekare och skyddar mot problem som uppstår på grund av minnesmanipulation på låg nivå, som att komma åt ett minnesområde efter det att det har frigjorts, avläsning av nollpekare, buffertöverskridningar, etc. För att distribuera bibliotek, säkerställa montering och hantera beroenden utvecklar projektet en pakethanterare 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:

  • Möjligheterna för funktioner som definieras med uttrycket "const fn" har utökats, som inte bara kan kallas som vanliga funktioner, utan också användas i alla sammanhang istället för konstanter. Dessa funktioner beräknas vid kompilering, inte vid körning, så de är föremål för vissa begränsningar, såsom möjligheten att endast läsa från konstanter.

    Den nya versionen tar bort förbudet mot att använda booleska operatorer ("&&" och "||") i sådana funktioner, och tillåter användning av "if", "if let", "match"-konstruktioner,
    "while", "while let" och "loop", och ger även möjligheten att konvertera till skivor (slice, dynamiska arrayer) med hjälp av uttrycket "&[T]". Användningen av dessa funktioner i "const fn"-funktionerna låter dig flytta vissa resurskrävande operationer till kompileringsstadiet. Till exempel gör implementeringen av "const-sha1" det möjligt att beräkna SHA-1-hashar vid kompilering, vilket leder till att WinRT-bindningar för Rust snabbar upp med nästan 40 gånger.

  • För att göra felmeddelanden mer informativa har stödet för "#[track_caller]"-attributet stabiliserats, vilket är användbart för funktioner som packa upp, vilket kan orsaka panik om typer används felaktigt. Det angivna attributet kommer att användas av panikhanteraren för att skriva ut uppringarens plats i ett felmeddelande.
  • Attributet "const", som bestämmer möjligheten att använda det i alla sammanhang istället för konstanter, används i std::mem::forget-metoden.
  • En ny del av API:t har flyttats till den stabila kategorin, inklusive den stabiliserade Option::zip och vec::Drain::as_slice.
  • I paketansvarig Cargo Lagt till stöd för nya miljövariabler som ställs in vid kompilering av ett paket: CARGO_BIN_NAME (namnet på den resulterande körbara filen), CARGO_CRATE_NAME (paketnamn), CARGO_PKG_LICENSE (licens specificerad i manifestet), CARGO_PKG_LICENSE_FILE (sökväg till licensfilen).

Källa: opennet.ru

Lägg en kommentar