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

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

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

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

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

  • Future::Output-тай синхрончлолгүй функцүүдийн хувьд буцах утгыг үл тоомсорловол анхааруулга агуулсан "#[заавал_ашиглах]" тэмдэглэгээг зааж өгөх боломжтой болсон бөгөөд энэ нь функц утгуудыг өөрчилнө гэсэн таамаглалаас үүссэн алдааг тодорхойлоход тусална. шинэ утга буцаахын оронд. #[заавал_ашиглах] async fn bar() -> u32 {0} async fn caller() {bar().await; } анхааруулга: ашиглагдах ёстой `bar`-аар буцаасан ирээдүйн ашиглагдаагүй гаралт —> src/lib.rs:5:5 | 5 | bar().хүлээх; | ^^^^^^^^^^^ | = тэмдэглэл: Анхдагчаар `#[сануулах(ашиглагдаагүй_хэрэглэх)]' асаалттай
  • FIFO queues std::sync::mpsc (олон үйлдвэрлэгчийн нэг хэрэглэгч)-ийн хэрэгжилт шинэчлэгдсэн бөгөөд энэ нь өмнөх API-г хадгалахын зэрэгцээ хөндлөн сувгийн модулийг ашиглахад шилжсэн. Шинэ хэрэгжилт нь хэд хэдэн асуудлыг шийдэж, илүү өндөр гүйцэтгэл, хялбаршуулсан код засвар үйлчилгээ зэргээрээ онцлог юм.
  • API-ийн шинэ хэсгийг тогтвортой гэсэн ангилалд шилжүүлж, шинж чанаруудын арга, хэрэгжилтийг тогтворжуулсан:
    • {бүхэл тоо}::checked_ilog
    • {бүхэл тоо}::checked_ilog2
    • {бүхэл тоо}::checked_ilog10
    • {бүхэл тоо}::ilog
    • {бүхэл тоо}::ilog2
    • {бүхэл тоо}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • Тэг биш*::BITS
  • Үүнийг тогтмолуудын оронд ямар ч нөхцөлд ашиглах боломжийг тодорхойлдог "const" шинж чанарыг дараах функцүүдэд ашигладаг.
    • char::from_u32
    • тэмдэгт:: цифрээс
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Гурав дахь түвшний дэмжлэгийг Linux цөмд (linuxkernel), мөн Sony PlayStation 1 (mipsel-sony-psx), AIX бүхий PowerPC (powerpc64-ibm-aix), QNX Neutrino RTOS (linuxkernel)-д ашиглахад зориулж хэрэгжүүлсэн. aarch64-үл мэдэгдэх-nto-) платформууд qnx710, x86_64-pc-nto-qnx710). Гурав дахь түвшин нь үндсэн дэмжлэгийг агуулдаг боловч автоматжуулсан туршилт, албан ёсны бүтээлийг нийтлэх, кодыг бүтээх боломжтой эсэхийг шалгахгүйгээр.

Нэмж дурдахад, ARM-ээс AArch64 архитектурт суурилсан системд угсарсан драйверууд болон Линуксийн цөмийн модулиудыг Rust хэлийг ашиглах боломжийг олгодог засваруудыг нийтэлж байгааг тэмдэглэж болно.

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

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