Lansarea limbajului de programare Rust 1.67

A fost publicată lansarea limbajului de programare de uz general Rust 1.67, fondat de proiectul Mozilla, dar dezvoltat acum sub auspiciile organizației independente non-profit Rust Foundation. Limbajul se concentrează pe siguranța memoriei și oferă mijloacele pentru a obține un paralelism ridicat al jobului, evitând în același timp utilizarea unui colector de gunoi și a unui timp de rulare (timpul de rulare este redus la inițializarea de bază și întreținerea bibliotecii standard).

Metodele de manipulare a memoriei Rust salvează dezvoltatorul de erori la manipularea pointerilor și protejează împotriva problemelor care apar din cauza manipulării memoriei de nivel scăzut, cum ar fi accesarea unei zone de memorie după ce aceasta a fost eliberată, dereferențiarea pointerilor nuli, depășirile de buffer etc. Pentru a distribui biblioteci, a furniza versiuni și a gestiona dependențe, proiectul dezvoltă managerul de pachete Cargo. Depozitul crates.io este acceptat pentru găzduirea bibliotecilor.

Siguranța memoriei este furnizată în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectului, urmărirea duratelor de viață a obiectelor (sfere de aplicare) și evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, protecție împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică implicit conceptul de referințe imuabile și variabile, oferă tastare statică puternică pentru a minimiza erorile logice.

Principalele inovații:

  • Для функций async с Future::Output реализована возможность указания аннотаций «#[must_use]», включающих вывод предупреждения в случае игнорирования возвращаемого значения, что помогает выявить ошибки, вызванные предположением, что функция изменит значения, а не вернёт новое значение. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } warning: unused output of future returned by `bar` that must be used —> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^ | = note: `#[warn(unused_must_use)]` on by default
  • Обновлена реализация FIFO-очередей std::sync::mpsc (multi-producer single-consumer), которая переведена на использование модуля crossbeam-channel с сохранением прежнего API. Новая реализация отличается решением ряда проблем, более высокой производительностью и упрощением сопровождения кода.
  • O nouă porțiune a API-ului a fost mutată în categoria de stabil, inclusiv metodele și implementările de trăsături au fost stabilizate:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atributul „const”, care determină posibilitatea utilizării lui în orice context în loc de constante, este utilizat în funcțiile:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Реализован третий уровень поддержки для использования Rust в ядре Linux (linuxkernel), а также для платформ Sony PlayStation 1 (mipsel-sony-psx), PowerPC с AIX (powerpc64-ibm-aix), QNX Neutrino RTOS (aarch64-unknown-nto-qnx710, x86_64-pc-nto-qnx710). Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

Дополнительно можно отметить публикацию компанией ARM патчей, позволяющих использовать язык Rust для разработки драйверов и модулей ядра Linux, собираемых для систем на базе архитектуры AArch64.

Sursa: opennet.ru

Adauga un comentariu