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]")-тай холбогдоогүй програмуудын хувьд "async" функц, async move { ... } блок болон ".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 платформуудад 3-р түвшний дэмжлэгийг идэвхжүүлсэн. Түвшин 3 нь үндсэн дэмжлэгийг өгдөг боловч автоматжуулсан туршилт эсвэл албан ёсны хувилбаруудгүйгээр.
  • API-ийн шинэ хэсгийг тогтворжуулсан зэрэг тогтвортой ангилалд шилжүүлсэн
    PathBuf :: хүчин чадалтай,
    PathBuf:: хүчин чадал,
    PathBuf::clear,
    PathBuf :: нөөц,
    PathBuf::нөөц_яг,
    PathBuf::багасгах,
    {f32|f64}::to_int_checked,
    Layout::align_to,
    Layout::align_to_pad,
    Layout::array болон
    Зохион байгуулалт:: сунгах.
  • Стандарт номын сангийн өргөтгөсөн функцууд:
    • Vec::new(-д шууд тусгагдсан "vec![]"-н тусгай хувилбарыг нэмсэн нь "vec![]"-г тогтмолуудын оронд контекст ашиглах боломжийг олгосон.
    • ::Infallibable хөрвүүлэхийн тулд шинж чанарын хэрэгжилтийг (impl) нэмсэн Хаш.
    • OsString нь ухаалаг заагчийг хэрэгжүүлдэг DerefMut и IndexMut, "&mut OsStr"-г буцаана.
    • Юникод 13-д зориулсан дэмжлэг нэмэгдсэн.
    • String дээр хэрэгжүүлсэн <&mut str>-аас.
    • IoSlice нь шинж чанарыг хэрэгжүүлдэг хуулбар.
    • Век-д хэрэгжүүлсэн 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

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