Издателска версия на езика за програмиране Rust 1.35

Се състоя релиз на системния език за програмиране Rust 1.35, развиван от проекта Mozilla. Езикът е фокусиран върху безопасната работа с паметта, осигурява автоматично управление на паметта и предоставя средства за постигане на висок паралелизъм при изпълнението на задачи, без да използва събирач на боклук и runtime.

Автоматичното управление на паметта в Rust освобождава разработчика от манипулиране с указатели и го защитава от проблеми, произтичащи от ниско ниво работа с паметта, като достъп до зона на паметта след нейното освобождаване, разименуване на нулеви указатели, излизане извън границите на буфера и т.н. За разпространение на библиотеки, осигуряване на компилация и управление на зависимости, проектът се развива чрез пакетен мениджър. Cargo, който позволява да получите необходимите библиотеки за програмата с едно кликване. За хостване на библиотеки се поддържа хранилище crates.io.

Основни нововъведения:

  • Типажи (trait) FnOnce, FnMut и Fn реализирани за heap-място boxed-типове Box‹dyn FnOnce›, Box‹dyn FnMut› и Box‹dyn Fn›;
  • Добавено възможност за привеждане на замикания до небезопасни указатели на функции (unsafe fn);
  • Реализирана е възможността за извикване на макроса «dbg!» без аргументи, за да се покаже името на файла и номера на реда в stderr без инспектиране на променлива, което е удобно за отстраняване на грешки в условни изрази;
  • В типовете за числа с плаваща запетая f32 и f64 е добавен метод «copysign» за копиране на знака от едно число в друго;
  • В типовете Range* е добавен метод «contains«, позволяващ проверка дали посоченото значение попада в диапазона;
  • Добавен е метод Ref:Cell:map_split, позволяващ отразяване и разделяне на заеманото значение RefCell за различни компоненти на заеманите данни;
  • Добавен е метод RefCell::replace_with за замяна на текущото значение на RefCell и връщане на старото значение като резултат;
  • Добавен е метод ptr::hash за хеширане на указател или референция по адрес, а не на адресирана стойност;
  • Добавен е метод Option::copied за копиране на съдържанието на опции Option‹&T› или Option‹&mut T›;
  • В разряд стабилни е преведена нова порция API, в това число стабилизирани методи
    f32::copysign,
    f64::copysign,
    RefCell::replace_with,
    RefCell::map_split,
    ptr::hash,
    Range::contains,
    RangeFrom::contains,
    RangeTo::contains,
    RangeInclusive::contains,
    RangeToInclusive::contains и
    Option::copied;
  • В clippy (linter) е добавена проверка drop_bounds, която сработва при добавяне на свързваща «T: Drop» в функция;
  • В компилатора е добавена поддръжка за нова целева платформа
    wasm32-unknown-wasi (интерфейс WASI за използване на WebAssembly извън браузъра);
  • Инструментариумът Rust е адаптиран за дистрибуции на базата на стандартната библиотека на Си Musl.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster