Апублікаваны рэліз мовы праграмавання агульнага прызначэння Rust 1.69, заснаванага праектам Mozilla, але цяпер які развіваецца пад заступніцтвам незалежнай некамерцыйнай арганізацыі Rust Foundation. Мова сфакусаваная на бяспечнай працы з памяццю і дае сродкі для дасягнення высокага паралелізму выканання заданняў, пры гэтым абыходзячыся без выкарыстання зборшчыка смецця і runtime (runtime зводзіцца да базавай ініцыялізацыі і суправаджэння стандартнай бібліятэкі).
Метады працы з памяццю ў Rust пазбаўляюць распрацоўніка ад памылак пры маніпуляванні паказальнікамі і абараняюць ад праблем, якія ўзнікаюць з-за нізкаўзроўневай працы з памяццю, такіх як зварот да вобласці памяці пасля яе вызвалення, разнайменаванне нулявых паказальнікаў, вынахад за межы буфера і да т.п. Для распаўсюджвання бібліятэк, забеспячэнні зборкі і кіраванні залежнасцямі праектам развіваецца пакетны мэнэджар Cargo. Для размяшчэння бібліятэк падтрымліваецца рэпазітар crates.io.
Бяспечная праца з памяццю забяспечваецца ў Rust падчас кампіляцыі праз праверку спасылак, адсочванне валодання аб'ектамі, улік часу жыцця аб'ектаў (вобласці бачнасці) і адзнаку карэктнасці доступу да памяці падчас выканання кода. Rust таксама дае сродкі для абароны ад цэлалікіх перапаўненняў, патрабуе абавязковай ініцыялізацыі значэнняў зменных перад выкарыстаннем, лепш апрацоўвае памылкі ў стандартнай бібліятэцы, ужывае канцэпцыю нязменнасці (immutable) спасылак і зменных па змаўчанні, прапануе моцную статычную тыпізацыю для мінімізацыі лагічных памылак.
Асноўныя навіны:
- У пакетным мэнэджары Cargo рэалізавана вызначэнне папярэджанняў, якія могуць быць аўтаматычна ўхіленыя, і выснова адпаведных рэкамендацый па запуску "cargo fix" або "cargo clippy -fix". warning: import import: 'std::hash::Hash' —> src/main.rs:1:5 | 1 | use std::hash::Hash; | ^^^^^^^^^^^^^^^| = note: '#[warn(unused_imports)]' on by default warning: 'foo' (bin "foo") generated 1 warning (run 'cargo fix -bin "foo'' to apply 1 suggestion)
- У Cargo дададзена выснова рэкамендацыі па выкарыстанні каманды "cargo add" пры спробе ўстаноўкі бібліятэкі камандай "cargo install".
- Для скарачэння часу кампіляцыі па змаўчанні спынена ўключэнне адладкавай інфармацыі ў зборачных скрыптах. Пры паспяховым выкананні зборачных скрыптоў змена не прыводзіць да нейкіх бачных адрозненняў, але ў выпадку збояў дамп са зваротнай трасіроўкай будзе ўтрымоўваць менш інфармацыі. Для вяртання старых паводзін у Cargo.toml варта дадаць: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
- У разрад стабільных пераведзена новая порцыя API, у тым ліку стабілізаваны метады і рэалізацыі тыпажоў:
- CStr::from_bytes_until_nul
- core::ffi::FromBytesUntilNulError
- Прыкмета "const", якая вызначае магчымасць выкарыстання ў любым кантэксце замест канстант, ужыты ў функцыях:
- SocketAddr::new
- SocketAddr::ip
- SocketAddr::port
- SocketAddr::is_ipv4
- SocketAddr::is_ipv6
- SocketAddrV4::new
- SocketAddrV4::ip
- SocketAddrV4::port
- SocketAddrV6::new
- SocketAddrV6::ip
- SocketAddrV6::port
- SocketAddrV6::flowinfo
- SocketAddrV6::scope_id
- Дададзена магчымасць выкарыстання сцягоў true і false у аргументах кампілятара.
Крыніца: opennet.ru