Rust 1.46 programozási nyelv kiadás

közzétett A rendszer programozási nyelvének 1.46-es kiadása Rozsdaa Mozilla projekt alapította. A nyelv a biztonságos memóriakezelésre összpontosít, automatikus memóriakezelést biztosít, és biztosítja a magas párhuzamos munkavégzés elérését, miközben elkerüli a szemétgyűjtő és futásidejű.

A Rust automatikus memóriakezelése megóvja a fejlesztőt a mutatók manipulálása során előforduló hibáktól, és védelmet nyújt az alacsony szintű memóriakezelés miatt felmerülő problémák ellen, 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, az összeállítás biztosításához és a függőségek kezeléséhez a projekt csomagkezelőt fejleszt ki Szállítmány, amely lehetővé teszi, hogy egy kattintással megszerezze a programhoz szükséges könyvtárakat. Egy tárhely támogatott a könyvtárak fogadására ládák.io.

A főbb innovációk:

  • Kibővültek a „const fn” kifejezéssel definiált függvények képességei, amelyek nem csak reguláris függvényeknek nevezhetők, hanem konstansok helyett bármilyen kontextusban használhatók. Ezeket a függvényeket fordítási időben számítják ki, nem futásidőben, ezért bizonyos korlátozások vonatkoznak rájuk, például a csak konstansokból való olvasás lehetősége.

    Az új kiadás megszünteti a logikai operátorok („&&” és „||”) használatának tilalmát az ilyen függvényekben, és lehetővé teszi az „if”, „if let”, „match” konstrukciók használatát,
    "while", "while let" és "loop", valamint lehetőséget biztosít a szeletekre (szeletekre, dinamikus tömbökre) történő konvertálásra is az "&[T]" kifejezés használatával. Ezeknek a szolgáltatásoknak a „const fn” függvényekben történő használata lehetővé teszi, hogy néhány erőforrás-igényes műveletet a fordítási szakaszba helyezzen át. Például a "const-sha1" implementációja lehetővé teszi az SHA-1 hash-ek kiszámítását a fordítási időben, ami a WinRT-kötések Rust esetében közel 40-szeres gyorsulásához vezet.

  • A hibaüzenetek informatívabbá tétele érdekében a „#[track_caller]” attribútum támogatása stabilizálva lett, ami olyan funkcióknál hasznos, mint a kicsomagolás, ami pánikot okozhat, ha a típusokat helytelenül használják. A megadott attribútumot a pánikkezelő fogja használni a hívó helyének hibaüzenetben történő kinyomtatására.
  • Az std::mem::forget metódusban a „const” attribútumot használják, amely meghatározza, hogy konstansok helyett tetszőleges környezetben használható-e.
  • Az API új része átkerült a stabil kategóriába, beleértve a stabilizált Option::zip és vec::Drain::as_slice elemeket.
  • A Cargo csomagkezelőben tette hozzá a csomag összeállításakor beállított új környezeti változók támogatása: CARGO_BIN_NAME (az eredményül kapott végrehajtható fájl neve), CARGO_CRATE_NAME (csomagnév), CARGO_PKG_LICENSE (a jegyzékben megadott licenc), CARGO_PKG_LICENSE_FILE (a licencfájl elérési útja).

Forrás: opennet.ru

Hozzászólás