Выпуск языка программирования Rust 1.66
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликован релиз языка программирования общего назначения Rust 1.66, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Основные новшества:
- В перечислениях c целочисленными представлениями (атрибутом "#[repr(Int)]") разрешено явное указание дискриминанта (номера варианта в перечислении), даже если перечисление содержит поля.
#[repr(u8)]
enum Foo {
A(u8), # дискриминант 0
B(i8), # дискриминант 1
C(bool) = 42, # дискриминант 42
}
- Добавлена функция core::hint::black_box, которая просто возвращает назад принятое значение. Так как компилятор считает, что данная функция выполняет определённое действие, функцию black_box можно использовать для отключения оптимизации компилятором циклов при проведении тестирования производительности кода или при изучении генерируемого машинного кода (чтобы компилятор не посчитал код неиспользуемым и не убрал его). Например, в примере ниже указание black_box(v.as_ptr()) не позволяет компилятору считать, что вектор v не используется.
use std::hint::black_box;
fn push_cap(v: &mut Vec) {
for i in 0..4 {
v.push(i);
black_box(v.as_ptr());
}
}
- В пакетном менеджере "cargo" предложена команда "remove", позволяющая из командной строки удалять зависимости из манифеста Cargo.toml.
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
- proc_macro::Span::source_text
- u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
- i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
- i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
- BTreeSet::{first, last, pop_first, pop_last}
- BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
- Реализации Add AsFd для типов блокировок stdio при применении WASI.
- impl TryFrom<Vec<T>> для Box<[T; N]>
- core::hint::black_box
- Duration::try_from_secs_{f32,f64}
- Option::unzip
- std::os::fd
- В шаблонах разрешено применение диапазонов "..X" и "..=X".
- При сборке фронтэнда компилятора rustc и бэкенда LLVM задействованы режимы оптимизации LTO (Link Time Optimization) и BOLT (Binary Optimization and Layout Tool), позволяющие увеличить производительность результирующего кода и снизить потребление памяти.
- Реализован третий уровень поддержки для платформ armv5te-none-eabi и thumbv5te-none-eabi. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
- Добавлена поддержка связывания с универсальными библиотеками macOS.
Дополнительно можно отметить включение в кодовую базу GCC фронтэнда компилятора языка Rust (gccrs). Фронтэнд включён в ветку GCC 13, релиз которой состоится в мае 2023 года. Начиная с GCC 13 штатный инструментарий GCC сможет использоваться для компиляции программ на языке Rust без необходимости установки компилятора rustc, построенного с использованием наработок LLVM. Реализация Rust в GCC 13 будет иметь статус бета-версии, не включаемой по умолчанию.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: Фронтэнд для языка Rust доведён до готовности к интеграции в GCC 13
- OpenNews: Около 21% нового компилируемого кода в Android 13 написано на языке Rust
- OpenNews: Выпуск Arti 1.1, официальной реализации Tor на языке Rust
- OpenNews: Выпуск операционной системы Redox OS 0.8, написанной на языке Rust
- OpenNews: Выпуск языка программирования Rust 1.65
Похожие новости:
- Фронтэнд для языка Rust доведён до готовности для интеграции в GCC 13
- Выпуск Buttplug 6.2, открытой библиотеки для управления внешними устройствами
- Выпуск Arti 1.1, официальной реализации Tor на языке Rust
- Доступен Wasmer 3.0, инструментарий для создания приложений на базе WebAssembly
- Выпуск операционной системы Redox OS 0.8, написанной на языке Rust
- Открытый драйвер Rusticl сертифицирован на совместимость с OpenCL 3.0
- АНБ рекомендует переходить на языки программирования, безопасно работающие с памятью
- Выпуск языка программирования Rust 1.65
- В ядро Linux 6.1 приняты изменения, обеспечивающие поддержку языка Rust
- Десятая версия патчей для ядра Linux с поддержкой языка Rust
Теги для поиска: #_rust
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 18:21
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликован релиз языка программирования общего назначения Rust 1.66, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. Основные новшества:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 18:21
Часовой пояс: UTC + 5