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

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

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

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

  • Розширені можливості функцій, визначених з використанням виразу const fn, які можуть викликатися не тільки як звичайні функції, але і використовуватися в будь-якому контексті замість констант. Дані функції обчислюються на етапі компіляції, а не в ході виконання, тому на них накладаються певні обмеження, такі як можливість читання лише з констант.

    У новому випуску прибрано заборону застосування в подібних функціях булевих операторів («&&» і «||»), дозволено використання конструкцій «if», «if let», «match»,
    "while", "while let" і "loop", а також надана можливість перетворення на зрізи (slice, динамічні масиви) за допомогою виразу "&[T]". Застосування даних можливостей у функціях const fn дозволяє винести деякі ресурсомісткі операції на стадію компіляції. Наприклад, реалізація const-sha1 дає можливість обчислювати хеші SHA-1 під час компіляції, що призводить до прискорення роботи WinRT прив'язок для Rust майже в 40 разів.

  • Для підвищення інформативності повідомлень про помилки стабілізовано підтримку атрибуту «#[track_caller]», корисного для функцій, подібних до unwrap, у яких не виключається виникнення збоїв (panic) при некоректному використанні типів. Зазначений атрибут буде використаний обробником panic для виведення розташування, що викликає у повідомленні про помилку.
  • Ознака «const», що визначає можливість використання в будь-якому контексті замість констант, застосована у методі std::mem::forget.
  • У розряд стабільних переведена нова порція API, у тому числі стабілізовані Option::zip та vec::Drain::as_slice.
  • У пакетний менеджер Сargo додано підтримка нових змінних оточення, встановлюваних при компіляції пакета: CARGO_BIN_NAME (ім'я результуючого виконуваного файлу), CARGO_CRATE_NAME (ім'я пакета), CARGO_PKG_LICENSE (ліцензія, вказана в маніфесті), CARGO_PKG_LICEN.

Джерело: opennet.ru

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