Rust 1.62 programspråk release

Utgivningen av Rust 1.62 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:

  • Pakethanteraren "cargo" erbjuder kommandot "add", som låter dig lägga till nya beroenden till Cargo.toml-manifestet eller ändra befintliga beroenden från kommandoraden. Kommandot låter dig också specificera individuella funktioner och versioner, till exempel: cargo add serde —features derive cargo add nom@5
  • Lade till möjligheten att använda "#[derive(Default)]" med enums där standardalternativet definieras med "#[default]"-attributet. #[derive(Default)] enum Kanske { #[standard] Ingenting, något(T), }
  • På Linux-plattformen används en mer kompakt och snabbare implementering av Mutex-synkroniseringsmekanismen, baserad på användningen av futexes som tillhandahålls av Linux-kärnan. Till skillnad från den tidigare använda implementeringen baserad på pthreads-biblioteket, använder den nya versionen endast 5 byte istället för 40 för att lagra Mutex-tillståndet. På liknande sätt har Condvar- och RwLock-låsmekanismerna överförts till futex.
  • En andra nivå av stöd för målplattformen x86_64-unknown-none har implementerats, utformad för att generera körbara filer som kan fungera utan ett operativsystem. Till exempel kan den angivna målplattformen användas när du skriver kärnkomponenter. Den andra stödnivån innebär en monteringsgaranti.
  • Den tredje nivån av stöd har implementerats för plattformarna aarch64-pc-windows-gnullvm och x86_64-pc-windows-gnullvm. Den tredje nivån involverar grundläggande support, men utan automatiserad testning, publicering av officiella builds och verifiering av kodbyggbarhet.
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • bool::sen_några
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl standardvärde för AssertUnwindSafe
    • Från > för Rc
    • Från > för Arc<[u8]>
    • FusedIterator för EncodeWide

    Källa: opennet.ru

Lägg en kommentar