Апублікаваны рэліз мовы сістэмнага праграмавання Іржа 1.44, заснаванага праектам Mozilla. Мова сфакусаваная на бяспечнай працы з памяццю, забяспечвае аўтаматычнае кіраванне памяццю і дае сродкі для дасягнення высокага паралелізму выканання заданняў, пры гэтым абыходзячыся без выкарыстання зборшчыка смецця і час выканання.
Аўтаматычнае кіраванне памяццю ў Rust пазбаўляе распрацоўніка ад памылак пры маніпуляванні паказальнікамі і абараняе ад праблем, якія ўзнікаюць з-за нізкаўзроўневай працы з памяццю, такіх як зварот да вобласці памяці пасля яе вызвалення, разнайменаванне нулявых паказальнікаў, вынахад за межы буфера і да т.п. Для распаўсюджвання бібліятэк, забеспячэння зборкі і кіравання залежнасцямі праектам развіваецца пакетны менеджэр грузавы, які дазваляе атрымаць патрэбныя для праграмы бібліятэкі ў адзін клік. Для размяшчэння бібліятэк падтрымліваецца рэпазітар crates.io.
У тэксце анонсу новага выпуску распрацоўнікі Rust увязаліся ў палітыку і дэманстратыўна адмовіліся публікаваць паўнавартасны агляд змен у Rust 1.44 у знак салідарнасці з пратэстоўцамі супраць паліцыянта гвалту, паказаўшы, што гэтае пытанне важней абмену тэхнічнымі ведамі. Асноўныя навіны:
У пакетны мэнэджар Cargo інтэграваная каманда «cargo tree», якая выводзіць дрэвападобны граф залежнасцяў. Таксама дададзена опцыя "-duplicates" ("cargo tree -d"), якая дазваляе ацаніць залежнасці ў розных версіях аднаго пакета.
Для прыкладанняў, не прывязаных да std («#![no_std]»), рэалізавана падтрымка метадаў асінхроннага праграмавання, заснаваных на функцыі «async», блоку async move {…} і аператару «.await», якія спрашчаюць напісанне апрацоўшчыкаў, якія не блакуюць асноўны паток каманд.
У парсер дададзеная падтрымка якая пашыраецца схемы вызначэння іерархіі модуляў. Напрыклад, наступная канструкцыя не прывядзе да высновы памылкі, нягледзячы на фактычную адсутнасць модуля "foo/bar/baz.rs" (семантычна канструкцыя па-ранейшаму недапушчальная і можа выклікаць памылку, але змены можна ўбачыць і разабраць на ўзроўні макрасаў і ўмоўнай кампіляцыі):
#[cfg(FALSE)] mod foo {
mod bar {
mod baz;
}
}
У кампілятары rustc дададзена магчымасць выкарыстання сцяга "-C codegen-units" у інкрыментальным рэжыме. Перапрацаваная рэалізацыя catch_unwind, якая зараз не ўплывае на прадукцыйнасць, калі адключаны працэс «размоткі» (unwinding) і не ўзнікае выключэнняў.
Забяспечаны трэці ўзровень падтрымай для платформаў aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos і x86_64-apple-tvos. Трэці ўзровень мае на ўвазе базавую падтрымку, але без аўтаматызаванага тэсціравання і публікацыі афіцыйных зборак.
У разрад стабільных пераведзена новая порцыя API, у тым ліку стабілізаваны
PathBuf::with_capacity,
PathBuf::capacity,
PathBuf::clear,
PathBuf::reserve,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_unchecked,
Layout::align_to,
Layout::pad_to_align,
Layout::array і
Layout::extend.
Пашыраны функцыі стандартнай бібліятэкі:
Дададзены адмысловы варыянт "vec![]", які напроста адлюстроўваецца ў Vec::new(), што дазваляе выкарыстоўваць "vec![]" у кантэксце замест канстант.
У convert::Infallible дададзена рэалізацыя (impl) тыпажу гашыш.
У OsString рэалізаваны разумныя паказальнікі DerefMut и IndexMut, якія вяртаюць "&mut OsStr".
У proc_macro::LexError рэалізаваны fmt::Display і Error.
Прыкмета "const", які вызначае магчымасць выкарыстання ў любым кантэксце замест канстант, ужыты ў метадах from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes і to_ne_bytes для ўсіх цэлалікавых тыпаў.
Дададзена падтрымка генерацыі статычных бібліятэк у фармаце ".a" замест ".lib" для GNU-платформаў для Windows.
Мінімальныя патрабаванні да LLVM падняты да версіі LLVM 8.