Rust 1.55 programozási nyelv kiadás

Megjelent a Mozilla projekt által alapított, de immár a Rust Foundation független non-profit szervezet égisze alatt kifejlesztett Rust 1.55 rendszerprogramozási nyelv kiadása. A nyelv a memória biztonságára összpontosít, automatikus memóriakezelést biztosít, és biztosítja a magas szintű párhuzamosság elérését szemétgyűjtő vagy futási idő nélkül (a futásidő a szabványos könyvtár alapvető inicializálására és karbantartására csökken).

A Rust automatikus memóriakezelése kiküszöböli a mutatók manipulálása során fellépő hibákat, és védelmet nyújt az alacsony szintű memóriamanipulációból eredő problémák ellen, mint például a memóriaterület felszabadítása utáni hozzáférés, nullmutató hivatkozások, puffertúllépések stb. A programkönyvtárak terjesztésére, az összeállítás biztosítására és a függőségek kezelésére a projekt a Cargo csomagkezelőt fejleszti. A crates.io tároló támogatja a könyvtárak tárolását.

Főbb újítások:

  • A Cargo csomagkezelő képes egyesíteni az összeállítás során előforduló duplikált hibákat és figyelmeztetéseket. Amikor olyan parancsokat hajtanak végre, mint például a "cargo test" és a "cargo check --all-targets", amelyek egy csomag több összeállítását eredményezik különböző paraméterekkel, a felhasználó nem jeleníti meg az ismétlődő probléma előfordulásának összefoglalását. több azonos figyelmeztetés ugyanazon dolog ismételt felépítésénél. $ cargo +1.55.0 check —all-targets Foo v0.1.0 figyelmeztetés ellenőrzése: a függvény soha nem használatos: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = Megjegyzés: '#[warn(dead_code)]' alapértelmezés szerint be van kapcsolva figyelmeztetés: 'foo' (lib) 1 figyelmeztetést generált: 'foo' (lib teszt) 1 figyelmeztetést generált (1 duplikáció) Kész a fejlesztő [unoptimized + debuginfo] cél (s) 0.84 másodperc alatt
  • A szabványos könyvtár lebegőpontos értelmező kódja a gyorsabb és pontosabb Eisel-Lemire algoritmus használatára került áthelyezésre, amely megoldott néhány korábban megfigyelt problémát a nagyon nagy számjegyű számok kerekítésével és elemzésével kapcsolatban.
  • Stabilizálódott a sablonokban a le nem zárt tartományok megadásának lehetősége (az „X..” olyan tartományként értelmeződik, amely X értékkel kezdődik és az egész típus maximális értékével végződik): egyeztesse x-et u32-vel { 0 => println! ("nulla!"), 1.. => println!("pozitív szám!"), }
  • Az std::io::ErrorKind által lefedett kibővített hibaváltozatok (a hibákat olyan kategóriákba sorolja, mint a NotFound és a ShouldBlock). Korábban a meglévő kategóriákba nem illeszkedő hibák az ErrorKind::Other kategóriába tartoztak, amelyet a harmadik féltől származó kódok hibáira is használtak. Mostantól külön belső kategória ErrorKind::Uncategorized a meglévő kategóriákba nem illeszkedő hibákhoz, az ErrorKind::Other kategória pedig azokra a hibákra korlátozódik, amelyek nem a szabványos könyvtárban fordulnak elő (az io::Error függvényt visszaadó szabványos könyvtárfüggvények többé ne használja az ErrorKind:: kategóriát Egyéb).
  • Az API új része átkerült a stabil kategóriába, beleértve a tulajdonságok módszereit és megvalósításait is:
    • Kötött::klónozott
    • Lefolyó::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::write
    • tömb::térkép
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Az str::from_utf8_unchecked metódusban a „const” attribútumot használjuk, amely meghatározza, hogy konstansok helyett tetszőleges környezetben használható-e.
  • A harmadik támogatási szint a powerpc64le-unknown-freebsd platformon valósult meg. A harmadik szint alaptámogatást foglal magában, de automatikus tesztelés, hivatalos buildek közzététele vagy annak ellenőrzése nélkül, hogy a kód összeállítható-e.

Forrás: opennet.ru

Hozzászólás