Kev tso tawm ntawm Rust 1.65 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:
- Ntxiv kev txhawb nqa rau cov hom sib txuas dav dav (GAT), uas tso cai rau koj los tsim cov npe txawv txawv uas cuam tshuam nrog lwm hom thiab khi cov neeg tsim khoom rau cov cwj pwm. cwj pwm Foo { hom Bar<'x>; }
- Cov lus qhia "cia ... lwm yam" tau raug siv lawm, uas cia koj xyuas seb puas muaj qhov xwm txheej sib phim ntawm tus qauv ncaj qha hauv cov lus qhia "cia" thiab ua cov lej tsis raug cai yog tias tus qauv tsis sib phim. cia Ok(count) = u64::from_str(count_str) lwm yam { panic!("Tsis tuaj yeem txheeb xyuas tus lej integer: '{count_str}'"); };
- Nws raug tso cai siv cov lus hais txog kev tawg kom tawm ntawm cov blocks uas muaj npe ua ntej, siv lub npe block (label) los txiav txim siab seb yuav tawm ntawm lub block twg. cia qhov tshwm sim = 'block: { do_thing(); yog tias condition_not_met() { tawg 'block 1; } do_next_thing(); yog tias condition_not_met() { tawg 'block 2; } do_last_thing(); 3 };
- rau Linux Ntxiv lub peev xwm los txuag cov ntaub ntawv debug cais (split-debuginfo), yav dhau los tsuas yog muaj rau lub platform macOSThaum teev qhov kev xaiv "-Csplit-debuginfo=unpacked", cov ntaub ntawv debuginfo hauv hom ntawv DWARF yuav raug khaws cia rau hauv ntau cov ntaub ntawv khoom sib cais nrog qhov txuas ntxiv ".dwo". Thaum teev qhov kev xaiv "-Csplit-debuginfo=packed," ib pob khoom hauv hom ntawv ".dwp" yuav raug tsim, suav nrog txhua cov ntaub ntawv debuginfo rau qhov project. Txhawm rau koom ua ke debuginfo ncaj qha rau hauv ntu .debug_* ntawm ELF cov khoom, koj tuaj yeem siv qhov kev xaiv "-Csplit-debuginfo=off".
- 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:
- std::backtrace::Backtrace
- Bound::as_ref
- std::io::nyeem_rau_string
- <*const T>::cast_mut
- <*mut T>::cast_const
- Tus chij "const", uas txiav txim siab qhov ua tau ntawm kev siv hauv txhua qhov xwm txheej es tsis txhob siv cov constants, yog siv hauv cov haujlwm <*const T&>::offset_from thiab <*mut T>::offset_from
- Ua ib feem ntawm theem kawg ntawm kev tsiv LSP (Language Server Protocol) kev siv mus rau rust-analyzer, qhov kev siv Rust Language Server (RLS) uas tsis siv lawm tau hloov nrog lub stub server uas tshaj tawm cov lus ceeb toom qhia kom hloov mus rau rust-analyzer.
- Thaum lub sijhawm sau ua ke, kev txhawb nqa rau kev xa tawm hauv kab ntawm cov lej nruab nrab MIR tau qhib, uas ua rau muaj kev nrawm 3-10% ntawm kev sau ua ke ntawm cov pob khoom crate ib txwm muaj.
- Yuav kom ua kom cov kev tsim kho raws sijhawm sai dua, tus thawj tswj hwm pawg khoom thauj tam sim no xaiv cov haujlwm uas tos kom ua tiav hauv kab.
Lwm qhov kev xam phaj nthuav yog hais txog Volvo siv cov lus Rust rau kev tsim cov khoom ntawm cov txheej txheem xov xwm hauv tsheb. Txawm hais tias tsis muaj kev npaj los rov sau cov lej uas twb muaj lawm thiab sim hauv Rust, Rust yog qhov kev xaiv zoo dua rau cov lej tshiab los txhim kho qhov zoo ntawm tus nqi qis dua. Cov pab pawg ua haujlwm ntsig txog kev siv Rust kuj tau tsim tsa hauv cov koom haum tsheb AUTOSAR (Automotive Open System ARchitecture) thiab SAE (Society of Automotive Engineers).
Tsis tas li ntawd xwb, David Kledermacher, tus lwm thawj coj ntawm Google, tau hais txog kev txhais cov lej siv hauv lub platform rau hauv hom lus Rust. Android rau kev tswj hwm cov yuam sij encryption, nrog rau kev siv Rust hauv kev siv DNS dhau HTTPS protocol, hauv pawg rau UWB chips (Ultra-Wideband) thiab hauv virtualization framework (Android Virtualization Framework) cuam tshuam nrog Tensor G2 chip. Rau Android Cov Bluetooth thiab Wi-Fi stacks tshiab, rov sau dua hauv Rust, kuj tseem tab tom tsim. Lub tswv yim tag nrho yog maj mam txhim kho kev ruaj ntseg, ua ntej los ntawm kev tsiv cov khoom siv software uas tsis muaj zog thiab tseem ceeb tshaj plaws mus rau Rust, thiab tom qab ntawd nthuav dav mus rau lwm cov subsystems cuam tshuam. Xyoo tas los, Rust tau suav nrog cov lus uas tau txais rau kev tsim platform. Android.
Tau qhov twg los: opennet.ru
