Выпуск языка программирования Rust 1.71
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликован релиз языка программирования общего назначения Rust 1.71, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Основные новшества:
- Стабилизирован ABI C-unwind ('extern "C-unwind"'), который отличается от ABI без суффикса "-unwind" ('extern "C"') сохранением безопасного поведения (safe), если процесс "размотки" (unwinding), инициируемый при аварийном завершении программы или генерации исключения в стиле C++, пересекает границу ABI (например, когда исключение, возникшее в коде на одном языке программирования, при размотке затрагивает стек, связанный с кодом на другом языке программирования).
- Стабилизирована поддержка атрибутов '#[debug_visualizer(natvis_file = "...")]' и '#[debug_visualizer(gdb_script_file = "...")]', позволяющих встраивать в Rust-библиотеки метаданные Microsoft Natviz и скрипты GDB для улучшения отладочного вывода при инспектировании структур данных, создаваемых библиотеками. Подобные скрипты уже включаются для стандартной библиотеки, а теперь появилась возможность их включения и для сторонних библиотек.
- На платформе Windows реализована возможность использования функций из динамических библиотек, которые недоступны во время сборки (например, чтобы не устанавливать лишние библиотеки в сборочное окружение и упростить кросс-компиляцию). Для связывания с отсутствующими библиотеками в атрибуте "#[link]" предложена опция 'kind="raw-dylib"'.
- Целевые платформы, использующие Си-библиотеку Musl ("*-linux-musl"),
переведены на выпуск Musl 1.2.3 (ранее использовалась версия 1.1.24), что позволяет использовать тип time64 на 32-разрядных системах.
- В стандартной библиотеке предложен вариант макроса thread_local, инициализируемый с признаком "const", допускающим использование в контексте вместо констант, что позволяет генерировать более оптимальный код.
use std::cell::Cell;
thread_local! {
pub static FOO: Cell = const { Cell::new(1) };
}
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
- CStr::is_empty
- BuildHasher::hash_one
- NonZeroI*::is_positive
- NonZeroI*::is_negative
- NonZeroI*::checked_neg
- NonZeroI*::overflowing_neg
- NonZeroI*::saturating_neg
- NonZeroI*::wrapping_neg
- Neg for NonZeroI*
- Neg for &NonZeroI*
- From<[T; N]> for (T...)
- From<(T...)> for [T; N]
- windows::io::AsHandle for Box<T>
- windows::io::AsHandle for Rc<T>
- windows::io::AsHandle for Arc<T>
- windows::io::AsSocket for Box<T>
- windows::io::AsSocket for Rc<T>
- windows::io::AsSocket for Arc<T>
- Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функциях:
- В пакетном менеджере Cargo разрешено указание именованных опций debuginfo в файле Cargo.toml. В метаданные добавлена опция workspace_default_members. При выполнении команд "cargo new" и "cargo init" обеспечено автоматическое наследование полей рабочих пространств (workspace).
- Реализован второй уровень поддержки целевой платформы loongarch64-unknown-linux-gnu. Второй уровень поддержки подразумевает гарантию сборки.
- Реализован третий уровень поддержки для платформы x86_64h-apple-darwin. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: Выпуск языка программирования Rust 1.70
- OpenNews: Представлен Crab, форк языка Rust, избавленный от бюрократии
- OpenNews: Google опубликовал результат аудита используемых пакетов на языке Rust
- OpenNews: Компания Microsoft добавит код на Rust в ядро Windows 11
- OpenNews: Изменение политики товарных знаков Rust Foundation
Похожие новости:
- Компания Cisco предложила файловую систему PuzzleFS для ядра Linux
- Выпуск языка программирования Rust 1.70
- Представлен Crab, форк языка Rust, избавленный от бюрократии
- Google опубликовал результат аудита используемых пакетов на языке Rust
- Проект по реализации утилит sudo и su на языке Rust
- Выпуск языка программирования Rust 1.69
- Изменение политики товарных знаков Rust Foundation
- Выпуск rPGP 0.10, реализации OpenPGP на языке Rust
- Выпуск языка программирования Rust 1.68
- Для рецензирования предложен Linux-драйвер для GPU Apple AGX, написанный на Rust
Теги для поиска: #_rust
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:21
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликован релиз языка программирования общего назначения Rust 1.71, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. Основные новшества:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:21
Часовой пояс: UTC + 5