В конце ноября 2024 года состоялся релиз языка программирования Rust 1.83. Выпуск версии проекта Rust 1.80 произошёл в июле этого года.
По информации OpenNET, язык Rust сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Основные изменения и дополнения в Rust 1.83:
добавлены новые возможности для кода в контексте «const», вычисляемого на этапе компиляции и пригодного для использования вместо констант. Добавлена возможность определения с признаком «const» ссылок на значения, инициализированные с признаком «static», при условии, что ссылка выставляется на не изменяемые статические переменные (без признака «mut»). При этом возможно использование в качестве констант raw-указателей, указывающих на изменяемый элемент;
разрешено использование в контексте констант изменяемых ссылок и указателей (с признаком «mut»), но подобные изменяемые ссылки и указатели допускаются только внутри блока для вычисления константы, но не могут указываться в финальном значении константы;
стабилизировано применение &Cell и *const Cell в контексте констант;
в разряд стабильных перевели несколько десятков API, в том числе методы и реализации типажей;
реализован третий уровень поддержки для платформ aarch64_unknown_nto_qnx700, arm64e-apple-tvos, armv7-rtems-eabihf, loongarch64-unknown-linux-ohos, riscv32-wrs-vxworks and riscv64-wrs-vxworks, riscv32{e|em|emc}-unknown-none-elf, x86_64-unknown-hurd-gnu и x86_64-unknown-trusty. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода;
требования к минимальной внешней версии LLVM подняты до ветки 18. Прекращена поддержка компилятора Visual Studio 2013.
Источник: habr.com