Выпуск языка программирования Rust 1.69

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3261
Зарегистрирован: 20.08.2022

#

Выпуск языка программирования Rust 1.69
Дата публикации:Thu, 20 Apr 2023 22:53:36 +0300




Опубликован релиз языка программирования общего назначения Rust 1.69, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).



Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.



Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.




Основные новшества:
  • В пакетном менеджере Cargo реализовано определение предупреждений, которые могут быть автоматически устранены, и вывод соответствующих рекомендаций по запуску "cargo fix" или "cargo clippy --fix".

    warning: unused import: 'std::hash::Hash'
    --> src/main.rs:1:5
    |
    1 | use std::hash::Hash;
    | ^^^^^^^^^^^^^^^
    |
    = note: '#[warn(unused_imports)]' on by default

    warning: 'foo' (bin "foo") generated 1 warning (run 'cargo fix --bin "foo"' to apply 1 suggestion)


    В Cargo добавлен вывод рекомендации по использованию команды "cargo add" при попытке установки библиотеки командой "cargo install".

    Для сокращения времени компиляции по умолчанию прекращено включение отладочной информации в сборочных скриптах. При успешном выполнении сборочных скриптов изменение не приводит к каким-то видимым отличиям, но в случае сбоев дамп с обратной трассировкой будет содержать меньше информации. Для возвращения старого поведения в Cargo.toml следует добавить:

    [profile.dev.build-override]
    debug = true
    [profile.release.build-override]
    debug = true






    В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
    • CStr::from_bytes_until_nul
      [/url]
    • core::ffi::FromBytesUntilNulError
      [/url]

Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функциях:
    • SocketAddr::new
      [/url]
    • SocketAddr::ip
      [/url]
    • SocketAddr::port
      [/url]
    • SocketAddr::is_ipv4
      [/url]
    • SocketAddr::is_ipv6
      [/url]
    • SocketAddrV4::new
      [/url]
    • SocketAddrV4::ip
      [/url]
    • SocketAddrV4::port
      [/url]
    • SocketAddrV6::new
      [/url]
    • SocketAddrV6::ip
      [/url]
    • SocketAddrV6::port
      [/url]
    • SocketAddrV6::flowinfo
      [/url]
    • SocketAddrV6::scope_id
      [/url]
Добавлена возможность использования флагов true и false в аргументах компилятора.




Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=59008

Жизнь за Нер'зула!

Ответить