Rust програмчлалын хэлний хувилбар 2021 (1.56)

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

Тохиромжтой байдлыг хадгалахын тулд хөгжүүлэгчид "2015", "2018", "2021" гэсэн тэмдэглэгээг ашиглан программыг сонгогдсон Rust хувилбарт тохирох хэлний төлөвтэй холбох боломжтой. Тохиромжгүй өөрчлөлтүүдийг тусад нь авахын тулд засваруудыг оруулсан бөгөөд ачааны багцын мета өгөгдөлд "[багц]" хэсгийн "хэвлэл" талбараар тохируулагдсан болно. Жишээлбэл, 2018 оны хэвлэлд 2018 оны сүүлээр тогтворжсон функцийг багтаасан бөгөөд нийцтэй байдлыг зөрчөөгүй ирээдүйн бүх өөрчлөлтийг багтаасан болно. 2021 оны хувилбар нь одоогийн 1.56 хувилбарт санал болгож, ирээдүйд хэрэгжүүлэхээр батлагдсан нийцтэй байдлын зөрчлийн функцуудыг нэмж оруулсан болно. Хэлнээс гадна редакторууд багаж хэрэгсэл, баримт бичгийн төлөв байдлыг харгалзан үздэг.

Rust 2021-д тогтоогдсон гол үл нийцэлүүд нь:

  • Closures-д тусад нь зураг авах - Хаалтууд одоо ID-г бүхэлд нь биш харин талбарын нэрийг тусад нь авах боломжтой. Жишээлбэл, "|| ax + 1" нь "a"-н оронд зөвхөн "сүх"-г авах болно.
  • Массивын IntoIterator шинж чанар: array.into_iter() нь массивын элементүүдийг лавлагаагаар бус утгаараа давтах боломжийг олгодог.
  • "|" илэрхийллийн боловсруулалтыг macro_rules-д өөрчилсөн (логик OR үйл ажиллагаа) хээн доторх - Тоглолтын ":pat" тодорхойлогч одоо "A | Б".
  • Ачааны багц менежер нь анхдагчаар Rust 1.51-д дэмжлэг үзүүлсэн функц шийдэгчийн хоёр дахь хувилбарыг агуулдаг.
  • TryFrom, TryInto, FromIterator шинж чанарууд нь оршил номын сангийн стандарт модульд нэмэгдсэн.
  • Сандарсан!(..) болон assert!(expr, ..) макронууд одоо println!()-тэй төстэй мөрүүдийг форматлахад format_args!(..)-г үргэлж ашигладаг.
  • ident#, ident"..." болон ident'...' илэрхийллүүд нь тухайн хэлний синтакс дээр хадгалагдсан байдаг.
  • Bare_trait_objects болон ellipsis_inclusive_range_patterns анхааруулгыг алдааны ангилалд шилжүүлсэн.

Rust 1.56 дахь шинэ:

  • Cargo.toml-ийн "[багц]" хэсэгт зэв-хувилбарын талбар нэмэгдсэн бөгөөд үүгээр дамжуулан та хайрцагны багцад зориулсан Rust-ийн хамгийн бага дэмжигдсэн хувилбарыг тодорхойлох боломжтой. Хэрэв одоогийн хувилбар нь заасан параметртэй тохирохгүй байвал Cargo алдаа гарган зогсох болно.
  • Загварыг "binding @ загвар" илэрхийлэл ашиглан тааруулах үед нэмэлт холболтыг зааж өгөхөд дэмжлэг үзүүлдэг (жишээ нь, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • API-ийн шинэ хэсгийг тогтвортой гэсэн ангилалд шилжүүлж, шинж чанаруудын арга, хэрэгжилтийг тогтворжуулсан:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • "const" шинж чанар нь үүнийг тогтмолуудын оронд ямар ч контекстэд ашиглах боломжийг тодорхойлдог бөгөөд үүнийг функцэд ашигладаг.
    • std :: mem :: хувиргах
    • [T]:: эхлээд
    • [T]:: эхний_хуваах
    • [T] :: сүүлчийн
    • [T]::сүүлийн_хуваах
  • Хөрвүүлэгчийг LLVM хувилбар 13 ашиглахаар сольсон.
  • aarch64-apple-ios-sim платформын 32-р түвшний дэмжлэг болон powerpc-unknown-freebsd болон riscvXNUMXimc-esp-espidf платформуудын XNUMX-р түвшний дэмжлэгийг хэрэгжүүлсэн. Гурав дахь түвшин нь үндсэн дэмжлэгийг агуулдаг боловч автоматжуулсан туршилтгүйгээр, албан ёсны бүтээлийг нийтлэх, кодыг бүтээх чадварыг шалгах явдал юм.

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

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

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

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