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

Апублікаваны рэліз мовы праграмавання агульнага прызначэння 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

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