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

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

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

Шинэ хувилбарын зарын бичвэрт Rust хөгжүүлэгчид улс төрд оролцож, цагдаагийн хүчирхийллийн эсрэг жагсагчидтай эв санааны нэгдлийн шинж тэмдэг болгон Rust 1.44-ийн өөрчлөлтийн талаархи бүрэн тоймыг нийтлэхээс эрс татгалзсан нь энэ асуудал илүү чухал болохыг харуулж байна. техникийн мэдлэг солилцохоос илүү. Үндсэн инноваци:

  • Ачааны багц менежер нь "ачааны мод" командыг нэгтгэдэг бөгөөд энэ нь мод шиг хамааралтай графикийг харуулдаг. Мөн нэг багцын янз бүрийн хувилбаруудын хамаарлыг үнэлэх боломжийг олгодог "-давхардсан" ("ачааны мод -d") сонголтыг нэмсэн.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── аммиак v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── бүртгэлийн v0.4.8
    │ │ │ └── cfg-хэрэв v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── тэмдэглэгээ 5 удаа v0.9.0
    │ │ ├── бүртгэлийн v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [үүсгэх-хамаарал] │ │ │ └── хувилбар_шалгах v0.1.5
    ...

  • Std ("#![no_std]")-д холбогдоогүй програмуудын хувьд асинхрон програмчлалын техникийг "asyc" функц, асинхрон шилжих { ... } блок болон ".await" оператор дээр тулгуурлан хэрэгжүүлдэг. үндсэн командын урсгалыг блоклохгүй зохицуулагч бичихийг хялбарчлах.
  • Өргөтгөсөн модулийн шатлалын тодорхойлолтын схемийн дэмжлэгийг задлан шинжлэгч дээр нэмсэн. Жишээлбэл, "foo/bar/baz.rs" модуль байхгүй байсан ч дараах бүтэц нь алдаа гаргахгүй (бүтэц нь утгын хувьд хүчингүй хэвээр байгаа бөгөөд алдаа үүсгэж болзошгүй, гэхдээ өөрчлөлтийг эндээс харж, задлан шинжилж болно. макро болон нөхцөлт эмхэтгэлийн түвшин):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Rustc хөрвүүлэгч нь "-C codegen-units" тугийг өсөлттэй горимд ашиглах боломжийг нэмсэн. catch_unwind-ийн хэрэгжилтийг дахин боловсруулсан тул задлах үйл явцыг идэвхгүй болгож, үл хамаарах зүйл байхгүй тохиолдолд гүйцэтгэлд ямар ч нөлөө үзүүлэхгүй.
  • aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos болон x86_64-apple-tvos платформуудад XNUMX-р түвшний дэмжлэг үзүүлсэн. Гурав дахь түвшин нь үндсэн дэмжлэгийг агуулдаг боловч автоматжуулсан туршилт, албан ёсны бүтээн байгуулалтыг нийтлэхгүйгээр.
  • API-ийн шинэ хэсгийг тогтворжуулсан зэрэг тогтвортой ангилалд шилжүүлсэн
    PathBuf :: хүчин чадалтай,
    PathBuf:: хүчин чадал,
    PathBuf::clear,
    PathBuf :: нөөц,
    PathBuf::нөөц_яг,
    PathBuf::багасгах,
    {f32|f64}::to_int_checked,
    Layout::align_to,
    Layout ::align_to_pad,
    Layout::array болон
    Layout::extend.

  • Стандарт номын сангийн өргөтгөсөн функцууд:
    • Vec::new(-д шууд тусгагдсан "vec![]"-н тусгай хувилбарыг нэмсэн нь "vec![]"-г тогтмолуудын оронд контекст ашиглах боломжийг олгосон.
    • ::Infallibable хөрвүүлэхийн тулд шинж чанарын хэрэгжилтийг (impl) нэмсэн Хаш.
    • OsString нь ухаалаг заагчийг хэрэгжүүлдэг DerefMut и IndexMut, "&mut OsStr" буцаана.
    • Юникод 13-д зориулсан дэмжлэг нэмэгдсэн.
    • String дээр хэрэгжүүлсэн <&mut str>-аас.
    • IoSlice нь шинж чанарыг хэрэгжүүлдэг хуулбар.
    • Vec хэрэгжүүлсэн From<[T; N]>.
    • proc_macro::LexError нь fmt::Display болон алдааг хэрэгжүүлдэг.
  • Тогтмол тоонуудын оронд ямар ч контекст ашиглаж болох эсэхийг тодорхойлдог “const” шинж чанарыг бүх бүхэл тоон төрлүүдэд from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes, to_ne_bytes аргуудад ашигладаг.
  • Windows дээрх GNU платформуудад зориулсан ".lib"-ийн оронд ".a" форматаар статик номын санг үүсгэх дэмжлэг нэмэгдсэн.
  • LLVM-д тавигдах хамгийн бага шаардлагыг LLVM хувилбар 8 болгон нэмэгдүүлсэн.

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

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