Релиз 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.

Материал опубликован при поддержке сайта habr.com
Комментарии

    Актуальные новости по теме "Array"