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

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

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

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

  • Нэмсэн зүсмэлүүдийн хэсгүүдэд тохирох загваруудын дэмжлэг (динамик массив, зүсмэл). Өмнө нь яг таарч тохирохыг зөвшөөрдөг байсан бол одоо массивын үлдсэн элементүүдийг хамрахын тулд ".." гэж тэмдэглэгдсэн бүтцийг ашиглах боломжтой болсон. Жишээлбэл:

    fn foo(үг: &[&str]) {
    тохирох үгс {

    // массивын эхлэлийн элементүүдийг шалгаж, үл тоомсорлодог
    тэдгээрийг дагаж буй элементүүд
    ["Сайн уу", "Дэлхий", "!", ..] => println!("Сайн уу Дэлхий!"),

    // "Foo" болон "Bar" гэсэн эхний хоёр элементийг шалгадаг бөгөөд бусад нь чухал биш юм
    ["Foo", "Bar", ..] => println!("Baz"),

    // бүх зүйлийг үл тоомсорлох боловч сүүлчийн элемент нь "!" байх ёстой.
    [..., “!”] => println!(“!!!”),

    // эхлэлийн хэсэгт "z" байх ёстой сүүлчийн элементээс бусад бүх зүйлийг оруулна.
    [эхлэх @ .., "z"] => println!("эхэлдэг: {:?}", эхлэх),

    // төгсгөлийн зүсэлтэнд бид "a" байх ёстой эхний элементээс бусад бүх зүйлийг тавьдаг.
    ["a", end @ ..] => println!("Төгсгөл: {:?}", төгсгөл),

    rest => println!("{:?}", үлдсэн),
    }
    }

  • Илэрхийлэл болон хэв маягийг оролт болгон авч, загвар илэрхийлэлтэй таарч байвал "үнэн" гэж буцаадаг шинэ макро "тохирох"-ыг нэмсэн. Загвар нь “|” үйлдлийг ашиглаж болно болон "хэрэв".

    тааруулах self.partial_cmp(бусад) {
    Зарим(Бага) => үнэн,
    _ => худал,
    }

    таарч байна!(self.partial_cmp(бусад), Зарим(Бага))

    let foo = 'f';
    батлах!(тохирох!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = Some(4);
    assert!(тохирох!(бар, Зарим(x) бол x > 2));

  • Буруу хэрэглэсэн үед сандрах мессежүүд гарч ирдэг
    Сонголт ба Үр дүн гэсэн төрлүүд, одоо libcore дахь дуудлагыг хэрэгжүүлэх кодын холбоосын оронд асуудалтай дуудлага хийсэн кодын холбоос бүхий мөрийн дугаарыг харуулна. Жишээлбэл, өөрчлөлт нь Option::None дээр задлах болон хүлээж авах дуудлагад нөлөөлөх эсвэл Үр дүнгийн төрөл дээр unwrap_err, expect, expect_err болон ижил төстэй аргуудыг ашиглах үед гацах болно.

  • Ачааны багц менежер нь процедурын макро бүхий багцын хувьд "proc_macro crate"-г "external" блок руу автоматаар орлуулах боломжийг олгодог. Энэхүү өөрчлөлт нь кодонд "extern crate proc_macro;"-г заах шаардлагагүйгээр "хэрэглэх" удирдамжийг процедурын макронд хэрэглэх боломжийг олгодог. Жишээлбэл, хэрэв програм "use proc_macro::TokenStream;" мөрийг ашигладаг бол "extern crate proc_macro;"-г устгавал код одоо ажиллах болно.
  • Стандарт номын сангийн чадавхийг өргөжүүлсэн. Үүнд:: Хоосон нэмсэн Аливаа T утгыг илгээх, синк хийх дэмжлэг.
    Дуудлагын пин::{map_unchecked, map_unchecked_mut} хүргэсэн "Хэмжээтэй" хэрэгжилтийн төрлийн утгыг буцаахаас.
    io:: Курсор хэрэгжүүлсэн PartialEq ба Eq. "const" шинж чанар нь тогтмолуудын оронд ямар ч нөхцөлд ашиглах боломжийг тодорхойлдог. хэрэглэсэн Layout::шинэ аргын хувьд.

  • API-ийн шинэ хэсэг нь тогтворжсон CondVar::wait_while, CondVar::wait_timeout_while, зэрэг тогтвортой ангилалд шилжсэн.
    DebugMap::key, DebugMap::утга,
    Гараар Drop::ав,
    ptr::slice_from_raw_parts_mut болон ptr::slice from From түүхий эд анги.

  • Error::description аргыг хуучирсан.
  • armv7a-none-eabi болон riscv64gc-unknown-linux-gnu платформуудад хоёр дахь түвшний дэмжлэг үзүүлсэн. riscv64gc-unknown-linux-gnu платформын стандарт номын санд дэмжлэг үзүүлсэн.
    Apple-ийн 32 битийн платформууд цол бууруулсан Гурав дахь түвшний дэмжлэг, энэ нь үндсэн дэмжлэгийг илэрхийлдэг боловч автоматжуулсан туршилт, албан ёсны бүтээн байгуулалтыг нийтлэхгүйгээр. Дэмжлэгийг бууруулсан нь Apple 32 битийн платформуудыг дэмжихээ больсонтой холбоотой.

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

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