Rust 1.52 programmeringsspråkutgivelse

Utgivelsen av systemprogrammeringsspråket Rust 1.52, grunnlagt av Mozilla-prosjektet, men nå utviklet i regi av den uavhengige ideelle organisasjonen Rust Foundation, er publisert. Språket fokuserer på minnesikkerhet, gir automatisk minnebehandling og gir midler til å oppnå høy oppgaveparallellisme uten å bruke en søppeloppsamler eller kjøretid (kjøretiden reduseres til grunnleggende initialisering og vedlikehold av standardbiblioteket).

Rusts automatiske minnebehandling eliminerer feil ved manipulering av pekere og beskytter mot problemer som oppstår fra lavnivå minnemanipulering, som tilgang til et minneområde etter at det har blitt frigjort, null-pekereferanser, bufferoverskridelser, etc. For å distribuere biblioteker, sikre montering og administrere avhengigheter, utvikler prosjektet Cargo-pakkebehandleren. Crates.io-depotet støttes for hosting av biblioteker.

Hovedinnovasjoner:

  • Убрана привязка к порядку выполнения команд «cargo check» и «cargo clippy». Раньше вызов «cargo clippy» после «cargo check» не приводил к запуску утилиты clippy (linter) из-за отсутствия разделения кэшей для данных режимов проверки. Теперь эта проблема решена и порядок вызова «cargo clippy» и «cargo check» перестал иметь значение.
  • En ny del av API-en har blitt overført til den stabile kategorien, inkludert følgende metoder er stabilisert:
    • Arguments::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::fra_siffer
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • «const»-attributtet, som bestemmer muligheten for å bruke det i enhver kontekst i stedet for konstanter, brukes i metodene:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Добавлена lint-проверка unsafe_op_in_unsafe_fn для определения обрамления unsafe-блоками unsafe-кода, используемого в unsafe-функциях.
  • Разрешено приведение mutable-указателей на массивы в форму указателей на тип, что и у элемента массива. let mut x: [usize; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
  • В clippy (linter) добавлено 9 новых проверок.
  • В пакетном менеджере cargo для пакетов реализована поддержка поля «manifest_path» в JSON. В репозиторий crates.io добавлена поддержка указания информации о лицензиях в формате SPDX 3.11.
  • Разрешено указание нескольких фильтров при выполнении тестов, например запуск «cargo test — foo bar» запустит все тесты, соответствующие маскам «foo» и «bar».
  • Применяемый по умолчанию инструментарий LLVM обновлён до версии LLVM 12.
  • Реализован третий уровень поддержки для платформ s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl и powerpc-unknown-openbsd. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

Kilde: opennet.ru

Legg til en kommentar