Rust 1.65 Programming Language Tso tawm

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 generic txuam hom (GAT, Generic Associated Types), uas ua rau nws muaj peev xwm los tsim hom aliases txuam nrog rau lwm hom thiab tso cai rau koj mus koom hom constructors nrog zoo. trait Foo { hom Bar<'x>; }
  • Cov lus "cia ... lwm yam" tau raug muab coj los siv, tso cai rau koj los txheeb xyuas cov qauv sib txuam ncaj qha rau hauv qhov "cia" qhia thiab ua raws li kev cai lij choj yog tias tus qauv tsis sib xws. cia Ok( suav) = u64::from_str(count_str) else { panic!("Tsis tau parse integer: '{count_str}'"); };
  • Tso cai rau kev siv cov lus hais tawm kom tawm lub npe blocks ntxov, siv lub npe thaiv (label) txhawm rau txheeb xyuas qhov thaiv kom raug txiav. let result = 'block: { do_thing(); yog condition_not_met() { so 'block 1; } ua_next_thing(); yog condition_not_met() { so 'block 2; } do_last_thing(); 3};
  • Rau Linux, lub peev xwm los cais cov ntaub ntawv debugging (sib cais-debuginfo), yav dhau los tsuas yog muaj rau macOS platform, tau ntxiv. Thaum qhia txog qhov "-Csplit-debuginfo=unpacked" kev xaiv, cov ntaub ntawv debuginfo hauv DWARF hom ntawv yuav raug muab khaws cia rau hauv ob peb cov ntaub ntawv cais nrog ".dwo" txuas ntxiv. Qhia meej "-Csplit-debuginfo=packed" yuav tsim ib pob hauv ".dwp" hom uas suav nrog tag nrho cov ntaub ntawv debuginfo rau qhov project. Txhawm rau sib koom ua ke debuginfo ncaj qha rau hauv .debug_* ntu ntawm ELF cov khoom, koj tuaj yeem siv qhov "-Csplit-debuginfo=off" kev xaiv.
  • 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::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Qhov "const" tus cwj pwm, uas txiav txim siab qhov muaj peev xwm siv nws hauv txhua lub ntsiab lus tsis yog qhov tsis tu ncua, yog siv hauv cov haujlwm <*const T&>::offset_from thiab <*mut T>::offset_from
  • Raws li ib feem ntawm theem kawg ntawm kev hloov pauv qhov kev siv ntawm LSP (Language Server Protocol) raws tu qauv rau xeb-analyzer, qhov kev siv tsis tu ncua ntawm Rust Language Server (RLS) tau hloov nrog tus neeg rau zaub mov stub uas teeb meem ceeb toom nrog cov lus qhia hloov mus rau siv rust-analyzer.
  • Thaum muab tso ua ke, kev txhawb nqa rau inline xa tawm ntawm MIR intermediate code tau qhib, uas ua rau kev sib sau ua ke ntawm cov pob khoom raug cai los ntawm 3-10%.
  • Txhawm rau ua kom cov sijhawm teem sijhawm ua tiav, Tus Thawj Saib Xyuas Pob Khoom Muag muab kev txheeb xyuas cov haujlwm tos ua tiav hauv kab.

Tsis tas li ntawd, koj tuaj yeem sau tseg qhov kev xam phaj txog kev siv cov lus Rust ntawm Volvo los tsim cov khoom ntawm cov ntaub ntawv xov xwm tsheb. Tsis muaj kev npaj rov sau dua cov cai uas twb muaj lawm thiab kuaj hauv Rust, tab sis rau cov cai tshiab, Rust yog ib qho ntawm cov kev xaiv uas nyiam los txhim kho qhov zoo ntawm cov nqi qis. Cov pab pawg ua haujlwm ntsig txog kev siv cov lus Rust kuj tau tsim nyob rau hauv cov koom haum tsheb tsheb AUTOSAR (AUTomotive Open System ARchitecture) thiab SAE (Society of Automotive Engineers).

Tsis tas li ntawd, David Kleidermacher, Google tus lwm thawj tswj hwm ntawm engineering, tau hais txog kev txhais cov cai siv hauv Android platform los tswj cov yuam sij encryption rau Rust, nrog rau kev siv Rust hauv kev siv DNS dhau HTTPS raws tu qauv hauv pawg. rau UWB- chips (Ultra-Wideband) thiab hauv virtualization moj khaum (Android Virtualization Framework) cuam tshuam nrog Tensor G2 nti. Cov pawg tshiab rau Bluetooth thiab Wi-Fi, rov sau dua hauv Rust, kuj tau tsim rau Android. Lub tswv yim dav dav yog maj mam ntxiv dag zog rau kev ruaj ntseg, ua ntej los ntawm kev hloov pauv cov khoom siv yooj yim tshaj plaws thiab tseem ceeb tshaj plaws rau Rust, thiab tom qab ntawd nthuav dav mus rau lwm cov subsystems. Xyoo tas los, cov lus Rust tau suav nrog hauv cov npe ntawm cov lus tso cai rau tsim lub platform Android.

Tau qhov twg los: opennet.ru

Ntxiv ib saib