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

Објављено је издање системског програмског језика Руст 1.52, који је основао пројекат Мозилла, али је сада развијен под окриљем независне непрофитне организације Руст Фоундатион. Језик се фокусира на безбедност меморије, обезбеђује аутоматско управљање меморијом и обезбеђује средства за постизање високог паралелизма задатака без коришћења сакупљача смећа или времена извршавања (време извођења се своди на основну иницијализацију и одржавање стандардне библиотеке).

Руст-ово аутоматско управљање меморијом елиминише грешке приликом манипулације показивачима и штити од проблема који произилазе из манипулације меморијом ниског нивоа, као што је приступ меморијском региону након што је он ослобођен, нулте референце показивача, прекорачење бафера итд. Да би дистрибуирао библиотеке, обезбедио склапање и управљао зависностима, пројекат развија Царго пакет менаџер. Репозиторијум цратес.ио је подржан за хостовање библиотека.

Главне иновације:

  • Убрана привязка к порядку выполнения команд «cargo check» и «cargo clippy». Раньше вызов «cargo clippy» после «cargo check» не приводил к запуску утилиты clippy (linter) из-за отсутствия разделения кэшей для данных режимов проверки. Теперь эта проблема решена и порядок вызова «cargo clippy» и «cargo check» перестал иметь значение.
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы:
    • Arguments::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • цхар::фром_дигит
    • char::from_u32_unchecked
    • цхар::фром_у32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Атрибут „цонст“, који одређује могућност његовог коришћења у било ком контексту уместо константи, користи се у методама:
    • 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. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

Извор: опеннет.ру

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