Релиз Rust 1.83

от автора

В конце ноября 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.


ссылка на оригинал статьи https://habr.com/ru/articles/862408/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *