Lëshimi i gjuhës së programimit Rust 1.43

Publikuar lëshimi i gjuhës së programimit sistemor Rust 1.43, e bazuar në projektin Mozilla. Gjuha fokusohet në sigurinë e menaxhimit të memories, siguron menaxhim automatik të memories dhe ofron mjete për arritjen e një paralelizmi të lartë në ekzekutimin e detyrave, duke u shmangur kështu përdorimit të mbledhësve të plehrave dhe runtime.

Menaxhimi automatik i memories në Rust përmban zhvilluesit nga manipulimi i treguesve dhe mbron ata nga problemet që lindin për shkak të punës me nivel të ulët me memorien, siç janë qasjet në hapësirën e memories pas lirimit të saj, dereferencimi i treguesve nul, dalja jashtë kufijve të tamponit etj. Për shpërndarjen e biblioteka, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti po zhvillohet menaxher për paketat Cargo, që lejon shfrytëzimin e bibliotekave të nevojshme për programin me një klik. Për vendosjen e bibliotekave, mbështetet repository crates.io.

Ndryshimet kryesore risitë:

  • В макросах обеспечена возможность использования фрагментов элементов для их превращения в код типажей (trait), реализаций (impl) или внешних блоков. Например:

    macro_rules! mac_trait {
    ($i:item) => {
    trait T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Приведёт к генерации:

    trait T {
    fn foo() {}
    }

  • Улучшено определение типа примитивов, ссылок и двоичных операций.
    Например, нижеследующий код, ранее вызывавший ошибку, теперь сможет быть скомпилирован (Rust теперь корректно определяет, что 0.0 и &0.0 должны быть типа f32):

    let n: f32 = 0.0 + &0.0;

  • В Cargo добавлена новая переменная окружения CARGO_BIN_EXE_{имя}, выставляемая при построении интеграционных тестов и позволяющая определить полный путь до исполняемого файла, определённого в секции «[[bin]]» пакета.
  • В выражениях «if» разрешено использование атрибутов, таких как «#[cfg()]».
  • В библиотеке предоставлена возможность использования ассоциированных констант напрямую для целых и дробных типов, без импорта модуля. Например, можно сразу писать u32::MAX или f32::NAN без предварительного указания «use std::u32» и «use std::f32».
  • Moduli i ri është shtuar primitive, который реэкспортирует примитивные типы Rust, например, когда необходимо написать макрос и убедиться, что типы не скрыты.
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы

    Once::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 и
    iter::once_with.

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster