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

Нийтэлсэн системийн програмчлалын хэлний хувилбар Зэв 1.43, Mozilla төслөөс үүсгэн байгуулсан. Энэ хэл нь санах ойн аюулгүй байдалд анхаарлаа төвлөрүүлж, санах ойн автомат удирдлагаар хангадаг бөгөөд хог цуглуулагч, хог хаягдал ашиглахгүйгээр өндөр түвшний параллелизмд хүрэх хэрэгслүүдээр хангадаг. ажиллах хугацаа.

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

Үндсэн инноваци:

  • Макро нь элементүүдийн хэсгүүдийг шинж чанар (шинж чанар), хэрэгжүүлэлт (impl) эсвэл гадаад блокуудын код болгон хувиргах боломжийг олгодог. Жишээлбэл:

    макро дүрэм! mac_trait {
    ($i: зүйл) => {
    шинж чанар T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Үе рүү хөтлөх болно:

    шинж чанар T {
    fn foo() {}
    }

  • Команд, лавлагаа болон хоёртын үйлдлийн төрлийг илрүүлэх сайжруулсан.
    Жишээлбэл, өмнө нь алдаа гаргаж байсан дараах кодыг одоо эмхэтгэх боломжтой болно (Зэв одоо 0.0 ба &0.0 нь f32 төрлийн байх ёстойг зөв тодорхойлсон):

    n: f32 = 0.0 + &0.0;

  • CARGO_BIN_EXE_{name} орчны шинэ хувьсагчийг Cargo-д нэмсэн бөгөөд энэ нь интеграцийн тест хийх үед тохируулагдсан бөгөөд багцын “[[bin]]” хэсэгт тодорхойлсон гүйцэтгэгдэх файлын бүрэн замыг тодорхойлох боломжийг олгодог.
  • Хэрэв мэдэгдэлд "#[cfg()]" гэх мэт шинж чанаруудыг ашиглахыг зөвшөөрсөн бол.
  • Номын сан нь модулийг импортлохгүйгээр бүхэл болон бутархай төрлүүдэд холбогдох тогтмолуудыг шууд ашиглах боломжийг олгодог. Жишээлбэл, та эхлээд "use std::u32" болон "use std::f32" гэж заалгүйгээр u32::MAX эсвэл f32::NAN гэж шууд бичиж болно.
  • Шинэ модуль нэмэгдсэн Балар эртний, энэ нь Rust анхдагч төрлүүдийг дахин экспортлодог, тухайлбал та макро бичих, төрлүүд нь нуугдаагүй эсэхийг шалгах шаардлагатай үед.
  • API-ийн шинэ хэсгийг тогтворжуулсан зэрэг тогтвортой ангилалд шилжүүлсэн

    Нэг удаа :: дууссан,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 болон
    iter :: one_with.

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

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