Выпуск мовы праграмавання Rust 1.35

Адбыўся рэліз мовы сістэмнага праграмавання Іржа 1.35, які развіваецца праектам Mozilla. Мова сфакусаваная на бяспечнай працы з памяццю, забяспечвае аўтаматычнае кіраванне памяццю і дае сродкі для дасягнення высокага паралелізму выканання заданняў, пры гэтым абыходзячыся без выкарыстання зборшчыка смецця і runtime.

Аўтаматычнае кіраванне памяццю ў Rust пазбаўляе распрацоўніка ад маніпулявання паказальнікамі і абараняе ад праблем, якія ўзнікаюць з-за нізкаўзроўневай працы з памяццю, такіх як зварот да вобласці памяці пасля яе вызвалення, разнайменаванне нулявых паказальнікаў, вынахад за межы буфера і да т.п. Для распаўсюджвання бібліятэк, забеспячэння зборкі і кіравання залежнасцямі праектам развіваецца пакетны менеджэр грузавы, які дазваляе атрымаць патрэбныя для праграмы бібліятэкі ў адзін клік. Для размяшчэння бібліятэк падтрымліваецца рэпазітар crates.io.

Асноўныя навіны:

  • Тыпажы (trait) FnOnce, FnMut и Fn рэалізаваны для якія размяшчаюцца ў кучы boxed-тыпаў Box‹dyn FnOnce›, Box‹dyn FnMut› і Box‹dyn Fn›;
  • Дададзена магчымасць прывядзення замыканняў да небяспечных паказальнікаў на функцыі (unsafe fn);
  • Рэалізавана магчымасць выкліку макраса "dbg!" без аргументаў для адлюстравання ў stderr імя файла і нумара радка без інспектавання зменнай, што зручна для адладкі спрацоўвання ўмоўных выразаў;
  • У тыпы для лікаў з якая плавае коскі f32 і f64 дададзены метад «copysign» для капіравання знака з аднаго ліку ў другі;
  • У тыпы Range* дададзены метад «змяшчае«, які дазваляе праверыць трапленне ўказанага значэння ў дыяпазон;
  • Дададзены метад Ref:Cell:map_split, якія дазваляюць адбіць і падзяліць запазычанае значэнне RefCell для розных кампанентаў запазычаных дадзеных;
  • Дададзены метад RefCell::replace_with для замены бягучага значэння RefCell і вяртання старога значэння ў якасці выніку;
  • Дададзены метад ptr::hash для хэшавання паказальніка або спасылкі па адрасе, а не адрасаванаму значэнню;
  • Дададзены метад Option::copied для капіявання змесціва опцый Option‹&T› ці Option‹&mut T›;
  • У разрад стабільных пераведзена новая порцыя API, у тым ліку стабілізаваны метады
    f32::copysign,
    f64::copysign,
    RefCell::replace_with,
    RefCell::map_split,
    ptr::hash,
    Range::contains,
    RangeFrom::contains,
    RangeTo::contains,
    RangeInclusive::contains,
    RangeToInclusive::contains і
    Option::copied;

  • У clippy (linter) дададзеная праверка drop_bounds, якая спрацоўвае пры даданні прывязкі "T: Drop" у функцыю;
  • У кампілятар дададзена падтрымка новай мэтавай платформы.
    wasm32-unknown-wasi (інтэрфейс ВАСІ для выкарыстання WebAssembly па-за браўзэрам);

  • Інструментарый Rust адаптаваны для дыстрыбутываў на аснове стандартнай Сі-бібліятэкі Musl.

Крыніца: opennet.ru

Дадаць каментар