Vydanie programovacieho jazyka Rust 1.54

Vyšlo vydanie systémového programovacieho jazyka Rust 1.54, založeného projektom Mozilla, no teraz vyvinutého pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje prostriedky na dosiahnutie vysokého paralelizmu úloh bez použitia garbage collectora alebo runtime (runtime je zredukované na základnú inicializáciu a údržbu štandardnej knižnice).

Automatická správa pamäte Rust eliminuje chyby pri manipulácii s ukazovateľmi a chráni pred problémami vznikajúcimi pri manipulácii s pamäťou na nízkej úrovni, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencie nulového ukazovateľa, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, zabezpečenie montáže a správu závislostí projekt vyvíja správcu balíkov Cargo. Úložisko crates.io je podporované pre hosťovanie knižníc.

Hlavné inovácie:

  • Добавлена возможность использования внутри атрибутов макросов, напоминающих функции (процедурные макросы и макросы, созданные при помощи макроса «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 из-за выявления скрытых ошибок, всплывших после добавления дополнительной проверки загрузки данных из дискового кэша.
  • Nová časť API bola presunutá do stabilnej kategórie, vrátane nasledujúcich stabilizovaných:
      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
  • В cargo-tree добавлены опции: «—prune <spec>» для удаления пакета из графа зависимостей, «—depth» для вывода только элементов заданного уровня вложенности в дереве зависимостей, «—edges no-proc-macro» для скрытия зависимостей процедурных макросов.

Zdroj: opennet.ru

Pridať komentár