Руст 1.44 Издание за програмски јазик

објавено издавање на системски програмски јазик Рѓа 1.44, основана од проектот Mozilla. Јазикот се фокусира на безбедноста на меморијата, обезбедува автоматско управување со меморијата и обезбедува алатки за постигнување висок паралелизам на задачите без користење на собирач на ѓубре и траење.

Автоматското управување со меморијата на Rust ги елиминира грешките при манипулирање со покажувачите и заштитува од проблеми што произлегуваат од манипулација со меморијата на ниско ниво, како што се пристап до мемориски регион откако ќе се ослободи, дереференции на нула покажувач, пречекорувања на баферот итн. Се развива менаџер на пакети за дистрибуција на библиотеки, обезбедување на склопување и управување со зависностите од проектот. на товар, овозможувајќи ви да ги добиете библиотеките потребни за програмата со еден клик. Складиштето е поддржано за домаќини на библиотеки каси.io.

Во текстот на најавата за новото издание, програмерите на Rust се вклучија во политиката и остро одбија да објават целосен преглед на промените во Rust 1.44 како знак на солидарност со демонстрантите против полициското насилство, што укажува дека ова прашање е поважно отколку размена на техничко знаење. Основни иновации:

  • Менаџерот на пакети Cargo ја интегрира командата „cargo tree“, која прикажува график на зависност сличен на дрво. Додадена е и опцијата „—дупликати“ („карго дрво -d“), која ви овозможува да ги оценувате зависностите во различни верзии на истиот пакет.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── амонијак v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── дневник v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever 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 { ... } и операторот „.wait“, кој го поедностави пишувањето на главниот проток на команди на ракувачи кои не блокираат.
  • Во парсерот е додадена поддршка за шема за дефиниција на хиерархија на проширен модул. На пример, следната конструкција нема да произведе грешка, и покрај вистинското отсуство на модулот „foo/bar/baz.rs“ (конструкцијата сè уште е семантички неважечка и може да предизвика грешка, но промените може да се видат и анализираат на макро и условно ниво на компилација):

    #[cfg(FALSE)] мод храна {
    мод лента {
    мод баз;
    }
    }

  • Компајлерот rustc ја додаде можноста за користење на знамето „-C codegen-units“ во поединечен режим. Имплементацијата на catch_unwind е преработена така што нема влијание врз перформансите ако процесот на одмотување е оневозможен и не се исклучат исклучоци.
  • Поддршката на ниво 64 е обезбедена за платформите aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos и x64_XNUMX-apple-tvos. Третото ниво вклучува основна поддршка, но без автоматско тестирање и објавување на официјални изданија.
  • Нов дел од API е префрлен во стабилна категорија, вклучително и стабилизирани
    PathBuf::со_капацитет,
    PathBuf::капацитет,
    PathBuf::јасно,
    PathBuf::резерва,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Распоред::align_to,
    Распоред::pad_to_align,
    Распоред::низа и
    Распоред::продолжи.
  • Проширени функции на стандардната библиотека:
    • Додадена е специјална варијанта „vec![]“ која директно се рефлектира во Vec::new(), дозволувајќи „vec![]“ да се користи во контекст наместо константи.
    • Додадена е имплементација (impl) на особината за конвертирање::Infallible Хаш.
    • OsString имплементира паметни покажувачи ДерефМут и IndexMut, враќајќи го „&mut OsStr“.
    • Додадена е поддршка за Unicode 13.
    • Имплементиран во Стринг Од<&mut str>.
    • IoSlice ја имплементира карактеристиката Копирајте.
    • Век имплементиран од<[T; N]>.
    • proc_macro::LexError имплементира fmt::Display и Error.
  • Атрибутот „const“, кој одредува дали може да се користи во кој било контекст наместо константи, се користи во методите from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes и to_ne_bytes за сите типови цели броеви.
  • Додадена е поддршка за генерирање статични библиотеки во формат „.a“ ​​наместо „.lib“ за GNU платформи на Windows.
  • Минималните барања за LLVM се подигнати на LLVM верзија 8.

Извор: opennet.ru

Додадете коментар