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

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

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

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

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

  • Үндсэн функцээс өөрийн буцах кодыг тодорхойлох боломжтой. Уг нь Rust-ийн үндсэн функц нь зөвхөн "()" (нэгж) төрлийг буцаах боломжтой байсан ба энэ нь хөгжүүлэгч "process::exit(code)" функцийг тодорхой дуудаагүй л бол амжилттай гарах төлөвийг үргэлж зааж өгдөг. Rust 1.26-д үндсэн функцэд тогтворгүй Дуусгах шинж чанарыг ашиглан C программ дахь EXIT_SUCCESS болон EXIT_FAILURE кодтой харгалзах "Ok" ба "Err" утгуудыг буцаах боломжтой болсон. Rust 1.61-д Дуусгах шинж чанарыг тогтвортой болгож, тусгай буцаах кодыг төлөөлөх тусдаа ExitCode төрлийг санал болгосон бөгөөд энэ нь урьдчилан тодорхойлсон АМЖИЛТ болон БҮТГЭЛТИЙН тогтмолууд болон From аргыг хоёуланг нь өгөх замаар платформд хамаарах өгөөжийн төрлүүдийг хураангуй болгодог. дур мэдэн буцаах кодыг буцаах. std::process::ExitCode ашиглах; fn main() -> ExitCode { if !check_foo() { ExitCode::from(8) буцаана; } Гарах код::АМЖИЛТ }
  • "const fn" илэрхийллээр тодорхойлсон функцүүдийн нэмэлт боломжуудыг тогтворжуулсан бөгөөд үүнийг зөвхөн ердийн функц гэж нэрлээд зогсохгүй тогтмолуудын оронд ямар ч нөхцөлд ашиглаж болно. Эдгээр функцууд нь ажиллах үед биш эмхэтгэх үед тооцогддог тул зөвхөн тогтмолуудаас унших боломжтой гэх мэт тодорхой хязгаарлалттай байдаг. Шинэ хувилбарт функцийн заагчтай үндсэн үйлдлүүдийг const функц дотор зөвшөөрдөг (заагчийг үүсгэх, дамжуулах, дамжуулахыг зөвшөөрдөг, гэхдээ функцийг заагчаар дууддаггүй); const функцуудын ерөнхий параметрүүдийн шинж чанарын хязгаарууд, тухайлбал T: Copy; динамикаар дамжуулж болох шинж чанарууд (dyn Trait); impl Функцийн аргументууд болон буцах утгуудын шинж чанарын төрлүүд.
  • Уг урсгал нь std::io доторх Stdin, Stdout болон Stderr-г зохицуулдаг бөгөөд одоо түгжигдсэн үед статик ажиллах хугацаатай (“статик”) “let out = std::io::stdout().lock();” гэх мэт бүтцийг бий болгох боломжийг олгодог. нэг илэрхийлэлд бариул авч, түгжээ тогтоох.
  • API-ийн шинэ хэсгийг тогтвортой гэсэн ангилалд шилжүүлж, шинж чанаруудын арга, хэрэгжилтийг тогтворжуулсан:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Курсорыг бичих
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::Дуусгах
    • std :: thread :: JoinHandle :: дууссан
  • Үүнийг тогтмолуудын оронд ямар ч нөхцөлд ашиглах боломжийг тодорхойлдог "const" шинж чанарыг дараах функцүүдэд ашигладаг.
    • ::offset ба ::offset
    • ::wrapping_offset болон ::wrapping_offset
    • ::add ба ::add
    • :: sub болон :: sub
    • ::wrapping_add болон ::wrapping_add
    • ::wrapping_sub болон ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Нэмж дурдахад, та програм хангамжид ашигладаг Xous микро цөмийн үйлдлийн системийг хөгжүүлэх явцад 100 мянган мөр код бичсэний дараа Rust хэлний сэтгэгдлийн хураангуй бүхий "Rust: Critical Retrospective" нийтлэлийг тэмдэглэж болно. Сул тал нь ойлгоход хэцүү синтакс, хэлийг бүрэн бус, тасралтгүй хөгжүүлж, давтагдах бүтэц дутагдалтай, Crates.io-д итгэх итгэлтэй холбоотой ердийн асуудлууд, аюулгүй код бичихийн тулд тодорхой сахилга баттай байх шаардлагатай. Хүлээгдэж байснаас давсан онцлогууд нь хурдан загварчлалын явцад нэмсэн кодыг дахин боловсруулах, "хакердах" арга хэрэгслийг багтаасан болно.

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

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