Дата публикации:Thu, 18 Sep 2025 22:48:20 +0300
Опубликован релиз языка программирования Rust 1.90, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Основные новшества:
- В Linux на компьютерах с архитектурой x86_64 для динамического связывания crate-пакетов по умолчанию задействован компоновщик LLD от проекта LLVM. Применение LLD по сравнению с компоновщиком BFD привело к повышению производительности связывания больших исполняемых файлов и проектов с большим объёмом отладочной информации, а также ускорению инкрементальной пересборки. В большинстве случаев LLD обратно совместим с BFD. В случае возникновения проблем можно вернуть BFD, указав в переменной окружения RUSTFLAGS флаг "-C linker-features=-lld" или добавив в файл конфигурации .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"] В пакетном менеджере cargo в команде "publish" реализована опция "--workspace", позволяющая автоматически опубликовать все пакты из выбранного рабочего пространства (набор пакетов, использующий один файл Cargo.lock и общий каталог результатов сборки), сохраняя порядок следования пакетов и учитывая зависимости между ними. В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
- [/url]
u{n}::checked_sub_signed
- [/url]
u{n}::overflowing_sub_signed
- [/url]
u{n}::saturating_sub_signed
- [/url]
u{n}::wrapping_sub_signed
- [/url]
impl Copy for IntErrorKind
- [/url]
impl Hash for IntErrorKind
- [/url]
impl PartialEq<&CStr> for CStr
- [/url]
impl PartialEq<CString> for CStr
- [/url]
impl PartialEq<Cow<CStr>> for CStr
- [/url]
impl PartialEq<&CStr> for CString
- [/url]
impl PartialEq<CStr> for CString
- [/url]
impl PartialEq<Cow<CStr>> for CString
- [/url]
impl PartialEq<&CStr> for Cow
- [/url]
impl PartialEq<CStr> for Cow
- [/url]
impl PartialEq<CString> for Cow
- [/url]
<[T]>::reverse
- [/url]
f32::floor
- [/url]
f32::ceil
- [/url]
f32::trunc
- [/url]
f32::fract
- [/url]
f32::round
- [/url]
f32::round_ties_even
- [/url]
f64::floor
- [/url]
f64::ceil
- [/url]
f64::trunc
- [/url]
f64::fract
- [/url]
f64::round
- [/url]
f64::round_ties_even
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63906