Опубликован релиз языка системного программирования Rust 1.54, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Rustis tagab automaatne mälu haldus arendajale kaitse, vabastades ta erinevate näidikute käsitlemise vigadest ja kaitstes mäluga madalat tööd tehes tekkivate probleemide eest, nagu juurdepääs vabastatud mälu alale, nullviidete lahtimuukimine, puutumatuse ületamine jne. Raamatukogude jagamiseks, ehitamise tagamiseks ja sõltuvuste haldamiseks arendatakse pakihaldur Cargo. Raamatukogude majutamiseks toetatakse reposiiti crates.io.
Põhilised uuendused:
- Добавлена возможность использования внутри атрибутов макросов, напоминающих функции (процедурные макросы и макросы, созданные при помощи макроса «macro_rules!»). От функций подобные макросы отличаются символом «!» после имени (macro!(…)) и подстановкой исходного текста макроса вместо генерирования вызова функции. Вызов макросов внутри атрибутов может оказаться полезным для включения в документирующие комментарии содержимого из других файлов. Например, для вставки содержимого файла README и результата выполнения скрипта можно указать: #![doc = include_str!(«README.md»)] #[path = concat!(env!(«OUT_DIR»), «/generated.rs»)] mod generated;
- Стабилизированы встроенные в компилятор функции (Intrinsics) для платформы wasm32, позволяющие использовать инструкции SIMD в WebAssembly. Большая часть функций, таких как v128_bitselect, доступны в режиме «safe», но некоторые функции работающие с указателями (например, v128_load) остаются «unsafe».
- Возвращено применение по умолчанию инкрементальной компиляции, позволяющей пересобирать только изменившиеся части кода, что позволяет значительно сократить время сборки проекта при повторной компиляции после внесения мелких правок. Инкрементальная компиляция была отключена в выпуске 1.52.1 из-за выявления скрытых ошибок, всплывших после добавления дополнительной проверки загрузки данных из дискового кэша.
- В разряд стабильных переведена новая порция API, в том числе стабилизированы:
- BTreeMap::into_keys
- BTreeMap::into_values
- HashMap::into_keys
- HashMap::into_values
- arch::wasm32
- VecDeque::binary_search
- VecDeque::binary_search_by
- VecDeque::binary_search_by_key
- VecDeque::partition_point
Allikas: opennet.ru
