රස්ට් 1.47 ක්‍රමලේඛන භාෂා නිකුතුව

පළ කළා පද්ධති ක්‍රමලේඛන භාෂාවේ 1.47 නිකුත් කරන්න මලකඩ, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и ධාවන කාලය (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

රස්ට්ගේ ස්වයංක්‍රීය මතක කළමනාකරණය පොයින්ටර් හසුරුවන විට දෝෂ ඉවත් කරන අතර අඩු මට්ටමේ මතක හැසිරවීමකින් පැන නගින ගැටළු වලින් ආරක්ෂා කරයි, එනම් මතක කලාපයකට නිදහස් වූ පසු ප්‍රවේශ වීම, null pointer dereferences, buffer overruns යනාදිය. ව්‍යාපෘතිය මගින් පුස්තකාල බෙදා හැරීම, එකලස් කිරීම සහතික කිරීම සහ පරායත්තතා කළමනාකරණය කිරීම සඳහා පැකේජ කළමනාකරුවෙකු සංවර්ධනය වෙමින් පවතී. ගුවන් භාණ්ඩ. Для размещения библиотек поддерживается репозиторий crates.io.

ප්රධාන නවෝත්පාදන:

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

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

    fn ප්‍රධාන() {
    ඉඩ xs = [0; 34];

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

  • කෙටි හෝඩුවාවන් (පසුපෙළ), හදිසි අවස්ථා වලදී ප්රතිදානය සපයන ලදී. බොහෝ අවස්ථාවන්හිදී උනන්දුවක් නොදක්වන, නමුත් ප්‍රතිදානය අවුල් කරන සහ ගැටලුවේ මූලික හේතු වලින් අවධානය වෙනතකට යොමු කරන මූලද්‍රව්‍ය හෝඩුවාවෙන් බැහැර කරනු ලැබේ. සම්පූර්ණ හෝඩුවාවක් ආපසු ලබා දීමට, ඔබට "RUST_BACKTRACE=full" පරිසර විචල්‍යය භාවිතා කළ හැක. උදාහරණයක් ලෙස, කේතය සඳහා

    fn ප්‍රධාන() {
    සංත්‍රාසය!();
    }

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

    ත්‍රෙඩ් 'ප්‍රධාන' 'පැහැදිලි සන්ත්‍රාසය' ගැන කලබල විය, src/main.rs:2:5
    ස්ටැක් පසුපෙළ:
    0: std::panicking::begin_panic
    හිදී /rustc/d…d75a/library/std/src/panicking.rs:497
    1: ක්‍රීඩා පිටිය:: ප්‍රධාන
    ./src/main.rs:2 හි
    2: core::ops::function::FnOnce::call_one
    /rustc/d…d75a/library/core/src/ops/function.rs:227 හි

  • Компилятор rustc обновлён до сборки с использованием LLVM 11 (Rust භාවිතා කරයි LLVM в качестве бэкенда для генерации кода). При этом сохранена возможность сборки со старыми LLVM, вплоть до версии 8, но по умолчанию (в rust-lang/llvm-project) теперь используется LLVM 11. Релиз LLVM 11 ожидается в ближайшие дни.
  • На платформе Windows в компиляторе rustc обеспечена поддержка включения проверок целостности потока выполнения (Control Flow Guard), активируемых при помощи флага «-C control-flow-guard». На других платформах данный флаг пока игнорируется.
  • API හි නව කොටසක් ස්ථායීකෘත ඇතුළුව ස්ථාවර කාණ්ඩයට මාරු කර ඇත
    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.

  • නියතයන් වෙනුවට ඕනෑම සන්දර්භයක එය භාවිතා කිරීමේ හැකියාව තීරණය කරන “const” ගුණාංගය ක්‍රමවල භාවිතා වේ:
    • ශුන්‍ය හැර අනෙකුත් සියලුම නිඛිල සඳහා අලුත්;
    • 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 සහ වර්ග_8 සඳහා
  • Для FreeBSD සම්බන්ධයි инструментарий из FreeBSD 11.4 (FreeBSD 10 не поддерживает LLVM 11).

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න