Адбыўся рэліз мовы сістэмнага праграмавання Іржа 1.34, які развіваецца праектам Mozilla. Мова сфакусаваная на бяспечнай працы з памяццю, забяспечвае аўтаматычнае кіраванне памяццю і дае сродкі для дасягнення высокага паралелізму выканання заданняў, пры гэтым абыходзячыся без выкарыстання зборшчыка смецця і runtime.
Аўтаматычнае кіраванне памяццю ў Rust пазбаўляе распрацоўніка ад маніпулявання паказальнікамі і абараняе ад праблем, якія ўзнікаюць з-за нізкаўзроўневай працы з памяццю, такіх як зварот да вобласці памяці пасля яе вызвалення, разнайменаванне нулявых паказальнікаў, вынахад за межы буфера і да т.п. Для распаўсюджвання бібліятэк, забеспячэння зборкі і кіравання залежнасцямі праектам развіваецца пакетны менеджэр грузавы, які дазваляе атрымаць патрэбныя для праграмы бібліятэкі ў адзін клік. Для размяшчэння бібліятэк падтрымліваецца рэпазітар crates.io.
У пакетны мэнэджар Cargo дададзеныя сродкі для працы з альтэрнатыўнымі рэестрамі пакетаў, якія могуць суіснаваць з публічным рэестрам crates.io. Напрыклад, распрацоўнікі зачыненых прыкладанняў зараз могуць выкарыстоўваць уласны прыватны рэестр, які можна выкарыстоўваць пры пераліку залежнасцяў у Cargo.toml, і ўжываць для сваіх прадуктаў мадэль версіявання, падобную з crates.io, а таксама спасылацца ў залежнасцях як на crates.io, так і на ўласны рэестр.
Для дадання вонкавых рэестраў у .cargo/config (размешчаным у $HOME альбо ў дырэкторыі з пакетам) прадугледжана секцыя "[registries]", а для выкарыстання знешняга рэестра ў апісанні кожнай залежнасці ў Cargo.toml з'явілася опцыя "registry". Для падлучэння да дадатковага рэестру дастаткова змясціць токен аўтэнтыфікацыі ў файл ~/.cargo/credentials і выканаць каманду
"cargo login -registry=my-registry", а для публікацыі пакета -
"cargo publish -registry=my-registry";
Дададзена паўнавартасная падтрымка выкарыстання аператара "?" у тэстах doctests, якія дазваляюць выкарыстоўваць код прыкладаў з дакументацыі ў якасці тэстаў. Раней аператар
"?" можна было выкарыстоўваць для апрацоўкі памылак падчас выкананні тэстаў толькі пры наяўнасці функцыі «fn main()» або ў функцыях «#[test]»;
У вызначаных пры дапамозе працэдурных макрасаў уласных атрыбутах (custom attribute) забяспечана магчымасць выкарыстання адвольных набораў токенаў («#[attr($tokens)]», «#[attr[$tokens]] і #[attr{$tokens}]»). Раней элементы маглі задавацца толькі ў дрэвападобным/рэкурсіўным выглядзе з выкарыстаннем радковых літаралаў, напрыклад "#[foo(bar, baz(quux, foo = "bar"))]]", а зараз магчыма выкарыстанне пералічэнняў ('#[range(0.). .10)]') і канструкцый віду «#[bound(T: MyTrait)]»;
Стабілізаваны тыпажы (trait) TryFrom и TryInto, якія дазваляюць выконваць пераўтварэнні тыпаў з апрацоўкай памылак. Напрыклад, метады, падобныя from_be_bytes, з цэлалікавымі тыпамі ў якасці ўваходных дадзеных выкарыстоўваюць масівы, але дадзеныя часта паступаюць c тыпам Slice, а пераўтварэнне паміж масівамі і слайсамі праблематычна рабіць уручную. Пры дапамозе новых тыпажоў паказаная аперацыя можа быць здзейснена на лёце праз выклік .try_into(), напрыклад, "let num = u32::from_be_bytes(slice.try_into()?)". Для пераўтварэнняў, якія заўсёды завяршаюцца паспяхова (напрыклад, з тыпу u8 у u32) дададзены тып памылак бясхібным, які дазваляе празрыста выкарыстоўваць
TryFrom для ўсіх існуючых рэалізацый "From";
Аб'яўлена састарэлай функцыя CommandExt::before_exec, якая дазваляла выканаць апрацоўшчык перад запускам exec, які выконваўся ў кантэксце даччынага працэсу, адгалінаванага пасля выкліку fork(). У падобных умовах некаторыя рэсурсы бацькоўскага працэсу, такія як файлавыя дэскрыптары і адлюстраваныя вобласці памяці, маглі быць дубляваныя, што магло прывесці да нявызначаных паводзін і няправільнай працы бібліятэк.
Замест before_exec рэкамендуецца выкарыстоўваць unsafe-функцыю CommandExt::pre_exec.
Стабілізаваны знакавыя і беззнакавыя атамарныя цэлалікавыя тыпы памерам ад 8 да 64 біт (напрыклад, AtomicU8), а таксама знакавыя тыпы NonZeroI[8|16|32|64|128].
У разрад стабільных перакладзена новая порцыя API, у тым ліку стабілізаваныя метады: ::checked_[add|sub]. Стабілізаваны функцыі iter::from_fn і iter::successors;
Для ўсіх цэлалікіх тыпаў рэалізаваны метады checked_pow, saturating_pow, wrapping_pow і overflowing_pow;
Дададзена магчымасць уключэння аптымізацый на этапе звязвання праз указанне зборачнай опцыі "-C linker-plugin-lto".