Опубликован релиз языка системного программирования Rust 1.52, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Основные новшества:
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55098
Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Основные новшества:
- Убрана привязка к порядку выполнения команд "cargo check" и "cargo clippy". Раньше вызов "cargo clippy" после "cargo check" не приводил к запуску утилиты clippy (linter) из-за отсутствия разделения кэшей для данных режимов проверки. Теперь эта проблема решена и порядок вызова "cargo clippy" и "cargo check" перестал иметь значение.
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы:
- Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в методах:
- Добавлена 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 . Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55098