Rust 1.69 Programming Language Tso tawm

Kev tso tawm ntawm Rust 1.69 cov lus qhia dav dav, tsim los ntawm Mozilla qhov project, tab sis tam sim no tsim los ntawm kev txhawb nqa ntawm lub koom haum ywj pheej tsis muaj txiaj ntsig Rust Foundation, tau tshaj tawm. Cov lus qhia txog kev nyab xeeb ntawm kev nco thiab muab txoj hauv kev kom ua tiav txoj haujlwm siab sib luag thaum tsis txhob siv cov khoom siv khib nyiab thiab lub sijhawm ua haujlwm (runtime raug txo qis rau kev pib pib thiab kev saib xyuas ntawm lub tsev qiv ntawv txheem).

Rust lub cim xeeb tuav txoj kev cawm tus tsim tawm los ntawm kev ua yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem uas tshwm sim los ntawm kev ua haujlwm qis qis, xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm, dereferencing null pointers, tsis overruns, thiab lwm yam. Txhawm rau faib cov tsev qiv ntawv, muab kev tsim kho thiab tswj hwm kev vam khom, qhov project tsim tus thawj tswj hwm pob khoom. Lub crates.io repository yog txaus siab rau hosting cov tsev qiv ntawv.

Kev nyab xeeb nco yog muab rau hauv Rust ntawm lub sijhawm sau los ntawm kev siv tshuaj xyuas, ua raws li cov tswv cuab ntawm cov khoom, khaws cov khoom siv lub neej (scopes), thiab ntsuas qhov tseeb ntawm kev nkag mus rau lub cim xeeb thaum lub sijhawm ua tiav cov lej. Rust kuj tseem muab kev tiv thaiv tus lej ntau dhau, yuav tsum muaj qhov sib txawv kom pib ua ntej siv, ua haujlwm yuam kev zoo dua hauv cov tsev qiv ntawv tus qauv, siv lub tswv yim ntawm cov ntaub ntawv tsis hloov pauv thiab hloov pauv los ntawm lub neej ntawd, thiab muaj kev ntaus ntawv zoo li qub kom txo qis qhov yuam kev.

Main innovations:

  • Tus neeg saib xyuas pob Cargo siv qhov kev tshawb pom ntawm cov lus ceeb toom uas tuaj yeem daws tau thiab cov lus pom zoo kom khiav "cargo fix" lossis "cargo clippy --fix". ceeb toom: tsis siv ntshuam: 'std::hash::Hash' --> src/main.rs:1:5 | 1 | siv std::hash::hash; | ^^^^^^^^^^^^^^^| = note: '#[warn(unused_imports)]' on los ntawm default ceeb toom: 'foo' (bin "foo") generated 1 ceeb toom (khiav 'cargo fix --bin "foo"' mus thov 1 cov lus qhia)
  • Ntxiv Cargo los tso saib cov lus pom zoo kom siv "cargo add" hais kom ua thaum sim txhim kho lub tsev qiv ntawv nrog "cargo install" hais kom ua.
  • Txhawm rau txo lub sijhawm sib sau ua ke, suav nrog cov ntaub ntawv debugging hauv cov ntawv tsim tau raug txiav tawm los ntawm lub neej ntawd. Yog tias tsim cov ntawv sau ua tiav, qhov kev hloov pauv yuav tsis ua rau pom qhov sib txawv, tab sis yog tias nws ua tsis tiav, qhov rov qab pob tseg yuav muaj cov ntaub ntawv tsawg dua. Txhawm rau rov qab tus cwj pwm qub rau Cargo.toml ntxiv: [profile.dev.build-override] debug = tseeb [profile.release.build-override] debug = tseeb
  • Ib feem tshiab ntawm API tau raug hloov mus rau qeb ntawm qhov ruaj khov, suav nrog cov txheej txheem thiab kev siv ntawm cov yam ntxwv tau ruaj khov:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • Tus cwj pwm "const", uas txiav txim siab qhov muaj peev xwm ntawm kev siv nws nyob rau hauv ib qho ntsiab lus es tsis txhob tas mus li, yog siv rau hauv kev ua haujlwm:
    • SocketAddr::new
    • SocketAddr:: ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4:: tshiab
    • SocketAddrV4::ip
    • SocketAddrV4:: chaw nres nkoj
    • SocketAddrV6:: tshiab
    • SocketAddrV6::ip
    • SocketAddrV6:: chaw nres nkoj
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Ntxiv lub peev xwm los siv cov chij tseeb thiab tsis tseeb hauv cov lus sib cav.

Tau qhov twg los: opennet.ru

Ntxiv ib saib