Rust 1.68 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.68 általános célú programozási nyelv. A nyelv a memória biztonságára összpontosít, és biztosítja az eszközöket a munka magas párhuzamosságának eléréséhez, miközben elkerüli a szemétgyűjtő és a futási időt (a futásidő a szabványos könyvtár alapvető inicializálására és karbantartására csökken).

A Rust memóriakezelési módszerei megóvják a fejlesztőt a mutatók manipulálása során előforduló hibáktól, és megóvják az alacsony szintű memóriakezelésből adódó problémáktól, mint például a memóriaterület elérése annak felszabadítása után, a nulla mutatók hivatkozásának megszüntetése, a puffertúllépések stb. A programkönyvtárak terjesztéséhez, a buildek biztosításához és a függőségek kezeléséhez a projekt fejleszti a Cargo csomagkezelőt. A crates.io tároló támogatja a könyvtárak tárolását.

A memóriabiztonságot a Rust a fordítási időben biztosítja a referenciaellenőrzés, az objektumok tulajdonjogának nyomon követése, az objektumok élettartamának (hatóköreinek) nyomon követésével és a memória-hozzáférés helyességének értékelésével a kód végrehajtása során. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változó értékek kötelező inicializálását használat előtt, jobban kezeli a hibákat a szabványos könyvtárban, alapértelmezés szerint alkalmazza a megváltoztathatatlan hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.

Főbb újítások:

  • A Cargo csomagkezelőben és a crates.io tárolóban stabilizálódott a Sparse protokoll támogatása, amely új módszert határoz meg a tárolóban létező összes csomag elérhető verzióját tükröző indexszel való munkavégzésben. Az új protokoll lehetővé teszi, hogy jelentősen növelje a crates.io-val végzett munka sebességét, és megoldja a méretezési problémákat a tárolóban lévő csomagok számának további növelésével.

    A teljes index letöltéséből adódó késések csökkentése érdekében a Sparse ahelyett, hogy az indexhez Git használatával férne hozzá, HTTPS-en keresztül közvetlenül csak a szükséges indexadatokat tölti le, lefedve egy adott projekt függőségeit. Az új index.crates.io szolgáltatás az indexadatok visszaadására szolgál. Az új protokollt alapértelmezés szerint a Rust 1.70 ágban tervezik használni, és előtte engedélyezéséhez beállíthatja a "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" környezeti változót, vagy hozzáadhatja a "protocol =" paramétert a "[registries.crates"-hez. -io]" szakasz a .cargo/config.toml fájlban "sparse"'.

  • Hozzáadott makró "pin!", amely lehetővé teszi a Pin<&mut T> struktúra létrehozását a "T" kifejezésből az állapotának helyi rögzítésével (ellentétben a Box::pin-vel nem foglal le memóriát a kupacban, hanem kötődik a verem szintjén) .
  • Javasolt egy alapértelmezett memóriafoglalási hibakezelő, amelyet a szabványos lefoglalási csomag használatakor használnak. Azok az alkalmazások, amelyek csak az alloc-ot engedélyezik (std nélkül), a memóriafoglalási hibák esetén a „pánik!” kezelőt hívják, amely opcionálisan elfogható a „#[panic_handler]” segítségével. Az std könyvtárat használó programok továbbra is hibainformációkat nyomtatnak az stderr-be, és összeomlik.
  • 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:
    • {core,std}::pin::pin!
    • impl From ehhez: {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut a PathBuf számára
  • A "const" attribútum, amely meghatározza, hogy konstansok helyett bármilyen környezetben használható legyen, a VecDeque::new függvényben használatos.
  • Az Android platformhoz most legalább NDK r25 (API 19) szükséges, azaz. A minimálisan támogatott Android-verzió 4.4-re (KitKat) emelkedett.
  • Megvalósult a Sony PlayStation Vita platform harmadik támogatási szintje (armv7-sony-vita-newlibeabihf). A harmadik szint alapvető támogatást jelent, de automatikus tesztelés, hivatalos buildek közzététele és a kód felépítési képességének ellenőrzése nélkül.

Forrás: opennet.ru

Hozzászólás