Rust 1.69 Programming Language Release

Ang pagpapalabas ng Rust 1.69 general-purpose programming language, na itinatag ng proyekto ng Mozilla, ngunit ngayon ay binuo sa ilalim ng auspice ng independiyenteng non-profit na organisasyon na Rust Foundation, ay nai-publish. Nakatuon ang wika sa kaligtasan ng memorya at nagbibigay ng paraan upang makamit ang mataas na parallelism sa trabaho habang iniiwasan ang paggamit ng isang basurero at runtime (runtime ay binabawasan sa pangunahing pagsisimula at pagpapanatili ng karaniwang library).

Ang mga paraan ng pangangasiwa ng memorya ng Rust ay nagliligtas sa developer mula sa mga error kapag nagmamanipula ng mga pointer at nagpoprotekta laban sa mga problemang lumitaw dahil sa mababang antas ng paghawak ng memorya, tulad ng pag-access sa isang lugar ng memorya pagkatapos na ito ay mapalaya, pag-derefer ng mga null pointer, pag-overrun ng buffer, atbp. Upang ipamahagi ang mga aklatan, magbigay ng mga build at pamahalaan ang mga dependency, bubuo ang proyekto ng Cargo package manager. Ang crates.io repository ay suportado para sa pagho-host ng mga aklatan.

Ang kaligtasan ng memorya ay ibinibigay sa Rust sa oras ng pag-compile sa pamamagitan ng pagsuri sa sanggunian, pagsubaybay sa pagmamay-ari ng bagay, pagsubaybay sa mga buhay ng bagay (mga saklaw), at pagtatasa ng kawastuhan ng pag-access sa memorya sa panahon ng pagpapatupad ng code. Nagbibigay din ang kalawang ng proteksyon laban sa mga overflow ng integer, nangangailangan ng mandatoryong pagsisimula ng mga variable na halaga bago gamitin, mas mahusay na pinangangasiwaan ang mga error sa karaniwang library, inilalapat ang konsepto ng hindi nababagong mga sanggunian at mga variable bilang default, nag-aalok ng malakas na static na pag-type upang mabawasan ang mga lohikal na error.

Mga pangunahing inobasyon:

  • Ang Cargo package manager ay nagpapatupad ng pagtuklas ng mga babala na maaaring awtomatikong maresolba at ang mga naaangkop na rekomendasyon para patakbuhin ang "cargo fix" o "cargo clippy --fix". babala: hindi nagamit na pag-import: 'std::hash::Hash' β€”> src/main.rs:1:5 | 1 | gumamit ng std::hash::hash; | ^^^^^^^^^^^^^^^^^ | = tandaan: Naka-on ang '#[warn(unused_imports)]' bilang default na babala: 'foo' (bin "foo") ay nakabuo ng 1 babala (patakbuhin ang 'cargo fix --bin "foo"' para maglapat ng 1 mungkahi)
  • Nagdagdag ng Cargo para magpakita ng rekomendasyon na gamitin ang command na "cargo add" kapag sinusubukang mag-install ng library gamit ang command na "cargo install".
  • Upang bawasan ang oras ng compilation, ang impormasyon sa pag-debug sa mga build script ay hindi pinagana bilang default. Kung matagumpay na tumakbo ang mga build script, ang pagbabago ay hindi magkakaroon ng anumang nakikitang pagkakaiba, ngunit kung ito ay nabigo, ang backtrace dump ay maglalaman ng mas kaunting impormasyon. Upang ibalik ang dating gawi sa Cargo.toml idagdag ang: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Ang isang bagong bahagi ng API ay inilipat sa kategorya ng stable, kabilang ang mga pamamaraan at pagpapatupad ng mga katangian ay na-stabilize:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • Ang katangiang "const", na tumutukoy sa posibilidad na gamitin ito sa anumang konteksto sa halip na mga constant, ay ginagamit sa mga function:
    • SocketAddr::bago
    • SocketAddr::ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::bago
    • SocketAddrV4::ip
    • SocketAddrV4::port
    • SocketAddrV6::bago
    • SocketAddrV6::ip
    • SocketAddrV6::port
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Nagdagdag ng kakayahang gumamit ng totoo at maling mga flag sa mga argumento ng compiler.

Pinagmulan: opennet.ru

Magdagdag ng komento