Rust 1.44 programozási nyelv kiadás

közzétett rendszer programozási nyelv kiadása Rozsda 1.44a 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.

Az új kiadás bejelentésének szövegében a Rust fejlesztői belekeveredtek a politikába, és dacosan megtagadták a Rust 1.44 változásainak teljes áttekintését a rendőri erőszak elleni tiltakozókkal való szolidaritás jegyében, jelezve, hogy ez a kérdés fontosabb, mint a műszaki ismeretek cseréje. Fő innovációk:

  • A "cargo tree" parancs be van építve a Cargo csomagkezelőbe, amely egy faszerű függőségi grafikont jelenít meg. A "--duplicates" ("cargo tree -d") opció is hozzáadásra került, amely lehetővé teszi a függőségek kiértékelését ugyanazon csomag különböző verzióiban.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammónia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── napló v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [beépítési függőségek] │ │ │ └── verzió_ellenőrzés v0.1.5
    ...

  • Az std-hez ("#![no_std]") nem kötött alkalmazásoknál az "async" függvényen, az async move { ... } blokkon és a ".await" operátoron alapuló aszinkron programozási módszerek támogatása valósul meg, ami megkönnyíti a nem blokkoló kezelők fő parancsfolyamának írását.
  • A bővíthető modulhierarchia-definíciós séma támogatása hozzáadásra került az elemzőhöz. Például a következő konstrukció nem fog hibát okozni a "foo/bar/baz.rs" modul tényleges hiánya ellenére (szemantikailag a konstrukció továbbra is érvénytelen, és hibát okozhat, de a változások láthatók és értelmezhetők makroszinten és feltételes fordításban):

    #[cfg(FALSE)] mod foo {
    mod bar {
    modbaz;
    }
    }

  • A rustc fordító hozzáadta a "-C codegen-units" jelző használatának lehetőségét növekményes módban. A catch_unwind megvalósítását újratervezték, ami mostantól nem befolyásolja a teljesítményt, ha a letekercselési folyamat le van tiltva, és nincs kivétel.
  • Harmadik szintű támogatást biztosított az aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos és x86_64-apple-tvos platformokhoz. A harmadik szint alapvető támogatást jelent, de automatikus tesztelés és a hivatalos buildek közzététele nélkül.
  • Az API új része átkerült a stabil kategóriába, beleértve a stabilizáltat is
    PathBuf::with_capacity,
    PathBuf::kapacitás,
    PathBuf::clear,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Elrendezés::igazítás_hoz
    Elrendezés::pad_to_align,
    Elrendezés::tömb és
    elrendezés::kiterjesztés.

  • A szabványos könyvtár kiterjesztett funkciói:
    • Hozzáadtuk a "vec![]" speciális változatát, amely közvetlenül tükröződik a Vec::new()-ban, lehetővé téve a "vec![]" kontextusban történő használatát konstansok helyett.
    • Jellemző megvalósítás (impl) hozzáadva a::Infallible konvertálásához Hash.
    • Az OsString intelligens mutatókat valósít meg DerefMut и IndexMut, a következőt adja vissza: "&mut OsStr".
    • Hozzáadott támogatás a Unicode 13-hoz.
    • Stringben implementálva From<&mutstr>.
    • IoSlice-ben implementált tulajdonság másolat.
    • Vec implementált From<[T; N]>.
    • A proc_macro::LexError megvalósítja az fmt::Display és Error funkciót.
  • A "const" attribútum, amely meghatározza a konstansok helyett tetszőleges kontextusban való használat lehetőségét, a from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes és to_ne_bytes metódusokban használatos minden egész típusra.
  • Támogatás hozzáadva a statikus könyvtárak generálásához ".a" formátumban a ".lib" formátum helyett a Windows GNU platformokon.
  • Az LLVM minimális követelményeit LLVM 8-ra emelték.

Forrás: opennet.ru

Hozzászólás