Випуск мови програмування Rust 1.35

Відбувся реліз мови системного програмування Іржа 1.35, що розвивається проектом Mozilla. Мова сфокусована на безпечній роботі з пам'яттю, забезпечує автоматичне керування пам'яттю та надає засоби для досягнення високого паралелізму виконання завдань, при цьому обходячись без використання збирача сміття та runtime.

Автоматичне управління пам'яттю в Rust позбавляє розробника від маніпулювання покажчиками і захищає від проблем, що виникають через низькорівневу роботу з пам'яттю, таких як звернення до пам'яті після її звільнення, розіменування нульових покажчиків, вихід за межі буфера і т.п. Для поширення бібліотек, забезпечення складання та управління залежностями проектом розвивається пакетний менеджер Вантаж, що дозволяє отримати необхідні програми бібліотеки в один клік. Для розміщення бібліотек підтримується репозиторій crates.io.

Основні нововведення:

  • Типажі (trait) FnOnce, FnMut и Fn реалізовані для розміщених у купі boxed-типів Box‹dyn FnOnce›, Box‹dyn FnMut› та Box‹dyn Fn›;
  • Додана можливість приведення замикань до небезпечних покажчиків на функції (unsafe fn);
  • Реалізовано можливість виклику макросу «dbg!» без аргументів для відображення в stderr імені файлу та номера рядка без інспектування змінної, що зручно для налагодження спрацьовування умовних виразів;
  • У типи для чисел з плаваючою комою f32 і f64 доданий метод «copysign» для копіювання знака з одного числа до іншого;
  • До типів Range* додано метод «містить«, що дозволяє перевірити влучення зазначеного значення в діапазон;
  • Доданий метод 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 (інтерфейс ВАСИ для використання WebAssembly поза браузером);

  • Інструментарій Rust адаптований для дистрибутивів на основі стандартної Бібліотеки Musl.

Джерело: opennet.ru

Додати коментар або відгук