Rust 1.63 programsprÄk release

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

  • Lade till std::thread::scope API, som lĂ„ter dig skapa scoped-trĂ„dar. Till skillnad frĂ„n tidigare tillgĂ€ngliga trĂ„dar tillĂ„ter det nya std::thread::scope API att lĂ„na icke-statisk data, medan trĂ„dar skapade med det klassiska std::thread::spawn API krĂ€vdes att Ă€ga alla argument som skickades och inte kunde ta emot lĂ„nade variabler. std::thread::scope API sĂ€kerstĂ€ller att alla skapade trĂ„dar avslutas innan data returneras, vilket ger tillrĂ€cklig sĂ€kerhet för lĂ„nemekanismen.
  • Nya omslagstyper för fildeskriptorer har föreslagits - BorrowedFd och OwnedFd, som ger lĂ„n och Ă€gande. Typer Ă€r mĂ€rkta med "#[repr(transparent)]", vilket gör att de kan anvĂ€ndas direkt i externa C-bindningar pĂ„ ett Ă€garmedvetet sĂ€tt.
  • Förutsatt möjligheten att anropa Condvar::new, Mutex::new och RwLock::new i kontexten av konstanter för att skapa globala statiska Mutex-, RwLock- och Condvar-vĂ€rden utan att anvĂ€nda lazy_static-paket.
  • För funktioner som fn foo (vĂ€rde: T, f: impl Copy) syntax som "foo::" Ă€r tillĂ„ten (32, 3)”, som uttryckligen anger typen av generika.
  • ÖvergĂ„ngen till att anvĂ€nda NLL-tekniken (Non-Lexical Lifetimes) för att identifiera problem med lĂ„nevariabler har slutförts. NLL tar hĂ€nsyn pĂ„ nivĂ„n av en uppsĂ€ttning pekare i exekveringsflödesgrafen, vilket gör det möjligt att höja kvaliteten pĂ„ kontrollen för lĂ„nevariabler (lĂ„nekontroller) och tillĂ„ta exekvering av vissa typer av korrekt kod, anvĂ€ndning av som tidigare ledde till ett fel. Stöd för den gamla mekanismen som anvĂ€nde livstidsbindning pĂ„ lexikalnivĂ„ har nu tagits bort helt frĂ„n rustc, och anvĂ€ndningen av den nya NLL har implementerats genomgĂ„ende.
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • array::from_fn
    • Box::into_pin
    • BinaryHeap::try_reserve
    • BinaryHeap::try_reserve_exact
    • OsString::try_reserve
    • OsString::try_reserve_exact
    • PathBuf::try_reserve
    • PathBuf::try_reserve_exact
    • SökvĂ€g::try_exists
    • Ref::filter_map
    • RefMut::filter_map
    • NonNull::<[T]>::len
    • ToOwned::clone_into
    • Ipv6Addr::to_ipv4_mapped
    • unix::io::AsFd
    • unix::io::BorrowedFd<'fd>
    • unix::io::OwnedFd
    • windows::io::AsHandle
    • windows::io::BorrowedHandle

      KĂ€lla: opennet.ru
Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster