Rust 1.37 programozási nyelv kiadás

közzétett rendszer programozási nyelv kiadása Rozsda 1.37, amelyet a Mozilla projekt alapított. A nyelv a memória biztonságára összpontosít, automatikus memóriakezelést biztosít, és lehetőséget biztosít a magas szintű párhuzamosság elérésére szemétgyűjtő vagy futási idő nélkül.

A Rust automatikus memóriakezelése megszabadítja a fejlesztőt a mutatómanipulációtól, és megvédi az alacsony szintű memóriakezelésből eredő problémákat, mint például az utólagos memóriaelérések, a nulla mutatóhivatkozások, a puffertúllépések és hasonlók. Csomagkezelő fejlesztés alatt áll a könyvtárak terjesztésére, az összeállítás biztosítására és a függőségek projekt általi kezelésére. 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:

  • A rustc fordítóban biztosított a kódprofilalkotás eredményein alapuló optimalizálás támogatása (PGO, Profil-Guided Optimization),
    lehetővé téve a programvégrehajtás során felhalmozott statisztikák elemzése alapján optimálisabb kód generálását. Profil generálásához a „-C profile-generate” jelző biztosított, a profil használatához pedig az összeállítás során – „-C profile-use” (kezdetben a program az első zászlóval kerül összeállításra, körbefut, majd létrehozása után a profilt a második zászlóval szerelik össze);

  • A „cargo run” parancs végrehajtásakor, amely kényelmesen használható a konzolalkalmazások gyors teszteléséhez, hozzáadásra került a futtatható fájl automatikus kiválasztásának képessége, ha a csomagban több futtatható fájl is található. Az alapértelmezés szerint végrehajtott fájlt az alapértelmezett futtatási direktíva határozza meg a [package] szakaszban a csomagparaméterekkel, ami lehetővé teszi, hogy elkerülje a fájlnév explicit megadását a „-bin” jelzővel a „cargo run” minden egyes futtatásakor;
  • A „cargo vendor” parancs, amelyet korábban mint külön csomag. A parancs lehetővé teszi a munka megszervezését a függőségek helyi másolatával - a „cargo vendor” végrehajtása után a projekt függőségek összes forráskódja letöltődik a crates.io webhelyről egy helyi könyvtárba, amelyet aztán a ládák elérése nélkül használhatunk a munkához. io (a parancs végrehajtása után megjelenik egy tipp a konfiguráció megváltoztatására, hogy a könyvtárat használja a buildekhez). Ezt a funkciót már használják a rustc fordító kézbesítésének megszervezésére, az összes függőséget egy archívumba csomagolva a kiadással együtt;
  • Mostantól lehetőség van hivatkozásokat létrehozni az enum opciókhoz típusálnevek segítségével (például az „fn increment_or_zero(x: ByteOption) függvény törzsében megadhatja a „ByteOption::None => 0” értéket), számítási konstrukciókat írhat be (‹ MyType‹.. ››::opció => N) vagy Saját hozzáférések (a c &self blokkban megadhatja a „Self::Quarter => 25” értéket);
  • Hozzáadtuk a makrókban névtelen konstansok létrehozásának lehetőségét. Ahelyett, hogy az elem nevét a "const"-ban határozná meg, most már használhatja a "_" karaktert egy nem ismétlődő azonosító dinamikus kiválasztásához, elkerülve a névütközéseket a makró újbóli meghívásakor;
  • Hozzáadtuk a „#[repr(align(N))” attribútum használatának lehetőségét az enumokkal, az AlignN‹T› struktúra igazítással történő meghatározásához, majd az AlignN‹MyEnum› használatához hasonló szintaxist használva;
  • Az API új része átkerült a stabil kategóriába, beleértve a BufReader::buffer, BufWriter::buffer és
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opció::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits és
    szelet::copy_within.

Ezenkívül meg lehet jegyezni tesztelés kezdete program Async-std, amely a Rust szabványkönyvtár aszinkron változatát kínálja (az std könyvtár portja, amelyben minden interfész aszinkron verzióban elérhető, és készen áll az async/await szintaxissal történő használatra).

Forrás: opennet.ru

Hozzászólás