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

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

#

Выпуск языка программирования Rust 1.67
Дата публикации:Thu, 26 Jan 2023 21:56:53 +0300




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



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



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




Основные новшества:
  • Для функций async с Future::Output реализована возможность указания аннотаций "#[must_use]", включающих вывод предупреждения в случае игнорирования возвращаемого значения, что помогает выявить ошибки, вызванные предположением, что функция изменит значения, а не вернёт новое значение.

    #[must_use]
    async fn bar() -> u32 { 0 }

    async fn caller() {
    bar().await;
    }

    warning: unused output of future returned by `bar` that must be used
    --> src/lib.rs:5:5
    |
    5 | bar().await;
    | ^^^^^^^^^^^
    |
    = note: `#[warn(unused_must_use)]` on by default


    Обновлена реализация FIFO-очередей std::sync::mpsc (multi-producer single-consumer), которая переведена на использование модуля crossbeam-channel с сохранением прежнего API. Новая реализация отличается решением ряда проблем, более высокой производительностью и упрощением сопровождения кода.

    В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
    • {integer}::checked_ilog
      [/url]
    • {integer}::checked_ilog2
      [/url]
    • {integer}::checked_ilog10
      [/url]
    • {integer}::ilog
      [/url]
    • {integer}::ilog2
      [/url]
    • {integer}::ilog10
      [/url]
    • NonZeroU*::ilog2
      [/url]
    • NonZeroU*::ilog10
      [/url]
    • NonZero*::BITS
      [/url]
Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функциях:
    • char::from_u32
      [/url]
    • char::from_digit
      [/url]
    • char::to_digit
      [/url]
    • core::char::from_u32
      [/url]
    • core::char::from_digit
      [/url]

Реализован третий уровень поддержки для использования Rust в ядре Linux (linuxkernel), а также для платформ Sony PlayStation 1 (mipsel-sony-psx), PowerPC с AIX (powerpc64-ibm-aix), QNX Neutrino RTOS (aarch64-unknown-nto-qnx710, x86_64-pc-nto-qnx710). Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.




Дополнительно можно отметить публикацию компанией ARM патчей, позволяющих использовать язык Rust для разработки драйверов и модулей ядра Linux, собираемых для систем на базе архитектуры AArch64.

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

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

Ответить