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

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

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

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

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

  • Бүхэл тооны дүрслэл бүхий тооллого ("#[repr(Int)]" шинж чанар), тооллого талбар агуулсан байсан ч ялгаварлагчийг (тооллого дахь хувилбарын тоо) тодорхой зааж өгөхийг зөвшөөрдөг. #[repr(u8)] enum Foo { A(u8), # дискриминант 0 B(i8), # дискриминант 1 C(bool) = 42, # ялгаварлагч 42}
  • Хүлээн авсан утгыг буцаадаг үндсэн функцийг нэмсэн:: hint:: black_box. Хөрвүүлэгч энэ функцийг ямар нэг зүйл хийж байна гэж бодож байгаа тул black_box функцийг кодын гүйцэтгэлийн туршилт хийх эсвэл үүсгэсэн машины кодыг шалгах үед давталтуудад зориулсан хөрвүүлэгчийн оновчлолыг идэвхгүй болгоход ашиглаж болно (ингэснээр хөрвүүлэгч кодыг ашиглагдаагүй гэж үзэж, устгахгүй). Жишээ нь доорх жишээн дээр black_box(v.as_ptr()) нь хөрвүүлэгчийг v векторыг ашиглахгүй байна гэж бодохоос сэргийлдэг. std :: hint :: black_box ашиглах; fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • "Ачааны" багц менежер нь "арилгах" командыг санал болгодог бөгөөд энэ нь тушаалын мөрөөс Cargo.toml манифестээс хамаарлыг арилгах боломжийг олгодог.
  • API-ийн шинэ хэсгийг тогтвортой гэсэн ангилалд шилжүүлж, шинж чанаруудын арга, хэрэгжилтийг тогтворжуулсан:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, sturating_add_signed, srapping_add_signed}
    • i*::{checked_add_insigned, overflowing_add_unsigned, sturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_insigned, overflowing_sub_unsigned, saturating_sub_unsigned, sturing_sub_insigned}
    • BTreeSet::{эхний, сүүлчийн, хамгийн түрүүнд, хамгийн сүүлд}
    • BTreeMap::{эхний_түлхүүр_утга, сүүлчийн_түлхүүр_утга, эхний_оруулга, сүүлийн_оруулга, эхний_оруулга, хамгийн_сүүлд гарч ирэх}
    • WASI-г ашиглах үед stdio түгжээний төрлүүдэд зориулсан AsFd хэрэгжүүлэлтийг нэмнэ үү.
    • impl TryFrom > Хайрцагны хувьд<[T; N]>
    • үндсэн :: зөвлөмж :: хар хайрцаг
    • Үргэлжлэх хугацаа::try_from_secs_{f32,f64}
    • Сонголт :: задлах
    • std::os::fd
  • Загваруудад "..X" ба "..=X" мужуудыг зөвшөөрдөг.
  • Rustc хөрвүүлэгчийн урд хэсэг болон LLVM арын хэсгийг бүтээхдээ үүссэн кодын гүйцэтгэлийг нэмэгдүүлэх, санах ойн хэрэглээг багасгахын тулд LTO (Link Time Optimization) болон BOLT (Binary Optimization and Layout Tool) оновчтой горимуудыг ашигладаг.
  • armv5te-none-eabi болон thumbv5te-none-eabi платформуудад зориулсан XNUMX-р түвшний дэмжлэгийг хэрэгжүүлсэн. Гурав дахь түвшин нь үндсэн дэмжлэгийг агуулдаг боловч автоматжуулсан туршилтгүйгээр, албан ёсны бүтээлийг нийтлэх, кодыг бүтээх чадварыг шалгах явдал юм.
  • macOS-ийн ерөнхий номын сангуудтай холбох дэмжлэг нэмэгдсэн.

Нэмж дурдахад бид Rust хэлний (gccrs) урд талын хөрвүүлэгчийг GCC кодын санд оруулсныг тэмдэглэж болно. Фронт хэсэг нь 13 оны 2023-р сард худалдаанд гарах GCC 13 салбарт багтсан болно. GCC 13-аас эхлэн стандарт GCC хэрэгслийг LLVM хөгжүүлэлтийг ашиглан бүтээсэн rustc хөрвүүлэгчийг суулгах шаардлагагүйгээр Rust програмуудыг эмхэтгэхэд ашиглах боломжтой болно. GCC XNUMX дахь Rust хэрэгжилт нь өгөгдмөлөөр идэвхжээгүй бета төлөвт байх болно.

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

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