Rust 1.54 Програмчлалын хэлний хувилбар

Mozilla төслөөс үүсгэн байгуулсан, харин одоо Rust Foundation бие даасан ашгийн бус байгууллагын ивээл дор бүтээгдсэн Rust 1.54 системийн програмчлалын хэл хэвлэгдэн гарлаа. Энэ хэл нь санах ойн аюулгүй байдалд анхаарлаа төвлөрүүлж, санах ойн автомат удирдлагаар хангадаг бөгөөд хог цуглуулагч эсвэл ажиллах цагийг ашиглахгүйгээр өндөр даалгаврын параллелизмд хүрэх боломжийг олгодог (ажиллах хугацаа нь стандарт номын сангийн үндсэн эхлүүлэх, засвар үйлчилгээ хийх хүртэл багассан).

Rust-ийн автомат санах ойн удирдлага нь хөгжүүлэгчийг заагчийг удирдах үеийн алдаанаас аварч, санах ойг сулласны дараа санах ойн талбарт хандах, тэг заагчийг халах, буфер хэт ачаалагдах гэх мэт доод түвшний санах ойн ашиглалтын улмаас үүсэх асуудлаас хамгаалдаг. Номын санг түгээх, бүтээн байгуулалтыг хангах, хамаарлыг удирдахын тулд төсөл нь Ачааны багц менежерийг боловсруулдаг. Crates.io репозиторыг номын санг байршуулахад дэмждэг.

Гол инноваци:

  • Шинж чанаруудын дотор функцтэй төстэй макро ашиглах чадварыг нэмсэн (процедурын макро болон "макро_дүрэм!" макро ашиглан үүсгэсэн макронууд). Ийм макро нь функцээс "!" тэмдгээр ялгагдана. нэрний дараа (макро!(...)) болон функцийн дуудлага үүсгэхийн оронд макро эх бичвэрийг орлуулах. Аттрибут доторх макрог дуудах нь тайлбарыг баримтжуулахад бусад файлын агуулгыг оруулахад тустай байж болно. Жишээлбэл, README файлын агуулга болон скриптийн гүйцэтгэлийн үр дүнг оруулахын тулд та дараахийг зааж өгч болно: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR" "), "/generated.rs" )] горим үүсгэсэн;
  • Wasm32 платформд зориулагдсан хөрвүүлэгчийн функцууд (Intrinsics) тогтворжсон бөгөөд WebAssembly дээр SIMD зааврыг ашиглах боломжтой болсон. Ихэнх функцууд, тухайлбал v128_bitselect нь "аюулгүй" горимд байдаг ч заагчтай ажилладаг зарим функцууд (жишээ нь, v128_load) "аюултай" хэвээр байна.
  • Өсөн нэмэгдэж буй эмхэтгэлийн өгөгдмөл хэрэглээ буцаж ирсэн бөгөөд энэ нь зөвхөн кодын өөрчилсөн хэсгүүдийг дахин бүтээх боломжийг олгож байгаа бөгөөд энэ нь бага зэргийн өөрчлөлт хийсний дараа дахин эмхэтгэх үед төслийг бүтээхэд зарцуулагдах хугацааг мэдэгдэхүйц бууруулж чадна. Дискний кэшээс өгөгдлийг ачаалах нэмэлт шалгалтыг нэмсний дараа илэрсэн далд алдааны улмаас 1.52.1 хувилбар дээр нэмэлт эмхэтгэлийг идэвхгүй болгосон.
  • API-ийн шинэ хэсгийг тогтвортой ангилалд шилжүүлсэн бөгөөд үүнд дараах тогтворжуулсан:
      BTreeMap :: товчлуур руу оруулна уу
    • BTreeMap :: утга руу оруулна
    • HashMap::түлхүүр рүү оруулна
    • HashMap :: утга руу оруулах
    • arch ::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::хоёртын_хайлтын_түлхүүр
    • VecDeque::partition_point
  • Cargo-tree-д тохируулгуудыг нэмсэн: "—prune " багцыг хамаарлын графикаас хасах, "—depth" нь зөвхөн хамаарлын модонд өгөгдсөн үүрлэх түвшний элементүүдийг харуулах, "-edges no-proc- Процедурын макроны хамаарлыг нуухын тулд макро .

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх