Rust 1.47 Programming Language Version

pibliye lage 1.47 nan langaj pwogramasyon sistèm lan Rouye, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и ègzékusion (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Jesyon otomatik memwa Rust a elimine erè lè w ap manipile endikasyon ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba, tankou aksè nan yon rejyon memwa apre li fin libere, dereferans pointeur nil, depase tanpon, elatriye. Yon manadjè pake ap devlope pou distribye bibliyotèk, asire asanble ak jere depandans pa pwojè a. Chaj. Для размещения библиотек поддерживается репозиторий kès.io.

Prensipal la inovasyon:

  • Реализована поддержка типажей для массивов произвольного размера. Ранее, из-за невозможности определить generic-функции для всех целых значений, стандартная библиотека предоставляла встроенную поддержку типажей только для массивов, размер которых не превышал 32 элемента (типажи для каждого размера были определены статически). Благодаря созданию функциональности константных дженериков («const generics») появилась возможность определения generic-функций для любых размеров массива, но они пока не включены в состав стабильных возможностей языка, хотя реализованы в компиляторе и теперь patisipe в стандартной библиотеке для типажей массивов любого размера.

    Например, следующая конструкция в Rust 1.47 приведёт к выводу содержимого массива, хотя раньше привела бы к ошибке:

    fn main() {
    kite xs = [0; 34];

    println!(«{:?}», xs);
    }

  • Bay pwodiksyon de tras ki pi kout (backtrace), pwodiksyon nan sitiyasyon ijans. Eleman ki pa enterese nan pifò sitiyasyon, men ki ankonbre pwodiksyon an ak distrè atansyon nan kòz prensipal pwoblèm nan, yo eskli nan tras la. Pou retounen yon tras konplè, ou ka itilize varyab anviwònman an "RUST_BACKTRACE=full". Pou egzanp, pou kòd la

    fn main() {
    panik!();
    }

    раньше выводилась трассировка в 23 этапа, а теперь она будет сведена к
    3 этапам, позволяющим сразу уловить суть:

    fil 'principal' panike nan 'panik eksplisit', src/main.rs:2:5
    pile backtrace:
    0: std::panik::begin_panic
    nan /rustc/d…d75a/library/std/src/panicking.rs:497
    1: lakou rekreyasyon::principal
    nan ./src/main.rs:2
    2: nwayo::ops::fonksyon::FnOnce::call_once
    nan /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Компилятор rustc обновлён до сборки с использованием LLVM NAN (Rust itilizasyon LLVM в качестве бэкенда для генерации кода). При этом сохранена возможность сборки со старыми LLVM, вплоть до версии 8, но по умолчанию (в rust-lang/llvm-project) теперь используется LLVM 11. Релиз LLVM 11 ожидается в ближайшие дни.
  • На платформе Windows в компиляторе rustc обеспечена поддержка включения проверок целостности потока выполнения (Control Flow Guard), активируемых при помощи флага «-C control-flow-guard». На других платформах данный флаг пока игнорируется.
  • Yon nouvo pòsyon API yo te transfere nan kategori ki estab, ki gen ladan estabilize
    Ident::new_raw,
    Range::is_empty,
    RangeInclusive::is_empty,
    Result::as_deref,
    Result::as_deref_mut,
    Vec::leak,
    pointer::offset_from,
    f32::TAU и
    f64::TAU.

  • Atribi "const", ki detèmine posiblite pou itilize li nan nenpòt kontèks olye pou yo konstan, yo itilize nan metòd yo:
    • nouvo pou tout nonm antye ki pa zewo;
    • checked_add, checked_sub, checked_mul,checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub и saturating_mul для всех целых;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ak is_ascii_control pou kalite char ak u8.
  • Pou FreeBSD patisipe инструментарий из FreeBSD 11.4 (FreeBSD 10 не поддерживает LLVM 11).

Sous: opennet.ru

Add nouvo kòmantè