Rust 1.68 programspråk release

Utgivningen av Rust 1.68 allmänt programmeringsspråk, grundat av Mozilla-projektet, men nu utvecklat under överinseende av den oberoende ideella organisationen Rust Foundation, har publicerats. Språket fokuserar på minnessäkerhet och ger möjlighet att uppnå hög jobbparallellism samtidigt som man undviker användningen av en skräpsamlare och körtid (körtiden reduceras till grundläggande initiering och underhåll av standardbiblioteket).

Rusts minneshanteringsmetoder räddar utvecklaren från fel vid manipulering av pekare och skyddar mot problem som uppstår på grund av minneshantering på låg nivå, som att komma åt ett minnesområde efter att det har frigjorts, avläsning av nollpekare, buffertöverskridningar, etc. För att distribuera bibliotek, tillhandahålla builds och hantera beroenden utvecklar projektet Cargo package manager. Crates.io-förvaret stöds för värdbibliotek.

Minnessäkerhet tillhandahålls i Rust vid kompilering genom referenskontroll, hålla reda på objektägande, hålla reda på objektlivslängder (scopes) och bedöma riktigheten av minnesåtkomst under kodexekvering. Rust ger också skydd mot heltalsspill, kräver obligatorisk initiering av variabelvärden innan användning, hanterar fel bättre i standardbiblioteket, tillämpar konceptet med oföränderliga referenser och variabler som standard, erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga innovationer:

  • Cargo-pakethanteraren och crates.io-förvaret har stabiliserat stödet för Sparse-protokollet, som definierar ett nytt sätt att arbeta med ett index som återspeglar de tillgängliga versionerna av alla paket som finns i förvaret. Det nya protokollet låter dig avsevärt öka hastigheten på att arbeta med crates.io och lösa skalningsproblem med ytterligare tillväxt av antalet paket i förvaret.

    För att minska förseningarna som orsakas av att ladda ner ett fullständigt index, innebär Sparse istället för att komma åt indexet med Git direkt nedladdning över HTTPS endast nödvändig indexdata, som täcker beroenden för ett visst projekt. En ny tjänst, index.crates.io, används för att tillhandahålla indexdata. Som standard är det nya protokollet planerat att användas i Rust 1.70-grenen, och innan dess, för att aktivera det, kan du ställa in miljövariabeln "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" eller lägga till parametern 'protocol =' till "[registren. crates-io]" i .cargo/config.toml-filen "sparse".

  • Lade till makrot "pin!", som låter dig skapa en Pin<&mut T>-struktur från uttrycket "T" med lokal pinning av dess tillstånd (till skillnad från Box::pin, allokerar det inte minne på högen, utan binder på stacknivå).
  • En standardfelhanterare för minnesallokering har föreslagits, som används vid användning av standardallokeringspaketet. Applikationer som endast aktiverar alloc (utan std) kommer nu att anropa "panic!"-hanteraren när minnesallokering misslyckas, vilket valfritt kan avlyssnas med "#[panic_handler]". Program som använder std-biblioteket fortsätter att skriva ut felinformation till stderr och kraschar.
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • {core,std}::pin::pin!
    • impl Från för {f32,f64}
    • std::sökväg::MAIN_SEPARATOR_STR
    • impl DerefMut för PathBuf
  • Attributet "const", som bestämmer möjligheten att använda det i alla sammanhang istället för konstanter, används i funktionen VecDeque::new.
  • För att arbeta på Android-plattformen krävs nu minst NDK r25 (API 19), d.v.s. Den minsta Android-version som stöds har höjts till 4.4 (KitKat).
  • Den tredje nivån av stöd har implementerats för Sony PlayStation Vita-plattformen (armv7-sony-vita-newlibeabihf). Den tredje nivån innebär grundläggande support, men utan automatiserad testning, publicering av officiella builds eller kontroll av om koden kan byggas.

Källa: opennet.ru

Lägg en kommentar